首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Redis中生成序列号?

如何在Redis中生成序列号?
EN

Stack Overflow用户
提问于 2016-10-20 13:37:00
回答 2查看 2.4K关注 0票数 1

我需要由Redis服务器生成的一系列数字。与abc:20160912185342000000000123类似,粗体数字是当前日期,其余数字是redis提供的序列号。

EN

回答 2

Stack Overflow用户

发布于 2016-10-20 21:02:00

实现这一目标的Lua脚本如下所示:

代码语言:javascript
复制
eval "local count = redis.call('incr','sequence_number')\n return ARGV[1] .. ':' .. ARGV[2] .. count" 0 abc 20160912

这假设序列号将存储在名为sequence_number的键中,并且每次计算此脚本时都会增加一个。如果sequence_number不存在,它将被创建,其初始值为1。

在调用EVAL时,必须提供当前日期和前缀字符串。似乎您无法在Redis脚本中调用os.date。

与通常的Redis脚本一样,您可以通过使用EVALSHA发送表示Lua脚本的字符串的SHA1来避免对脚本进行系统评估。只有在EVALSHA失败时才使用EVAL发送整个脚本(这意味着脚本没有缓存在Redis中)。

票数 2
EN

Stack Overflow用户

发布于 2016-10-20 16:34:57

就其本身而言,瑞迪斯是做不到的。这里有两个解决这个问题的选择:

  1. 卢阿剧本。
  2. 应用程序层中的生成器。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40156067

复制
相关文章

相似问题

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