SpringBoot整合Lettuce redis过程解析

网友投稿 351 2022-12-25


SpringBoot整合Lettuce redis过程解析

首先解释一下Lettuce客户端:

Lettuce 和 Jedis 的都是连接Redis Server的客户端程序。Jedis在实现上是直连redis server,多线程环境下非线程安全,除非使用连接池,为每个Jedis实例增加物理连接。Lettuce基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程安全,满足多线程环境下的并发访问,同时它是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

1、添加依赖

org.springframework.boot

spring-boot-starter-data-redis

org.apache.commons

commons-pool2

2、添加redis配置

spring:

redis:

host: ****

password:****

port: 6379

# 连接超时时间(毫秒)

timeout: 1000

# Redis默认情况下有16个分片,这里配置具体使用的分片,默认是0

database: 0

# 连接池配置

lettuce:

pool:

# 连接池最大连接数(使用负值表示没有限制) 默认 8

max-active: 8

# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1

max-wait: -1

# 连接池中的最大空闲连接 默认 8

max-idle: 8

# 连接池中的最小空闲连接 默认 0

min-idle: 0

3、实现逻辑

@Autowired

private StringRedisTemplate stringRedisTemplate;

@Override

public String testRedis(){

ExecutorService executorService = Executors.newFixedThreadPool(1000);

IntStream.range(0, 1000).forEach(i -> executorService.execute(() -> stringRedisTemplate.opsForValue().increment("lcl",1)));

System.out.println("lcl1=============" + stringRedisTemplate.opsForValue().get("lcl"));

stringRedisTemplate.opsForValue().set("lcl1","val1");

String val1 = stringRedisTemplate.opsForValue().get("lcl1");

System.out.println("lcl1=============" + val1);

String key = "redis:test:demo1";

User user = new User();

user.setId(100L);

user.setUsername("u2");

user.setPassword("p2");

stringRedisTemplate.opsForValue().set(key, jsON.toJSONString(user));

String valUser = stringRedisTemplate.opsForValue().get(key);

System.out.println("redis:test:demo1=============" + valUser);

User getUser = JSON.parseObject(valUser, User.class);

System.out.println("redis:test:demo1=============" + getUser.getUsername()+ "========" + getUser.getPassword());

return null;

}

测试结果:

由于redis有String、list、set、zset、hash、geo等类型,因此使用时不止使用opsForValue()方法,具体的对应方法如下:

opsForValue: 对应 String(字符串)

opsForZSet: 对应 ZSet(有序集合)

opsForHash: 对应 Hash(哈希)

opsForList: 对应 List(列表)

opsForSet: 对应 Sethttp://(集合)

opsForGeo: 对应 GEO(地理位置)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java并发 线程间的等待与通知
下一篇:java模拟TCP通信实现客户端上传文件到服务器端
相关文章

 发表评论

暂时没有评论,来抢沙发吧~