加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Redis进阶应用:Redis+Lua脚本实现复合操作

发布时间:2019-08-07 00:35:49 所属栏目:建站 来源:李崇
导读:一、弁言 Redis是高机能的key-value数据库,在很洪流平降服了memcached这类key/value存储的不敷,在部门场景下,是对相关数据库的精采增补。得益于超高机能和富厚的数据布局,Redis已成为当前架构计划中的首选key-value存储体系。 固然Redis官网上提供了20

这里借用一下官网的例子。

Redis进阶应用:Redis+Lua剧本实现切合操纵 

上述剧本直接返回了入参。

  • eval为Redis要害字; 
  • 第一个引号中的内容就是Lua剧本; 
  • 2为参数个数; 
  • key1和key2是KEYS[1]、KEYS[2]的入参; 
  • first和second是ARGV[1],ARGV[2]的入参。

各人可以简朴地将KEYS[1],KEYS[2], ARGV[1],ARGV[2]领略为占位符。

3.2 执行剧本文件缓和存剧本

假如只能在呼吁行中写剧本执行,碰着伟大的剧本措施岂不是会抓狂?

下面我们来看一下,怎样让Redis执行Lua剧本文件,同时也验证一下lua剧本的复用特征(往后我们再也不必要按期批量删除某些切合特定法则的key了)。

  1. Redis 127.0.0.1:6379> SCRIPT LOAD  script 
  2. Redis 127.0.0.1:6379> EVALSHA sha1  numkeys key [key ...] arg [arg ...] 

Redis提供了一个SCRIPTLOAD呼吁,呼吁后头的script即为Lua剧本。呼吁将剧本script添加到剧本缓存中,但并欠妥即执行这个剧本。执行呼吁后,Redis会返回一个SHA1串,第二个EVALSHA呼吁即可执行。

必要留意的是,剧本可以在缓存中保存无穷长的时刻,直到执行完SCRIPT FLUSH。我们来看一下结果。

Redis进阶应用:Redis+Lua剧本实现切合操纵 

Redis还支持直接执行Lua剧本文件。起首编写并存储一个Lua剧本。

Redis进阶应用:Redis+Lua剧本实现切合操纵 

然后挪用Redis-cli –eval呼吁。

Redis进阶应用:Redis+Lua剧本实现切合操纵 

Redis-cli –eval呼吁语法根基与原eval语法沟通。

3.3 行使Lua剧本实现compare and set 

compareand set的实现逻辑是这样的:起首获取Redis中指定key的value,然后与给定值举办较量:假如相称,则将key设定为方针值并返回一个标识符;假如不相称,则不作任何操纵并返回一个标识符。

  1. if Redis.call('get', KEYS[1]) == ARGV[1]  then 
  2.      Redis.call('set', KEYS[1], ARGV[2]); 
  3.      return 1 
  4. else 
  5.      return 0 end 

下面我们来测试一下这个剧本。

起首向Redis的指定key compareAndSet:key写入一个值value。

Redis进阶应用:Redis+Lua剧本实现切合操纵 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读