redis cluster 与lua的结合使用

来源:互联网 发布:seo自然排名 编辑:程序博客网 时间:2024/05/22 17:26

redis集群搭建请自行百度

redis cluster tutorial :https://redis.io/topics/cluster-tutorial

redis中lua的应用:https://segmentfault.com/a/1190000007892988

已有redis (3.2.5)集群如下图:



tips:请注意命令中的端口变化


先连接某个实例,设置key,执行如下命令,key中带了hash tag

[root@iz2ze8wdyinfuhcncz3me3z src]# ./redis-cli -c -p 6388
127.0.0.1:6388> set {a}.foo 9


demo1:

ua脚本:

local s = redis.call('get',KEYS[1]);return s;
在redis安装目录下,放置如下脚本,切换到redis/src下,执行如下命令:

./redis-cli -c -p 6381 --eval ../a.lua {a}.foo
输出9.


demo2:

lua脚本:

local times = redis.call('incr',KEYS[1]);if times == 1 then    redis.call('expire',KEYS[1], ARGV[1]);endif times > tonumber(ARGV[2]) then    return 0;endreturn 1;

在redis安装目录下,放置如下脚本,切换到redis/src下,执行如下命令(逗号左右皆有空格):

./redis-cli -c -p 6381 --eval ../a.lua {a}.foo , 10 9

输出0.


demo3:

先预设key:

先连接某个实例,设置key,执行如下命令,key中带了hash tag

[root@iz2ze8wdyinfuhcncz3me3z src]# ./redis-cli -c -p 6388
127.0.0.1:6388> set {a}.foo 9

127.0.0.1:6381> set {a}.bar 8

lua脚本:

local a = redis.call('get',KEYS[1]);local b = redis.call('get',KEYS[2]);local r = (a+b)*ARGV[1]+ARGV[2];return r;

在redis安装目录下,放置如下脚本,切换到redis/src下,执行如下命令(逗号左右皆有空格):

[root@iz2ze8wdyinfuhcncz3me3z src]# ./redis-cli -c -p 6381 --eval ../a.lua {a}.foo {a}.bar , 10 3

输出173.



0 0
原创粉丝点击