01. SDR(spring-data-redis) 简介

Spring Data Redis(简称SDR) 是spring 操作redis 的一个框架, 可以使用jedis 驱动或Lettuce 驱动, SDR 2.x 系列默认使用Lettuce 驱动.

1. RedisTemplate

1.1 简介

  • SDR 在应用启动时,会自动向spring 容器中注入一个RedisTemplate 实例和一个StringRedisTemplate 实例
  • RedisTemplate 是SDR 提供的操作Redis 的模板类, 默认对key和value均使用jdk序列化方式
  • StringRedisTemplate 集成RedisTemplate,只是将默认的jd序列化方式均修改为String序列化方式。 需要注意的是, StringRedisTemplate 并非是只能对Redis 中String 类型数据结构进行操作, StringRedisTemplate可以对Redis中任何数类型进行操作,只是key 和 value 在java中必须均为String 类型, 不能是Object 类型

1.2 RedisTemplate核心API

根据API 使用的范围 可将RedisTemplate 提供的API 大致可以分为三种:

  • delete/expire…: 对任意类型的key的通用操作, 如删除key,设置过期时间等
  • opsForxxx(): 针对特定类型API, 返回针对Redis特定类型的操作对象,返回的操作对象只能对这一种类型的任意key进行操作
  • boundXXXOperations: 针对特定Key API, 返回针对Redis特定类型的某个key的操作对象,返回对象只能对这一个key进行操作

2.序列化RedisSerializer

  • 序列化时SDR中的一个核心概念,主要解决java类型与redis中存储的字节相互转换
  • SDR 默认序列化方式为使用jdk序列化方式: JdkSerializationRedisSerializer
  • SDR 还提供了json序列化方式(GenericJackson2JsonRedisSerializer) 和 String 序列化方式(StringRedisSerializer)
  • 自定义序列化方式只需要实现RedisSerializer 接口, 并实现其序列化与反序列化方法即可

3. 事务

Redis 中的事务属于弱事务, SDR 也对其提供了支持:

  • 事务中所有命令, 在同一连接中执行
  • 事务中的所有命令,在执行exec方法时,才开始依次执行
  • 事务中所有命令都会执行,纵使中间有命令报错,也不会终止后面的命令执行
  • 事务中发生异常时,已执行的命令不会发生回滚

4. 管道(Pipelline)

redis 的pipeline 管道命令类似于批处理执行命令, 可以减少TCP连接的创建和销毁次数,提升操作效率。

  • 一次pipeline 操作只创建和销毁一次TCP连接
  • pipeline 中的多条命令存储在一个队列中,所以命令执行是有顺序的
  • pipeline 中每条返回值不是void的命令都会返回一个结果,然后存储在List中. 纵使返回值为null
  • pipeline 中返回值为void的命令, 不会返回结果, 也就是说list中不会有此对象的返回值.
  • pipeline 中允许执行不同的命令

5. 发布订阅

redis 支持发布订阅功能,可以实现广播方式的消息队列。SDR 中消息队列的开发流程:

  • 创建消息监听器实现类,对接受到的消息做相应的业务处理
  • 创建消息监听适配器,对消息监听器做不同的设置,如序列化方式等。
  • 将消息监听适配器注册到spring容器中
  • 创建消息监听容器,并将消息监听适配器添加到消息监听容器中,并指定监听适配器所监听的channel正则表达式。
  • 使用RedisTemplate 向channel 发送消息。

6. 阻塞队列

redis 的list提供了阻塞API, 可以用做阻塞队列. 阻塞队列可实现生产者消费者模式:

  • 一条消息只能被一个客户端消费,在并发应用中也是如此
  • 当队列中没有消息时,队列会处于阻塞状态. 当有消息后,重新开始消费.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值