老师您好,有两个问题:

来源:9-1 保存无效的优惠劵数据到缓存中

五羊司机

2020-02-13

老师您好,有两个问题:

  1. 在getCachedCoupons这个接口中,通过userid和status向Redis查询优惠券数据,如果查询结果为空,则向Redis缓存中写入一条-1的数据,为什么要这样做呢,按我的理解从缓存中没查到数据不是应该再去查一次MySQL吗,如果MySQL中有数据就写进Redis缓存,如果MySQL中也没有数据才向缓存中写一条-1的数据。因为第一次查询的时候缓存里面肯定是没有数据的,如果因此就直接向缓存中写入-1的数据,那之后再查缓存就能查到-1的数据,就不会再去查数据库了,那这样岂不是永远查不到真实的数据了。
  2. 优惠券数据是以hash而不是string结构存储在Redis里面的,为什么要用StringRedisTemplate去处理hash的数据呢
写回答

1回答

张勤一

2020-02-13

同学你好:

    1. getCachedCoupons 这个接口默认认为当前是个新的系统,用户数据目前并不存在。所以,只要是缓存中没有出现过的,都认为是用户没有数据。按照你的设计话,是需要再去查询数据库的。这只是产品思想设计的不一致,不是实现上的问题。

    2. StringRedisTemplate 不是只操作 String 类型的 Redis 数据,它就是 Redis 的客户端,可以查询下看看它与 RedisTemplate 的区别。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

2
4
慕盖茨9194162
回复
慕仔1326250
同学我也不太理解这个地方,老师的代码里根本没有向数据表查询这一过程呀
2021-05-08
共4条回复

Spring Cloud微服务实战 打造企业级优惠券系统

微服务,SpringCloud,SpringBoot面试、毕设、

1178 学习 · 487 问题

查看课程