在Redis中的单个命令中将RPUSH与TTL一起使用

时间:2019-01-27 13:01:30

标签: redis spring-data-redis lettuce

我正在尝试在Redis中将列表中的条目推入,并且还希望每次有新条目进入时都更新列表的TTL。我可以使用以下方式简单地调用EXPIRE“ my-list” ttl Redis。由于我的应用程序流量很大,我想减少对Redis的调用次数。

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

1 个答案:

答案 0 :(得分:2)

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