Spring RedisTemplate使用多种operation

本文介绍了如何在Spring中使用RedisTemplate进行不同类型的值操作,如将对象转换为JSON字符串进行存储。强调了在使用时需要注意的序列化问题,特别是默认的JDK序列化会在数据前添加额外信息,建议配置自定义序列化器,特别是在处理HashMap时,以避免读取时出现格式错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class RedisCache {
    private RedisTemplate<String, String> redisTemplate;
    private ZSetOperations<String, String>  zSetOperations;
    private HashOperations<String, String, String> hmapOperations;

    public RedisCache() {}

    public RedisCache(RedisTemplate<String, String> redisTemplate) {
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.setDefaultSerializer(new StringRedisSerializer());
        this.redisTemplate = redisTemplate;
        this.zSetOperations = redisTemplate.opsForZSet();
        this.hmapOperations = redisTemplate.opsForHash();
    }
}

如果你需要put对象,则封装一层方法 JSON.toJSONString(Object)即可。
如果是Double等,则String.valueOf(Double)。即String基本上可以适用所有的情况。

使用redis务必注意!!!一定要设置serializer.默认的是JDK的,序列化出来redis的数据前面会多一堆xxx数据。

redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
//redisTemplate.setDefaultSerializer();

如果用了hashmap,一定要设置

redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new StringRedisSerializer());

否则:

127.0.0.1:6379[1]> hgetall galileo.jobmgr.alert.recovery.policy.instant.map
1) “\xac\xed\x00\x05t\x00$9950d812-6d2d-4f8a-abaa-b6bdf6b4e780”
2) “\xac\xed\x00\x05t\x00\n1500020130”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值