redis - 如何在 Redis 中生成序列号?

标签 redis

我需要 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/

相关文章:

node.js - 从Redis获取key同时过期

mysql - 使用 Redis 缓存实时单页应用程序中使用的数据

python - redis - 将空列表与不存在的列表区别对待?

python - 最大内存 redis heroku django

ruby-on-rails - 根据位置创建缓存键

node.js - Angular 2、Laravel 5.2 和 ioredis 实时应用程序

ruby-on-rails - rspec 测试随机失败

php - 如何在 PHP 单元测试中使用 Redis()?

c# - 如何获取 StackExchange.Redis 的键计数?

Redis:如何存储用户哈希列表并检索它?