redis - Redis 竞争条件:`Keys *` 有时会返回错误数量的键
问题描述
我有 2 个应用程序。第一个是编写键,例如
SET MyKey_1
SET MYKey_2
然后通过网络向第二个应用程序发送通知。
其他应用程序等待通知,然后计算数据库中有多少具有特定前缀的键:
KEYS MyKey_*
如果密钥计数与预期不同,则会引发错误:
waitNotification(firstAppSocket)
if redisCount("KEYS MyKey_*") != 2 {
panic("wrong key count")
}
有时我遇到第一个应用程序设置密钥并从 Redis 接收 OK,通知第二个应用程序,但计数返回 1 的竞争条件。这大约发生。10 次中有 1 次。如果我在很短的超时(说微秒)后重试计数操作,它就会变得正确。
Redis 中是否存在此类操作的竞争条件?是否存在关键人口超时?
解决方案
推荐阅读
- android-intent - 通过语音识别发送短信
- android - 如何从firebase数据库中的侧键中检索值?
- bigdata - 包含大量数据的聚类
- python - Python:解析 ESMA(欧洲金融管理局)XML 文件
- react-native-fbsdk - 如何使用 AppEventsLogger.logEvent() 正确记录标准事件?
- stm32 - 如何设置 DWT 以记录 STM32H7 ETM 上的执行跟踪
- instagram - 如何找到 Instagram 开发者支持?
- android - 当客户端调用 WorkManager.initialize() 时,WorkManager 在库中不起作用
- hibernate - Spring data JPA Hibernate-java.sql.SQLException:无法添加外键约束
- jupyter-notebook - 如何在 macOS Catalina(没有 anaconda)上使用 Jupyter Notebook?