首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高并发插入

高并发插入
EN

Stack Overflow用户
提问于 2014-02-14 05:22:51
回答 1查看 146关注 0票数 0

我试图将评论存储在redis数据库中。我的数据结构:

  • z列表,我持有commentId。让我们commentId = 3。
  • 和哈希类似的comment:3评论文本,ip,用户代理和评论时间。

当我首先做zadd时,我从它得到最大Id,然后加上1-它将是新的Id。

当同时添加两个注释时,问题就开始了。它们都可以获得相同的Id,然后在散列表中可能丢失一个注释。

那么,如何在高并发性下不重复地计算newId呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 05:28:16

Lua脚本包装您的两个步骤过程并调用它。因为redis是单线程的,所以lua脚本调用将被序列化(=无竞争条件)。

替代方案

或者,您可以将注释id存储在一个可以英格尔的单独键中。这样,即使没有在脚本中包装两个步骤,它也应该工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21771436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档