简介
Jedis
Jedis 是早期的 Redis 的 Java 实现客户端,提供了比较全面的 Redis 命令的支持,其官方网址是:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.html
优点:支持全面的 Redis 操作特性(可以理解为 API 比较全面)。
缺点:使用阻塞的 I/O,且其方法调用都是同步的,程序流需要等到 sockets 处理完 I/O 才能执行,不支持异步;
Jedis 客户端实例不是线程安全的,所以需要通过创建连接池来使用 Jedis。
lettuce
lettuce 是一种可扩展的线程安全的 Redis 客户端,支持异步模式。如果避免阻塞和事务操作,如 BLPOP 和 MULTI/EXEC,多个线程就可以共享一个连接。lettuce 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和 Redis 数据模型。lettuce 的官网地址是:https://lettuce.io/
优点:支持同步异步通信模式;
Lettuce 的 API 是线程安全的,如果不是执行阻塞和事务操作,如 BLPOP 和 MULTI/EXEC,多个线程就可以共享一个连接。
RedisTemplate
Spring 对 Redis 操作的一层封装,他的底层是通过 Jedis、Lettuce 实现的。如果我们使用 spring-boot-starter-data-redis 则默认时 Lettuce。
RedisTemplate 集群
把单机的 yml 文件改一下就可以了
spring:
data:
redis:
database: 0
# 没有密码
#password: 123456
cluster:
# 获取失败 最大重定向次数
max-redirects: 3
nodes:
- 192.168.64.100:6381
- 192.168.64.100:6382
- 192.168.64.100:6383
- 192.168.64.100:6384
- 192.168.64.100:6385
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
cluster:
refresh:
#支持集群拓扑动态感应刷新,自适应拓扑刷新是否使用所有可用的更新,默认false关闭
adaptive: true
#刷新周期
period: 2000
RedisTemplate 单机
pom.xml 文件引入依赖
<!--SpringBoot与Redis整合依赖-->
<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>
yml 配置
spring:
data:
redis:
database: 0
host: 192.168.64.100
port: 6379
# 没有密码
#password: 123456
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
OrderController
@RestController
public class OrderController {
@Autowired
private OrderService orderService;
@PostMapping("/addOrder")
public Long addOrder(){
//测试就不传参数了
return orderService.addOrder();
}
@GetMapping("/getOrder")
public String getOrder(Long id){
return orderService.getOrder(id);
}
//路径传参请求----> http://localhost:8080/getOrderById/164
@GetMapping("/getOrderById/{id}")
public String getOrderByid(@PathVariable("id") Integer id){
return orderService.getOrder(Long.valueOf(id));
}
}
OrderService
public interface OrderService {
long addOrder();
String getOrder(Long id);
}
OrderServiceImpl
@Service
public class OrderServiceImpl implements OrderService {
public static final String ORDER_KEY = "order:"