b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

脚本解释器开源lua一、引言Redis学了一段时间了,基本(2)

电脑杂谈  发布时间:2018-02-07 22:25:19  来源:网络整理

redis支持大部分Lua标准库

库名说明

2、在脚本中调用redis命令

在脚本中可以使用redis.call函数调用Redis命令

redis.call('set', 'foo', 'bar')

local value=redis.call('get', 'foo') --value的值为bar

redis.call函数的返回值就是Redis命令的执行结果

脚本解释器是什么_lua解释器下载_脚本解释器开源lua

redis返回值类型和Lua数据类型转换规则

redis返回值类型Lua数据类型

redis还提供了redis.pcall函数,功能与redis.call相同,唯一的区别是当命令执行出错时,redis.pcall会记录错误并继续执行,而redis.call会直接返回错误,不会继续执行。在脚本中可以使用return语句将值返回给客户端,如果没有执行return语句则默认返回nil

Lua数据类型和redis返回值类型转换规则

Lua数据类型redis返回值类型

3、脚本相关命令

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

通过key和arg这两类参数向脚本传递数据,它们的值在脚本中分别使用KEYS和ARGV两个表类型的全局变量访问。

script: 是lua脚本

numkeys:表示有几个key,分别是KEYS[1],KEYS[2]...,如果有值,从第numkeys+1个开始就是参数值,ARGV[1],ARGV[2]...

注意: EVAL命令依据参数numkeys来将其后面的所有参数分别存入脚本中KEYS和ARGV两个table类型的全局变量。当脚本不需要任何参数时,也不能省略这个参数(设为0)

4、 EVALSHA命令

在脚本比较长的情况下,如果每次调用脚本都需要将整个脚本传给Redis会占用较多的带宽。为了解决这个问题,Redis提供了EVALSHA命令,允许开发者通过脚本内容的SHA1摘要来执行脚本,该命令的用法和EVAL一样,只不过是将脚本内容替换成脚本内容的SHA1摘要。

Redis在执行EVAL命令时会计算脚本的SHA1摘要并记录在脚本缓存中,执行EVALSHA命令时Redis会根据提供的摘要从脚本缓存中查找对应的脚本内容,如果找到了则执行脚本,否则会返回错误:"NOSCRIPT No matching script. Please use EVAL."

在程序中使用EVALSHA命令的一般流程如下。

1)、先计算脚本的SHA1摘要,并使用EVALSHA命令执行脚本。

2)、获得返回值,如果返回“NOSCRIPT”错误则使用EVAL命令重新执行脚本。

虽然这一流程略显麻烦,但值得庆幸的是很多编程语言的Redis客户端都会代替开发者完成这一流程。执行EVAL命令时,先尝试执行EVALSHA命令,如果失败了才会执行EVAL命令。

SCRIPTLOAD "lua-script" 将脚本加入缓存,但不执行, 返回:脚本的SHA1摘要

SCRIPT EXISTS lua-script-sha1 判断脚本是否已被缓存

5、 SCRIPT FLUSH(该命令不区分大小写)

清空脚本缓存,redis将脚本的SHA1摘要加入到脚本缓存后会永久保留,不会删除,但可以手动使用SCRIPT FLUSH命令情况脚本缓存。

6、SCRIPT KILL(该命令不区分大小写)

强制终止当前脚本的执行。 但是,如果当前执行的脚步对redis的数据进行了写操作,则SCRIPT KILL命令不会终止脚本的运行,以防止脚本只执行了一部分。脚本中的所有命令,要么都执行,要么都不执行。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-66087-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...