老师您好,有两个问题:
来源:9-1 保存无效的优惠劵数据到缓存中
五羊司机
2020-02-13
老师您好,有两个问题:
- 在getCachedCoupons这个接口中,通过userid和status向Redis查询优惠券数据,如果查询结果为空,则向Redis缓存中写入一条-1的数据,为什么要这样做呢,按我的理解从缓存中没查到数据不是应该再去查一次MySQL吗,如果MySQL中有数据就写进Redis缓存,如果MySQL中也没有数据才向缓存中写一条-1的数据。因为第一次查询的时候缓存里面肯定是没有数据的,如果因此就直接向缓存中写入-1的数据,那之后再查缓存就能查到-1的数据,就不会再去查数据库了,那这样岂不是永远查不到真实的数据了。
- 优惠券数据是以hash而不是string结构存储在Redis里面的,为什么要用StringRedisTemplate去处理hash的数据呢
写回答
1回答
-
张勤一
2020-02-13
同学你好:
1. getCachedCoupons 这个接口默认认为当前是个新的系统,用户数据目前并不存在。所以,只要是缓存中没有出现过的,都认为是用户没有数据。按照你的设计话,是需要再去查询数据库的。这只是产品思想设计的不一致,不是实现上的问题。
2. StringRedisTemplate 不是只操作 String 类型的 Redis 数据,它就是 Redis 的客户端,可以查询下看看它与 RedisTemplate 的区别。
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
242021-05-08
相似问题