SpringBoot整合Redis客户端
一、SpringBoot整合Redis的步骤
1. 导入SpringBoot整合Redis坐标,starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 在yml中的配置
spring:
redis:
host: localhost
port: 6379
3. RedisTemplate提供操作各种数据存储类型的接口API
3.1 如操作Hash数据存储类型的opsForHash
@PostMapping("/setcode")
private String setPhoneCode(@RequestBody Phone phone){
//随机生成6位验证码,设置过期时间
String code = RandomStringUtils.randomNumeric(6);
HashOperations ops = redisTemplate.opsForHash();
ops.put("phone",phone.getPhone(),code);
redisTemplate.expire("phone",60, TimeUnit.SECONDS);
return "发送的验证码为:"+code;
}
- 操作字符串:redisTemplate.opsForValue();
- 操作列表:redisTemplate.opsForList();
- 操作集合:redisTemplate.opsForSet();
3.2 生成随机数,依赖commons-lang3包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
二、RedisTemplate与StringRedisTemplate(推荐和常使用)的区别
2.1 使用RedisTemplate遇到的问题
在使用RedisTemplate获取使用通过客户端(redis-cli.exe)设置的key-value值时,发现获取不到。可以通过把RedisTemplate类替换成StringRedisTemplate来解决。在实际应用中,我们也常常使用StringRedisTemplate。
三、Springboot整合Redis
3.1 在SpringBoot中整合的Redis客户端,默认使用的是lettuce,也可以替换成jedis
spring:
redis:
host: localhost
port: 6379
#client-type默认是lettuce
client-type: lettuce
3.2 使用jedis客户端的步骤
配置坐标
redis.clients
jedis
配置yml文件
spring:
redis:host: localhost
port: 6379
client-type: jedis
使用
与lettuce完全一样,都是使用RedisTemplate或StringRedisTemplate
lettcus与jedis区别
- jedis链接Redis服务器是直连模式,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用。这样整体性能就大受影响。
- lettcus基于Netty框架进行与Redis服务器连接,底层设计中采用StatefulRedisConnection。StatefulRedisConnection自身是线程安全的。可以保障并发访问安全问题,所以一个连接可以被多线程复用。当然lettcus也支持多连接实例一起工作。
还没有评论,来说两句吧...