redis脚本

Posted sd880413

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis脚本相关的知识,希望对你有一定的参考价值。

redis脚本使用lua解释器来执行脚本,redis2.6版本通过内嵌支持lua环境,执行脚本的常用命令为eval

eval命令

语法:eval script numkeys key  [key ...] arg [ arg ...]

实例:

script:参数是一段脚本程序,脚本不必(也不应该)定义为一个Lua函数。

numberkeys:用于指定键名参数的个数。

key【key...】 :从eval的第三个参数开始算起,表示在脚本中所用的到那些redis键(key),这些键名参数可以在Lua中通过全局变量keys数组,用1位基址的形式访问(keys[1],keys[2])

arg [arg ...]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

技术分享图片
1 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],KEYS[3],ARGV[1],ARGV[2],ARGV[3]}" 3 shi zhang yang 23 21 20
2 1) "shi"
3 2) "zhang"
4 3) "yang"
5 4) "23"
6 5) "21"
7 6) "20"
View Code

 

evalsha命令

evalsha命令根据给定的sha1校验码,执行缓存在服务器中的脚本。

将脚本缓存到服务器的操作可以通过SCRIPT LOAD命令进行。

这个命令的其他地方,不如参数的传入方式,都喝EVAL命令一样。

evalsha命令基本语法: evalsha  sha1  numkeys  key [key...]  arg[arg ...]

sha1:通过SCRIPT LOAD 生成的sha1校验码。

key [key ...]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。

arg [arg ...]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。

实例:

技术分享图片
1 127.0.0.1:6379> script load "return ‘hello moto‘"
2 "232fd51614574cf0867b83d384a5e898cfd24e5a"
3 127.0.0.1:6379> evalsha "232fd51614574cf0867b83d384a5e898cfd24e5a" 0 
4 "hello moto"
View Code

 

以上是关于redis脚本的主要内容,如果未能解决你的问题,请参考以下文章

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

如何在 Toad for Oracle 中使用自定义代码片段?

如何利用redis来进行分布式集群系统的限流设计

jedis连接redis

Redis主从与哨兵架构详解 Redis主从架构 如何在同一台机器搭建主从架构 Redis主从工作原理 数据部分复制 Jedis使用 Redis的管道(Pipeline) Redis Lua脚本(代码