建议先关注、点赞、收藏后再阅读。
EVAL命令是Redis提供的功能之一,它可以让用户在Redis中执行Lua脚本。
Lua脚本是作为字符串参数传递给EVAL命令的,并在计算节点上执行。脚本可以包含任何有效的Lua代码,并且可以通过调用Redis提供的Lua API来访问和操作Redis数据。
# 向Redis中添加一个键值对 > SET mykey 10 OK # 使用EVAL命令执行Lua脚本 > EVAL "return redis.call('GET', 'mykey')" 0 "10"
在上面的示例中,首先使用SET命令将一个键值对(mykey, 10)添加到Redis中。然后,使用EVAL命令执行Lua脚本,该脚本简单地从Redis中获取"mykey"的值,并将其作为结果返回。
结果以字符串形式返回,即’10’,与之前设置的值相同。
需要注意的是,EVAL命令的第一个参数是Lua脚本本身,第二个参数是脚本的KEYS数组的长度,后跟各个键名参数。在上述示例中,脚本没有使用任何键名参数,因此将0作为第二个参数传递给EVAL命令。
EVALSHA命令用于执行一个事先存储在Redis中的Lua脚本,并返回脚本的执行结果。它与EVAL命令的作用类似,但是EVALSHA命令执行的是预先计算好的SHA1摘要值所对应的脚本,而不需要将脚本的内容传输到Redis服务器。
EVALSHA "9a9180b593831d8d7c481424129625a43bee9eea" 2 key1 key2 arg1 arg2
该命令将执行SHA1摘要值为“9a9180b593831d8d7c481424129625a43bee9eea”的脚本,同时传递key1,key2,arg1,arg2作为脚本的参数。