关于优惠券码数量的问题

来源:9-2 尝试从缓存中获取优惠劵码

骑着猪找未来

2021-08-10

图片描述
一哥,今天在一篇公众号上看到关于redis这样一个描述,不知道这个描述是否正确,如果正确的话,那么我们这里优惠券码的实现,如果要发比如10万张优惠券,该怎么设计呢

写回答

1回答

张勤一

2021-08-11

猪哥你好:

    这个描述从理论上来说,肯定是正确的,不过,你需要结合场景去考虑这个问题。我先来说明为什么要控制集合类型中元素的个数,原因主要有以下的几点:

    (1)这会产生 bigkey,在维护和迁移成本上太高,特别是集群模式的话,那么,会造成各台机器数据分布不均的问题

    (2)查找数据的问题,过大的 key,查找数据往往耗时也会较长,特别是 list 类型,性能较差

    那么,我们的优惠券如果有10万个,可以放在一个 key 里面吗?当然是可以的,我们只是保存一堆优惠券码,并依次吐出,这对性能没有任何影响。那么,如果就是按照这个理论,也很容易做这件事:

    (1)10万个优惠券码分布到10个 set 中

    (2)有个 set 的索引记录下来当前 set 的 key 名称

    (3)获取优惠券码的时候,使用 lua 脚本从所有的 set 中尝试获取优惠券码即可

3
1
骑着猪找未来
一哥牛逼!
2021-08-11
共1条回复

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

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

1203 学习 · 487 问题

查看课程