使用(Redis)StringRedisTemplate进行缓存

1、为什么要使用StringRedisTemplate?

在进行缓存时,若使用RedisTemplate进行操作,如果我们使用默认的序列化器,Redis会为我们缓存一堆比较乱的代码(具体可以自行尝试),这样不利于我们进行数据的调用和存储,因此在使用时我们会对RedisTemplate的序列化方式进行配置。

而如果我们指定GenericJackson2JsonRedisSerializer序列化器为我们进行序列化,它会自动将Java对象序列化为JSON类型以及反序列化,但是存储到Redis的数据将会如下图所示:

 多了一条类名字段,由该序列化器反序列化时调用。这样的存储格式不仅浪费内存,且在类名作修改时,极易出现问题。

所以现在为了节省内存开销,我们并不会使用JSON序列化器来处理Value,而是统一使用String序列化器,要求只能存储String类型的key和value,当需要存储Java对象时,手动完成Java对象到JSON字符串格式的序列化以及JSON字符串到Java对象的反序列化。

而Spring默认提供了一个StringRedisTemplate类,它的key和Value的序列化方式默认就是String类型,省去了我们自定义RedisTemplate的过程。

2、如何使用StringRedisTemplate?

使用StringRedisTemplate最主要的就是进行手动序列化,因此,一个手动序列化的工具就必不可少,在这里推荐使用fastJSON进行操作。

以List数据结构举例:

进行缓存构造:

Page<job> page=jobService.selectJob(new Page<>(pageNum,pageSize));//查询分页
List<job> jobList=page.getRecords();//获取分页中数据项的集合
String jobs = JSON.toJSONString(jobInfoCompanies);//调用fastJSON工具包进行序列化为JSONString格式
stringRedisTemplate.opsForValue().set("jobList:"+pageNum+pageSize,jobs);//进行缓存存储

进行缓存查询:

String jobs = stringRedisTemplate.opsForValue().get("jobList:"+pageNum+pageSize);//获取缓存中的JSONString类型数据
List<job> list = JSONObject.parseArray(jobs,job.class);//调用fastJSON的工具包进行JSONString转List反序列化
//...进行接下来的操作

3、总结:

1、在使用Redis进行缓存时,选择合适Redis模板,推荐使用StringRedisTemplate

2、使用StringRedisTemplate时需要注意手动序列化的细节,在写入和读取时都要进行

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis StringRedisTemplateRedis 官方提供的 Java 客户端库,通过 Java 代码操作 Redis 中的 String 类型的数据。StringRedisTemplate 提供了一系列的方法,允许用户获取、设置、删除 Redis 中的字符串类型数据。 在开发过程中,我们经常使用 String 类型存储一些简单的数据,例如缓存、计数器等。通过使用 StringRedisTemplate 可以非常方便地实现这些简单的功能。StringRedisTemplate 采用了模板方法模式,用户只需要关注具体的业务逻辑,而不需要关注 Redis 的连接、关闭等操作。 使用 StringRedisTemplate 的过程中,首先需要创建一个 StringRedisTemplate 的实例对象,然后通过该对象调用提供的方法对 Redis 中的数据进行操作。StringRedisTemplate 提供了以下常用的方法: 1. set:设置一个字符串类型的键值对。 2. get:获取指定 key 对应的字符串值。 3. delete:删除指定的 key。 4. increment:对存储在指定 key 的数值进行加 1 操作。 5. decrement:对存储在指定 key 的数值进行减 1 操作。 6. append:将数据追加到已经存在的 key 的值后面。 除了以上方法外,StringRedisTemplate 还提供了一些其他的方法,例如 setIfAbsent、getAndSet 等。这些方法的主要作用是在提供基本功能的同时增加一些扩展功能,方便用户在实际开发中使用使用 StringRedisTemplate 进行 Redis 数据操作,能够提高开发效率,实现可靠的数据存储。 总的来说,StringRedisTemplate 是一个非常实用的工具类,提供了一系列常用的方法,允许用户对 Redis 中的 String 类型数据进行操作,封装了底层的 Redis 连接与关闭操作,提供了非常便捷的数据访问方式,为 Java 开发中使用 Redis 提供了非常方便的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值