Spring 集成Redis

浅浅的花香味﹌ 2024-04-17 06:27 145阅读 0赞

一、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

在这里插入图片描述
1.2 使用RedisTemplate

在这里插入图片描述]

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

1.2.1 RedisTemplate API





























































方法 子API接口 描述
opsForValue() ValueOperations<K, V> 操作具有简单值的条目
opsForList() ListOperations<K, V> 操作具有list值的条目
opsForSet() SetOperations<K, V> 操作具有set值的条目
opsForZSet() ZSetOperations<K, V> 操作具有ZSet值(排序的set)的条目
opsForHash() HashOperations<K, HK, HV> 操作具有hash值的条目
boundValueOps(K) BoundValueOperations<K,V> 以绑定指定key的方式,操作具有简单值的条目
boundListOps(K) BoundListOperations<K,V> 以绑定指定key的方式,操作具有list值的条目
boundSetOps(K) BoundSetOperations<K,V> 以绑定指定key的方式,操作具有set值的条目
boundZSet(K) BoundZSetOperations<K,V> 以绑定指定key的方式,操作具有ZSet值(排序的set)的条目
boundHashOps(K) BoundHashOperations<K,V> 以绑定指定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()方法就需要如下所示:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读

    相关 spring集成redis

        sprig集成redis,我的项目架构是springMVC+spring+ibatis 用maven管理 ,下面看代码 1. 在pom文件引入redis依赖包

    相关 Spring集成Redis

    最近在做一个关于群聊的项目,由于聊天要求实时性,不可能直接访问数据库,所以使用了Redis来做缓存,这里将使用过程中遇到的问题记录一下。 使用Redis之前需要合理设计存储