너 바보 아니야

redis lua的使用

2022-01-13

lua

1、redis Eval 命令基本语法:

redis 127.0.0.1:6379> EVAL script numkeys key [key …] arg [arg …]

参数说明:

  • script: 参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数。
  • numkeys: 用于指定键名参数的个数。
  • key [key …]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
  • arg [arg …]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。
1
2
3
4
5
redis 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 i am hello lua
1) "i" //key1
2) "am" //key2
3) "hello" //arg1
4) "lua" //arg2

2、redis SCRIPT LOAD 命令基本语法:

redis 127.0.0.1:6379> SCRIPT LOAD script

使用说明:

  • 用于将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。
  • 如果给定的脚本已经在缓存里面了,那么不执行任何操作。
  • 加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。
  • 脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。
1
2
redis 127.0.0.1:6379> SCRIPT LOAD "return 1"
"e0e1f9fabfc9d4800c877a703b823ac0578ff8db"

3、redis Evalsha 命令基本语法:

redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key …] arg [arg …]

参数说明:

  • sha1 : 通过 SCRIPT LOAD 生成的 sha1 校验码。
  • numkeys: 用于指定键名参数的个数。
  • key [key …]: 从 EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
  • arg [arg …]: 附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。
1
2
3
4
5
redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"
"232fd51614574cf0867b83d384a5e898cfd24e5a"

redis 127.0.0.1:6379> EVALSHA "232fd51614574cf0867b83d384a5e898cfd24e5a" 0
"hello moto"

4、redis Script Exists 命令基本语法:

redis 127.0.0.1:6379> SCRIPT EXISTS sha1 [sha1 …]

返回值说明:

  • 0 : 表示脚本不存在于缓存。
  • 1 : 表示脚本已经在缓存里面了。
1
2
3
4
5
redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"    # 载入一个脚本
"232fd51614574cf0867b83d384a5e898cfd24e5a"

redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 1

5、redis Script Flush 命令基本语法:

redis 127.0.0.1:6379> SCRIPT FLUSH

使用说明:

  • 清除所有 Lua 脚本缓存。
1
2
redis 127.0.0.1:6379> SCRIPT FLUSH
OK
使用支付宝打赏
使用微信打赏

欢迎点击上方按钮对我打赏,谢谢你给我吃糖果