beryl

beryl

V2EX 第 156927 号会员,加入于 2016-01-26 09:30:10 +08:00
今日活跃度排名 12573
beryl 最近回复了
1 天前
回复了 myd 创建的主题 Redis 问个 Redis 的问题
题外话 qty 是什么的缩写
1 天前
回复了 myd 创建的主题 Redis 问个 Redis 的问题
@also24 #13

2021-02-27 18:00-20:00 我理解需求这个时候理论应该可以买两次,但是只可以买一次。
1 天前
回复了 myd 创建的主题 Redis 问个 Redis 的问题
@also24
嗯,那我的方案的问题理解一致

『 key 是包含了 timestamp 的,第二次购买的时候设置的是另一个 key,不存在覆盖问题』
如果第一次购买的时候是:2021-02-26 18:00,过期时间 2021-02-27 18:00
第二次购买是:2021-02-26 20:00 , 过期时间 2021-02-27 20:00

如果在 2021-02-27 18:00-20:00 理论上可以购买一次,但是其实只有一次机会了
1 天前
回复了 myd 创建的主题 Redis 问个 Redis 的问题
@also24 #7

如果只是第一次购买,24 小时后,被自动清掉了,key 不存在可以认为 0 次,可以购买的。

但确实有问题,因为『第二次购买后,24 小时时间被重置了』(-

set product_{product}_{user}_{timestamp} timestamp expire_time(当前时间+24 小时)
这个同样会有『第二次购买后的过期时间是根据第二次的当前时间+24 小时』这样第一次购买 24 小时后,购买次数并没有被重置


可以在你的这个思路上,第二个 key 拿到第一个的时间戳
1 天前
回复了 myd 创建的主题 Redis 问个 Redis 的问题
如果是固定 24 小时(绝对时间):
set product_{product}_{user} count expire_time(固定时间)

这个有个问题是,会在固定时间清除大量的 key, redis 会有压力。


如果是滚动 24 小时,从第一次购买算为原点:
set product_{product}_{user} count expire_time(当前时间+24 小时)

这种压力就分散多了
3 天前
回复了 beryl 创建的主题 程序员 自学新技术新领域
@dgjungle 之前接触过一些,但是里面细研究起来也是特别大的
4 天前
回复了 beryl 创建的主题 程序员 一些想法讨论和求开导
@drupal 钱途有 0.5 个满足
学 go 倒不是完全为了追风,而是想学习另一门语言来提升
23 天前
回复了 beryl 创建的主题 生活 就地过年你打算怎么过
@toarya 不然年假没地方用了(不然那些本地人没发休假了么~~~
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2750 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 9ms · UTC 07:22 · PVG 15:22 · LAX 23:22 · JFK 02:22
♥ Do have faith in what you're doing.