官網:https://lettuce.io/
以前java操作redis一直用的Jedis,最近發現Spting比較支持Lettuce,看了下Lettuce確實有他的過人之處。
Lettuce 和 Jedis 的都是連接Redis Server的客戶端程序。Jedis在實現上是直連redis server,多線程環境下非線程安全,除非使用連接池,為每個Jedis實例增加物理連接。Lettuce基於Netty的連接實例(StatefulRedisConnection),可以在多個線程間併發訪問,且線程安全,滿足多線程環境下的併發訪問,同時它是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例。
現在網上的代碼基本都是Jedis的,下面給出一個最簡單的使用springboot+RedisTemplate+Lettuce的例子,更多配置還需自己查看文檔。
引入依賴:
org.springframework.boot
spring-boot-starter-data-redis
配置一下:
我使用的是集群模式,
@Configuration
public class AppConfig {
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
redisClusterConfiguration.addClusterNode(new RedisNode("xxxx", 7001));
redisClusterConfiguration.addClusterNode(new RedisNode("xxxx", 7002));
redisClusterConfiguration.addClusterNode(new RedisNode("xxxx", 7003));
redisClusterConfiguration.addClusterNode(new RedisNode("xxxx", 7004));
redisClusterConfiguration.addClusterNode(new RedisNode("xxxx", 7005));
redisClusterConfiguration.addClusterNode(new RedisNode("xxxx", 7006));
redisClusterConfiguration.setPassword(RedisPassword.of("123456"));
return new LettuceConnectionFactory(redisClusterConfiguration);
}
@Bean
public RedisTemplate
redisTemplate(LettuceConnectionFactory factory) { StringRedisTemplate template = new StringRedisTemplate(factory);
return template;
}
}
使用舉例:
@Autowired
RedisTemplate
redisTemplate; @RequestMapping("/redisTemplate/set/{key}/{value}")
public String redisTemplateSet(@PathVariable(name = "key") String key, @PathVariable(name = "value") String value) {
redisTemplate.opsForValue().set(key, value);
return "done";
}
@RequestMapping("/redisTemplateSet/show/{key}")
public String redisTemplateGet(@PathVariable(name = "key") String key){
String result = redisTemplate.opsForValue().get(key);
return result;
}
是不是很簡單呢
閱讀更多 IT技術圈 的文章