Redis_java客户端_SpringDataRedis配置序列化/反序列化 SpringDataRedis了解

本文介绍了SpringDataRedis,它是SpringData对Redis的集成,提供统一API、支持多种客户端、集合操作、响应式编程以及序列化/反序列化功能。主要讲解了RedisTemplate、操作API和常用序列化策略。
摘要由CSDN通过智能技术生成

Redis - SpringDataRedis

SpringDataRedis 是 SpringData对 Redis的集成模块叫做SpringDataRedis,SpringData是Spring中数据操作模块,包含了对各种数据库的集成

SpringDataRedis的特点:

  • 提供了RedisTemplate统一API来操作Redis
  • 提供了对不同Redis客户端的整合(Lettuce和Jedis)
  • 支持Reds的发布订阅模型
  • 支持Redis哨兵和Redis集群
  • 支持基于Lettuce的响应式编程
  • 支持基于Redis的JDKCollection实现
  • 支持基于JDK,JSON,字符串,Spring对象的数据序列化和反序列化

SpringDataRedis API

  1. 针对jedis客户端中的api进行了归类封装,将同一类型操作封装为operation接口

    • ValueOperations:简单K-V操作
    • SetOperations:set类型数据操作
    • ZSetOperations:zset类型数据操作
    • HashOperations:针对map类型的数据操作
    • ListOperations:针对list类型的数据操作
  2. 提供了对key的"bound"(绑定)便携化操作API,可以通过bound封装指定的key,然后进行一系列的操作而无须“显式”的再次指定Key,即BoundKeyOperations:

    • BoundValueOperations
    • BoundSetOperations
    • BoundListOperations
    • BoundSetOperations
    • BoundHashOperations
  3. SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中

    API说明
    redisTemplate.opsForValue()操作String类型数据
    redisTemplate.opsForHash()操作Hash类型数据
    redisTemplate.opsForList()操作List类型数据
    redisTemplate.opsForSet()操作Set类型数据
    redisTemplate.opsForZSet()操作SortedSet类型数据
    redisTemplate操作通用命令

2. 序列化/反序列化

  • JdkSerializationRedisSerializer:POJO对象的存取场景,使用JDK本身序列化机制,将pojo类通过ObjectInputStream/ObjectOutputStream进行序列化操作,最终redis-server中将存储字节序列,默认的序列化方式,每个要存储的对象都要继续Seriallzable 接口的实现,比较笨重,而且其存储的数据为二进制数据,开发者在维护过程中阅读判断大打折扣

  • StringRedisSerializer:Key或者value为字符串的场景,根据指定的charset对数据的字节序列编码成string,是“new String(bytes, charset)”和“string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。

  • Jackson2JsonRedisSerializer:jackson-json工具提供了javabean与json之间的转换能力,可以将pojo实例序列化成json格式存储在redis中,也可以将json格式的数据转换成pojo实例。因为jackson工具在序列化和反序列化时,需要明确指定Class类型,因此此策略封装起来稍微复杂。【需要jackson-mapper-asl工具支持】

  • GenericJackson2JsonRedisSerializer: jackson-json工具提供了javabean与json之间的转换能力,可以将pojo实例序列化成json格式存储在redis中,也可以将json格式的数据转换成pojo实例。这种方法不需要指明Class

有了上面对序列化的基本理解,接下来就可以在代码中添加全局的序列化配置

@Bean
public RedisTemplate redisTemplate(){
  RedisTemplate redisTemplate = new RedisTemplate();
  redisTemplate.setKeySerializer(new StringRedisSerializer());
  redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  return redisTemplate;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值