Spring 集成Redis

一、Spring 集成Redis

Redis是一种特殊类型的数据库,它被称之为key-value存储。顾名思义,key-value存储保存的是键值对。实际上,key-value存储与哈希Map有很大的相似性。可以不太夸张地说,它们就是持久化的哈希Map。

1.1 连接到Redis

Redis连接工厂会生成到Redis数据库服务器的连接。Spring Data Redis为四种Redis客户端实现提供了连接工厂:

  • JedisConnectionFactory
  • JredisConnectionFactory
  • LettuceConnectionFactory
  • SrpConnectionFactory

1) 连接Redis

Spring 集成Redis_第1张图片
1.2 使用RedisTemplate

Spring 集成Redis_第2张图片]

如果你所使用的value和key都是String类型,那么可以考虑使用StringRedisTemplate来代替RedisTemplate:
在这里插入图片描述

1.2.1 RedisTemplate API

方法 子API接口 描述
opsForValue() ValueOperations 操作具有简单值的条目
opsForList() ListOperations 操作具有list值的条目
opsForSet() SetOperations 操作具有set值的条目
opsForZSet() ZSetOperations 操作具有ZSet值(排序的set)的条目
opsForHash() HashOperations 操作具有hash值的条目
boundValueOps(K) BoundValueOperations 以绑定指定key的方式,操作具有简单值的条目
boundListOps(K) BoundListOperations 以绑定指定key的方式,操作具有list值的条目
boundSetOps(K) BoundSetOperations 以绑定指定key的方式,操作具有set值的条目
boundZSet(K) BoundZSetOperations 以绑定指定key的方式,操作具有ZSet值(排序的set)的条目
boundHashOps(K) BoundHashOperations 以绑定指定key的方式,操作具有hash值的条目

1.3 使用key和value的序列化器

当某个条目保存到Redis key-value存储的时候,key和value都会使用Redis的序列化器(serializer)进行序列化。Spring Data Redis提供了当某个条目保存到Redis key-value存储时候,key和value都会使用Redis的序列化器(serializer)进行序列化。Spring Data Redis提供了多个这样的序列化器,包括:

  • GenericToStringSerializer:使用Spring转换服务进行序列化;
  • JacksonJsonRedisSerializer:使用Jackson 1,将对象序列化为JSON;
  • Jackson2JsonRedisSerializer:使用Jackson 2,将对象序列化为JSON;
  • JdkSerializationRedisSerializer:使用Java序列化;
  • OxmSerializer:使用Spring O/X映射的编排器和解排器(marshaler和unmarshaler)实现序列化,用于XML序列化;
  • StringRedisSerializer:序列化String类型的key和value。

这些序列化器都实现了RedisSerializer接口,如果其中没有符合需求的序列化器,那么你还可以自行创建。

RedisTemplate会使用JdkSerializationRedisSerializer,这意味着key和value都会通过Java进行序列化。StringRedisTemplate默认会使用StringRedis-Serializer,这在我们的预料之中,它实际上就是实现String与byte数组之间的相互转换。这些默认的设置适用于很多的场景,但有时候你可能会发现使用一个不同的序列化器也是很有用处的。

例如,假设当使用RedisTemplate的时候,我们希望将Product类型的value序列化为JSON,而key是String类型。RedisTemplate的setKeySerializer()和setValueSerializer()方法就需要如下所示:
Spring 集成Redis_第3张图片

你可能感兴趣的:(后端,spring,redis,java)