gpt4 book ai didi

c# - 有条件地操作 StackExchange.Redis 中的哈希依赖于一些同步

转载 作者:可可西里 更新时间:2023-11-01 11:21:10 26 4
gpt4 key购买 nike

我正在使用由一些底层持久存储支持的 Redis,因此当缓存请求未命中时,逻辑将从支持的存储中获取数据并将其传递给客户端,并将其存储在缓存中。当同时发生一些丢失 key 的请求时,我确实希望只允许一个请求到达持久存储并完成工作,而其他请求将锁定或已订阅 key 更改并返回给调用者并从缓存中获取值。

最佳答案

一种可能的方法是在需要填充缓存时添加一个带过期时间的字符串键 ( see EXPIRE command ),称为 whatever:lock到您的项目)并在 4-5 分钟后过期。

所有对缓存的请求都应该检查是否存在whatever:lock:

  • 如果它不存在,那么整个过程会添加整个锁定 key 并尝试填充缓存。
  • 如果存在,整个过程将轮询缓存,直到锁定键不再存在,然后从缓存中获取数据。

SETEXPIRE 都应该作为 MULTI command 的一部分发出确保过期与 key 创建一起自动设置。

您也可以为此使用 SETNXCheck Redis official doc about this command, where it says that it can be used to create locks .

关于c# - 有条件地操作 StackExchange.Redis 中的哈希依赖于一些同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com