redis lua

由于redis中内置了一个lua解释器,使得redis可以执行一段lua代码,通过使用EVAL来执行(咱们这边很少用到).
今天在对hashtable进行匹配的时候研究了一下,感觉很神奇,下面是我们可能会用到的一些case, 有兴趣的可以看下。

1. 这是是一个对redis的hashtable的field进行模糊匹配,并返回field对应的value的一个例子:

2. 利用这个特性,我们还可以在redis做一些简单的逻辑,比如下面的(如果key1存在,那么就'set key2 value2',并返回OK,否则返回ERROR):

3. 因为redis很少会出现命令执行失败(除非网络、内存的一些限制),所以我们可以利用EVAL可是实现一个不是很严格的事务.
下面这个例子能保证:命令'set key1 value1' 和 命令'set key2 value2' 同时成功的时候返回'OK',否则返回nil:

4. 利用EVAL实现按顺序执行一串命令:

5. 为了节省脚本所占带宽,可以通过'SCRIPT LOAD'命令将一个脚本装载到redis中,然后通过'EVALSHA'来执行这个脚本:

6. 其他:
1). 利用EVAL执行的脚本具有原子性;
2). EVAL执行的脚本中不允许使用全局变量;
3). redis内置的lua解释器预加载了这些lua库:base、table、string、math、debug、cjson、cmsgpack等;
4). 在脚本中可以写redis日志:redis.log(loglevel, message);
5). 为了防止脚本中出现死循环,可以通过配置'lua-time-limit'来限制脚本执行的最长时间;
6). TODO。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值