我需要由Redis服务器生成的一系列数字。与abc:20160912185342000000000123类似,粗体数字是当前日期,其余数字是redis提供的序列号。
发布于 2016-10-20 21:02:00
实现这一目标的Lua脚本如下所示:
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中)。
发布于 2016-10-20 16:34:57
就其本身而言,瑞迪斯是做不到的。这里有两个解决这个问题的选择:
https://stackoverflow.com/questions/40156067
复制相似问题