redis~lua脚本的使用

经过lua脚原本运行redis命令主要体如今批量执行和跨语言方面,咱们能够经过redis.call()函数来执行lua脚本,下面介绍几个lua里的参数redis

eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
  1. eval表明执行Lua语言的命令。
  2. lua-script表明Lua语言脚本。
  3. key-num表示参数中有多少个key,须要注意的是Redis中key是从1开始的,若是没有key的参数,那么写0。
  4. [key1 key2 key3…]是key做为参数传递给Lua语言,也能够不填,可是须要和key-num的个数对应起来。
  5. [value1 value2 value3 …]这些参数传递给Lua语言,他们是可填可不填的。

实例

在redis里添加一个foo,值是lind函数

eval "return redis.call('set',KEYS[1],ARGV[1])" 1  foo value

下面这个实例是实现分布锁的lua脚本lua

local lockClientId = redis.call('GET', KEYS[1])\n" +
					"if lockClientId == ARGV[1] then\n" +
					"  redis.call('PEXPIRE', KEYS[1], ARGV[2])\n" +
					"  return true\n" +
					"elseif not lockClientId then\n" +
					"  redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2])\n" +
					"  return true\n" +
					"end\n" +
					"return false"

这个脚本与开发语言没有关系。code

相关文章
相关标签/搜索