在redis中存储和使用lua脚本

时间:2016-03-31 15:43:06

标签: lua redis

我真的花了5分钟发现redis和lua中的脚本如果我错过了一些重点,请原谅我,但有没有理由不保存一些 lua函数 redis 中重新用作某种模块加载?粗略的例子:

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 *

2 个答案:

答案 0 :(得分:1)

你可以这样做,但它并没有用。您应该使用EVALSHA代替。

答案 1 :(得分:0)

没有什么可以阻止你做你所描述的,即将Lua脚本源存储在Redis键中。

关于同一主题,我有一个小小的想法:https://gist.github.com/itamarhaber/e030fad40c5583b11e01

编辑:只是为了确保我们在同一页面上,虽然没有什么可以阻止你,但你也可能不应该...这不会很好地发挥作用群集的分片。