一、概述
最近在公司项目中,使用 Lua 脚本操作 Redis 数据库。期间遇到了一些问题,特辟文以记之,望给诸君以参考。
二、获取系统资源的问题
redis lua 为了安全考虑,屏蔽了很多的基本命令,比如 os.time(), Date, hash,loadfile函数等 。
三、小技巧
3.1 清空 list 内容,但不删除 list key
ltrim key 1 0
网上对这个问题进行了诸多讨论,最终我找到了这篇 帖子 给的解决方案。
3.2 获取系统时间
redis.call(“TIME”)
虽然 Redis Lua 屏蔽了获取时间的 os.data() 命令,但是我们还可以通过 redis.call(“TIME”)
可以拿到时间戳,但这个时间戳不能写入任务的一个键值里,只能提供比对的功能。
在 stackoverflow 的一篇帖子 get-current-date-and-time-in-lua-in-redis 有提到这个方法,同时另外一篇帖子 how-to-determine-the-execution-time-of-a-lua-script-in-redis 对该问题的解决也有一定的帮助。
在 Redis 社区,我找到了一篇相关的帖子 How best to store time series values in Redis for caching