Jedis、Redission、Lettuce操作Redis、一般的なRedis操作方法
ジェダイ
- 定義:Jedisは、Redisが推奨する公式のJava接続開発ツールです。
基本的な使い方
Mavenの依存関係
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
指示
Jedis jedis = new Jedis("localhost",6379);
jedis.set("one", "one");
return jedis.get("one");
JedisPoolの初期化
@Bean
public JedisPool getJedisPool(){
RedisProperties redisProperties=new RedisProperties();
GenericObjectPoolConfig jedisPoolConfig=new JedisPoolConfig();
// 资源池中的最大连接数
jedisPoolConfig.setMaxTotal(10);
// 资源池允许的最大空闲连接数
jedisPoolConfig.setMaxIdle(10);
// 资源池确保的最少空闲连接数
jedisPoolConfig.setMinIdle(0);
// 当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)。
jedisPoolConfig.setMaxWaitMillis(1000);
JedisPool jedisPool=new JedisPool(jedisPoolConfig,redisProperties.getHost(),redisProperties.getPort());
try{
Jedis resource = jedisPool.getResource();
logger.info("==========JedisPool配置成功!");
return jedisPool;
}catch (Exception e){
logger.info("==========JedisPool配置失败!");
return null;
}
}
Redission
- 定義:NIOに基づくNettyフレームワークでは、Redissonは、Redisキー値データベースによって提供される一連の利点を最大限に活用します。Javaユーティリティツールキットの共通インターフェイスに基づいて、一般的に使用される一連の分散機能をユーザーに提供します。ツール。これにより、シングルマシンマルチスレッドコンカレントプログラムを調整するための元のツールキットで、分散マルチマシンマルチスレッドコンカレントシステムを調整する機能を取得できるようになり、大規模な分散システムの設計と開発の難しさが大幅に軽減されます。同時に、さまざまな特徴的な分散サービスの組み合わせにより、分散環境でのプログラム間のコラボレーションがさらに簡素化されます。
基本的な使い方
Mavenの依存関係
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.5.0</version>
</dependency>
Redisson構成
@Configuration
public class RedissionConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
private static Logger logger = Logger.getLogger(String.valueOf(RedissionConfig.class));
/**
* 单机模式配置
*/
@Bean
public RedissonClient redissonClient() {
try {
RedisProperties redisProperties = new RedisProperties();
Config config =new Config();
config.useSingleServer().setAddress("redis://"+host+":"+port);
RedissonClient redissonClient = Redisson.create(config);
logger.info("==========Redisson配置完成!");
return redissonClient;
} catch (Exception e) {
logger.info("==========Redisson配置失败!" + e.getMessage());
return null;
}
}
}
指示
RedissonClientインターフェイスでRedisを操作する方法はたくさんあります
public interface RedissonClient {
RBinaryStream getBinaryStream(String var1);
<V> RGeo<V> getGeo(String var1);
<V> RGeo<V> getGeo(String var1, Codec var2);
<V> RSetCache<V> getSetCache(String var1);
<V> RSetCache<V> getSetCache(String var1, Codec var2);
<K, V> RMapCache<K, V> getMapCache(String var1, Codec var2);
<K, V> RMapCache<K, V> getMapCache(String var1, Codec var2, MapOptions<K, V> var3);
<K, V> RMapCache<K, V> getMapCache(String var1);
<K, V> RMapCache<K, V> getMapCache(String var1, MapOptions<K, V> var2);
<V> RBucket<V> getBucket(String var1);
}
レタス
- 定義:Lettuceは、スケーラブルなスレッドセーフ[Redis]クライアントです。複数のスレッドが同じRedisConnectionを共有できます。優れた[netty] NIOフレームワークを使用して、複数の接続を効率的に管理します。
基本的な使い方
Mavenの依存関係
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
applicaiton.yml配置
server:
port: 8888
spring:
redis:
host: localhost
port: 6379
lettuce: # 这里标明使用lettuce配置
pool:
max-active: 8 #连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 5 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
timeout: 10000ms #连接超时时间(毫秒)
RedisConfigplicationRedisTemplate
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
/**
* RedisTemplate配置
*/
@Bean
public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory connectionFactory){
RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());//key序列化
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());//value序列化
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
使用する
@RequestMapping("/test1")
public void addlist1() {
redisTemplate.opsForValue().set("one", "one");
redisTemplate.opsForSet().add("test:set2", "1");
redisTemplate.opsForSet().add("test:set2", "2");
redisTemplate.opsForSet().add("test:set1", "3");
redisTemplate.opsForSet().add("test:set1", "3");
redisTemplate.opsForHash().put("hash1", "name1", "lms1");
redisTemplate.opsForHash().put("hash1", "name2", "lms2");
redisTemplate.opsForHash().put("hash1", "name3", "lms3");
redisTemplate.opsForList().leftPush("two", "two", "two1");
}
完全なコードについては、https://gitee.com/Marlon_Brando/JavaTest/tree/master/configtestを参照してください。