我需要 Redis 服务器生成的一系列数字。 类似于 abc:20160912185342000000000123 这里粗体数字为当前日期,其余数字为redis提供的序列号。
最佳答案
实现此目的的 Lua 脚本如下所示:
eval "local count = redis.call('incr','sequence_number')\n return ARGV[1] .. ':' .. ARGV[2] .. count" 0 abc 20160912
这假定序列号将存储在一个名为 sequence_number
的键中,并且每次您评估此脚本时都会递增 1。如果 sequence_number 不存在,则创建它,其初始值为 1。
调用 EVAL 时必须提供当前日期和前缀字符串。看来您不能在 Redis Lua 脚本中调用 os.date。
与 Redis Lua 脚本一样,您可以通过使用 EVALSHA 发送表示 Lua 脚本的字符串的 SHA1 来避免对脚本进行系统评估。仅当 EVALSHA 失败时才使用 EVAL 发送整个脚本(这意味着脚本未缓存在 Redis 中)。
关于redis - 如何在 Redis 中生成序列号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40156067/