RedisTemplate 获取key的数据类型

Spring给我们提供了RedisTemplate来访问redis服务,它的keys接口返回匹配的所有数据类型的键集合,但继续访问它们对应的值需要用ValueOperations、HashOperations、ListOperations等分别进行操作。
这里就有个问题是拿到一组多种的key之后,需要先判断key的类型。

RedisTemplate里能找到自带的type(key)接口,传入key不能为null值。
在这里插入图片描述
返回类型是枚举型的org.springframework.data.redis.connection.DataType
在这里插入图片描述
它包含了redis现有的5种数据类型以及none

因此可以使用redisTemplate.type(key)再配合DataType进行key数据类型的判断。

RedisTemplate获取数据,首先需要在Spring容器中初始化配置类。该配置类主要用于设置key和value的序列化方式。通常情况下,key使用String的序列化方式,value使用JSON的序列化方式。配置类的示例如下: @Configuration public class RedisTemplateConfig { @Bean @Primary public RedisTemplate<String, Object> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory){ RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); template.setKeySerializer(new StringRedisSerializer()); // key的序列化方式为String template.setHashKeySerializer(new StringRedisSerializer()); template.setValueSerializer(fastJsonRedisSerializer); // value的序列化方式为JSON template.setHashValueSerializer(fastJsonRedisSerializer); template.setDefaultSerializer(fastJsonRedisSerializer); template.afterPropertiesSet(); return template; } } 接下来,在使用的地方通过@Autowired注入RedisTemplate即可: @Autowired private RedisTemplate<String, Object> redisTemplate; 通过RedisTemplate可以使用各种操作方法来获取数据。例如,若要获取set集合中的数据,可以使用redisTemplate.opsForSet()方法。通过members()方法可以直接获取该set集合中的所有数据。在打印输出时,你会发现如果插入了与之前重复的数据,set集合会自动去重。以下是一个示例: public void getRedisSet(){ Set<Object> members = redisTemplate.opsForSet().members(RedisConstantKey.MY_REDIS_SET.key); Iterator<Object> it = members.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } 输出结果为:bb cc aa [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [redisTemplate分别存取redis的string/list/set/zset/hash等数据类型](https://blog.csdn.net/u012809308/article/details/107141004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值