- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Redis命令参考(中文版)
Redis 命令参考(中文版)——Script(脚本)
目录
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc324510297 Script(脚本) PAGEREF _Toc324510297 \h 1
HYPERLINK \l _Toc324510298 EVAL PAGEREF _Toc324510298 \h 1
HYPERLINK \l _Toc324510299 SCRIPT FLUSH PAGEREF _Toc324510299 \h 17
HYPERLINK \l _Toc324510300 SCRIPT LOAD PAGEREF _Toc324510300 \h 17
HYPERLINK \l _Toc324510301 SCRIPT EXISTS PAGEREF _Toc324510301 \h 18
HYPERLINK \l _Toc324510302 SCRIPT KILL PAGEREF _Toc324510302 \h 20
Script(脚本)
EVAL
EVAL script numkeys key [key ...] arg [arg ...]
从 Redis 2.6.0 版本开始,通过内置的 Lua 解释器,可以使用 HYPERLINK /en/latest/script/eval.html \l eval EVAL 命令对 Lua 脚本进行求值。
script 参数是一段 Lua 5.1 脚本程序,它会被运行在 Redis 服务器上下文中,这段脚本不必(也不应该)定义为一个 Lua 函数。
numkeys 参数用于指定键名参数的个数。
键名参数 key [key ...] 从 HYPERLINK /en/latest/script/eval.html \l eval EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。
在命令的最后,那些不是键名参数的附加参数 arg [arg ...] ,可以在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] 、 ARGV[2] ,诸如此类)。
上面这几段长长的说明可以用一个简单的例子来概括:
eval return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]} 2 key1 key2 first second
1) key1
2) key2
3) first
4) second
其中 return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]} 是被求值的 Lua 脚本,数字 2 指定了键名参数的数量, key1 和 key2 是键名参数,分别使用 KEYS[1] 和 KEYS[2] 访问,而最后的 first 和 second 则是附加参数,可以通过 ARGV[1] 和 ARGV[2] 访问它们。
在 Lua 脚本中,可以使用两个不同函数来执行 Redis 命令,它们分别是:
redis.call()
redis.pcall()
这两个函数的唯一区别在于它们使用不同的方式处理执行命令所产生的错误,在后面的『错误处理』部分会讲到这一点。
redis.call() 和 redis.pcall() 两个函数的参数可以是任何格式良好(well formed)的 Redis 命令:
eval return redis.call(set,foo,bar) 0
OK
需要注意的是,上面这段脚本的确实现了将键 foo 的值设为 bar 的目的,但是,它违反了 HYPERLINK /en/latest/script/eval.html \l eval EVAL 命令的语义,因为脚本里使用的所有键都应该由 KEYS 数组来传递,就像这样:
eval return redis.call(set,KEYS[1],bar) 1 foo
OK
要求使用正确的形式来传递键(key)是有原因的,因为不仅仅是 HYPERLINK /en/latest/script/eval.html \l eval EVAL 这个命令,所有的 Redis 命令,在执行之前都会被分析,籍此来确定命令会对哪些键进行操作。
因此,对于 HYPERLINK /en/latest/script/eval.html \l eval EVAL 命令来说,必须使用正确的形式来传递键,才
您可能关注的文档
最近下载
- 2012、2014-2019年华中科技大学《431金融学综合》历年考研真题汇总(含部分答案).pdf
- 个人信用报告征信简版电子版PDF版2024年2月必威体育精装版版带水印可编辑.pdf
- 浅析欧莎服装品牌新媒体营销策略.docx
- 中班音乐《小老鼠打电话》PPT课件.pptx
- 中国自然地理:华北地区PPT.pptx
- 《地球脉动3》招商通案.pdf
- 锥坡工程量计算(支持斜交、溜坡计算).xls VIP
- 消防救援作战训练安全1.pptx VIP
- 河北省唐山市路北区2023-2024学年数学三年级第一学期期末质量检测试题含答案.doc
- 21版《思想道德与法治》 第三节:投身崇德向善的道德实践5.3 课件.ppt
文档评论(0)