我需要Redis服务器生成的一系列数字。 像abc这样的东西: 20160912 185342000000000123 这里,粗体数字是当前日期,其余数字是redis提供的序列号。
答案 0 :(得分:2)
实现此目的的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中缓存)。
答案 1 :(得分:1)
Redis不能本身。这里有两个选项可以解决这个问题: