在 Redis 中存储和使用 Lua 脚本

我刚刚发现 Redis 和 Lua 中的脚本,如果我错过了一些重要的点,请原谅。但是,有没有理由不在 Redis 中保存一些 Lua 函数以便重复使用,作为某种模块加载?下面是一个简单的示例:

redis 127.0.0.1:6379> set keyCount "return function(...) return table.getn(redis.call('keys', arg[1])) end"
redis 127.0.0.1:6379> eval "return loadstring(redis.call('get', KEYS[1]))()(ARGV[1])" 1 keyCount *
点赞
用户3160475
用户3160475

将 Lua 脚本源代码存储在 Redis Key 中

你可以把 Lua 脚本源代码存储在 Redis keys 中,这并不会阻止你按照所描述的方式操作。

另外,我也有一个类似的点子:https:// gist.github.com/itamarhaber/e030fad40c5583b11e01

编辑:为了确保我们在同一页面上,虽然你可以这么做,但你可能不应该这样做。因为这会与集群分片的机制产生冲突。

2016-03-31 16:07:37
用户204011
用户204011

你可以这样做,但它并不是真正有用的。你应该考虑使用EVALSHA

2016-03-31 20:17:41