【问题标题】:Using RPUSH with TTL in a single command in Redis在 Redis 的单个命令中使用带有 TTL 的 RPUSH
【发布时间】:2019-01-27 13:01:29
【问题描述】:

我正在尝试在 Redis 的列表中推送一个条目,并且还想在每次有新条目进入时更新列表的 TTL。我可以通过简单地调用 EXPIRE“my-list”ttl 来做到这一点雷迪斯。由于我的应用程序正在接收大量流量,因此我想减少对 redis 的调用次数。

我可以在 Redis 的推送操作期间设置我的 TTL,即 RPUSH "mylist" I1 I2...IN ex "TTL",redis 是否支持此命令时间功能。我可以看到它确实支持 String 数据结构。

【问题讨论】:

    标签: redis spring-data-redis lettuce


    【解决方案1】:

    Redis 没有专门的命令来推送和使 List 过期,尽管正如您所提到的,它确实有类似 String 数据类型的命令。

    您应对这一挑战的方式是从现有的“命令”中编写自己的“命令”。但是,您可以使用 EVAL documentation page 中解释的 Lua 脚本,而不是让您的应用程序调用这些命令。

    Lua 脚本被缓存并在服务器上自动运行。下面的一个可能会对您的情况有所帮助 - 它希望获得键名、推送的元素和到期值:

    local reply = redis.call('RPUSH', KEYS[1], ARGV[1])
    redis.call('EXPIRE', KEYS[1], ARGV[2])
    return reply
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2018-03-03
      • 2017-01-15
      • 2018-04-09
      相关资源
      最近更新 更多