惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
Schneier on Security
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
Scott Helme
Scott Helme
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
P
Proofpoint News Feed
P
Palo Alto Networks Blog
K
Kaspersky official blog
I
Intezer
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
小众软件
小众软件
G
GRAHAM CLULEY
Last Week in AI
Last Week in AI
量子位
IT之家
IT之家
F
Full Disclosure
T
Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
W
WeLiveSecurity
Y
Y Combinator Blog
V
V2EX
L
LINUX DO - 热门话题
Martin Fowler
Martin Fowler
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
Google DeepMind News
Google DeepMind News
博客园 - Franky
M
MIT News - Artificial intelligence
爱范儿
爱范儿
I
InfoQ
C
Cisco Blogs
L
LangChain Blog
J
Java Code Geeks
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
Hugging Face - Blog
Hugging Face - Blog
S
Secure Thoughts
A
About on SuperTechFans

Redis

发现一个支持云同步的 Redis GUI 工具: RedisViewer 阿里云 Redis 命中率计算与监控的问题 - V2EX Redis 运行一段时间后报错导致挂掉,有什么办法解决呢? - V2EX Redis Stream 实现 MQ 的可行性 - V2EX Redis 缓存数据 - V2EX 支持 WinXP/2003 的 Redis 服务端 - V2EX 怎么才能学好 redis,有什么好的教程或者 blog 推荐吗? - V2EX 线上服务 redis 查询超时排查求教 - V2EX 有木有安卓 app 的 client 端呀? - V2EX 除了 Tiny RDM 之外还有什么比较好用的 Redis GUI 工具么? - V2EX Redis 支持 Hash 字段单独设置过期时间 - V2EX Redis 加上密码后,整体性能下降 20%? - V2EX 新学 redis 集群的疑惑 - V2EX Garnet 真比 Redis 快吗? - V2EX Redis 几乎每小时都出现大量超时,求助 - V2EX 问一下大家 redis 的配置 - V2EX Redis 怎样将字节串传递给 lua 脚本? - V2EX 微软 Garnet 的发展前景如何,有没有可能替代 Redis? - V2EX 业内有没有把 redis 开启 aof=always 当做数据库使用的? - V2EX 有谁试过 redis 的 string 自增性能吗, 我这怎么是个位数? - V2EX 突然想起一个问题,你们用的 redis 有崩过吗?是什么原因崩的? - V2EX 关联表查询结果的 Redis 缓存如何设计 API 请求如何方便的做并发测试? - V2EX 请教兄弟们一个问题, datagrip 连接 redis 如何显示 redis 键的 过期时间呢? 关于 Redis RESP3 的想法 - V2EX 轻便式 Redis Monitor 面向研发人员图形可视化监控平台 Redis 中使用 pipeline 执行命令时,有单次执行数量的限制吗? - V2EX [故障模拟]redis cluster 3 机 3 主 6 从,主节点都转移到了其中一台机器上,然后这台机器宕机 你们现在连接 redis 集群是用的什么工具,可以分享一下下载链接吗? - V2EX 求教一下 Redis 哨兵模式下,主从延迟问题 - V2EX 想问下大佬 40M 的字符串适合放到 redis 缓存吗? - V2EX redis 有时取不到值 - V2EX redis 集群中 执行事务 或者 lua 脚本 涉及到多个 key 时,这些 key 要求在同一个节点还是同一个 slot? - V2EX redis 7 所有命令都是原子的吗? - V2EX Redis 是鸡肋吗? - V2EX Redis 服务挂了,一段时间后又恢复,不会造成缓存与数据库不一致吗? - V2EX 为什么 MySQL 有缓存,还要使用 Redis? - V2EX 关于缓存一致性问题,不知道我这个方案是否可行 - V2EX redis 集群获取不到连接 - V2EX 用 redis 直接替换 app/物联网的 mq 服务器的可行性大吗?怎么对客户端进行限制 - V2EX redis 怎么裁剪 zset 只保留排名前 100 的数据 - V2EX 关于 redis 一个小问题(随机性) - V2EX 求教大佬,线上 redis cluster 中适合使用 redis lua script 吗?以及使用时有什么注意事项? - V2EX 怎么使用命令批量删除匹配的 key 值? - V2EX 对 redis 的 zset 做分片的时候怎么选择分片个数 - V2EX 关于消息推送方案的讨论 - V2EX Redis 的 zset 按 score 排序做分页的时候怎么保证数据不丢失? - V2EX redis 的 zset 如果打散成多个 zset 的话,如果要分页查询怎么处理呢? - V2EX 关于社区场景下,用户已读文章不再推荐这种需求实现方案的探讨 - V2EX 一个 abtest 实验中 redis 设计的思考
缓存失效后先返回再触发更新的场景要怎么处理? - V2EX
ben548 · 2023-07-26 · via Redis

这是一个创建于 1054 天前的主题,其中的信息可能已经有所发展或是发生改变。

场景:我要缓存一份数据,比如缓存 10 分钟,然后如果有访问,发现缓存失效了,就先返回,然后再触发缓存更新,这个先返回再触发缓存更新要怎么做呢?
我想的方案:
往消息队列里面发消息的方式,但是多用户并发的情况下,其实会有多个用户过来请求更新缓存,当然可以用分布式锁来处理,只让一个用户生成缓存成功。
这个就是我的一个想法,有没有更好的方案?

第 1 条附言  ·  2023 年 7 月 27 日

更新缓存获取数据这个操作需要依赖外部接口,不是可以自行获取的

  • 触发
  • 更新
  • 返回
  • 5 条回复    2023-07-27 17:15:12 +08:00

    lanlanye

    1

    lanlanye      2023 年 7 月 26 日 via iPhone

    返回前用另外的线程/协程处理一下不就好了吗?还是说一个查询重到必须用消息队列?
    并发问题要看具体需求,一般来说加锁就完事了。

    RoninZc

    2

    RoninZc      2023 年 7 月 27 日

    设置两个 key,一个是 key_name 不过期,一个是 key_name_ttl 过期时间 10 分钟,每次拿这两个 key ,带 ttl 的不存在就异步更新缓存,直接返回第一个 key 的结果就好了,更新缓存可以加锁,没获取到锁就不执行就好

    ben548

    3

    ben548      2023 年 7 月 27 日

    @lanlanye 没记错的话另起一个协程,也要等这个更新缓存的协程执行结束才能返回结果吧,而且这个更新缓存获取数据的操作需要依赖外部接口,有请求失败的可能

    ben548

    4

    ben548      2023 年 7 月 27 日

    @RoninZc 可以是可以,我也是这么想的,不做缓存失效,因为可能存在缓存失效后一直更新失败的情况,那么会出现缓存一直为空接口返回数据也为空的状态。
    现在想的优化是是不是在高并发的情况下是不是可以减少竞争锁的请求量,比如已经有一个用户触发了异步更新,那么我就直接返回。
    比如有用户触发了异步更新就直接设置一个标志位这种处理方式,如果这个标志位存在就不去更新,更新成功后就删除这个标识位,但是又可能存在更新失败的可能,还有这个标志位删除失败导致永不更新的情况。所以细想其实还是有很多细节值得考虑的,我是在想有没有更简单的处理方式。

    lanlanye

    5

    lanlanye      2023 年 7 月 27 日 via iPhone

    @ben548 呃,不需要的。虽然不知道你使用什么技术栈,但正常点的语言实现异步处理都不会很困难,无论你用线程协程还是其他进程(消息队列也属于跨进程异步)。