RedisTemplate和StringRedisTemplate的使用

本文详细解析了RedisTemplate和StringRedisTemplate的区别与应用场景。StringRedisTemplate适用于字符串数据的存取,而RedisTemplate则更适合复杂对象类型的直接存取。通过实例展示了不同序列化策略下数据的管理和操作。

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

一.RedisTemplate和StringRedisTemplate的区别:

  • 两者的关系是StringRedisTemplate继承RedisTemplate
  • 两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
  • SDR(Spring Data Redis)默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。
  • StringRedisTemplate默认采用的是String的序列化策略,保存的keyvalue都是采用此策略序列化保存的。
  • RedisTemplate默认采用的是JDK的序列化策略,保存的keyvalue都是采用此策略序列化保存的。

二. RedisTemplate和StringRedisTemplate的使用:

  • 当你的redis数据库里面本来存的是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么使用StringRedisTemplate是最好的选择。
  • 但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,希望直接从Redis里面取出一个对象,那么使用RedisTemplate则是最佳的选择。
User user = new User();
        user.setId(15);
        user.setUsername("呵呵");
        user.setPassword("123476");
        user.setAddress("北极");
        user.setEmail("123@123.com");
        user.setCreateTime(new DateTime());
        user.setUpdateTime(new DateTime());
        redisTemplate.opsForValue().set("user1", user);
        String jsonStr = JSONUtil.toJsonStr(user);
//        log.info(jsonStr);
//        User bean = JSONUtil.toBean(jsonStr, User.class);
//        log.info(bean);
        template.opsForValue().set("user2", jsonStr);
        log.info("redisTemplate:->"+redisTemplate.opsForValue().get("user1"));
        log.info(template.opsForValue().get("user2"));

输出结果:
在这里插入图片描述
其中JSONUtil使用的是github工具包Hutool,API网址
github官方地址是一个很好用的工具

日志打印使用的是lombok,在类上添加注解@Log4j2即可

推荐一个写的很详细的RedisTemplate API RedisTemplate的用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值