(转) Lua: 给 Redis 用户的入门指导
Hello, Lua!
1
|
local msg = "Hello, world!"
|
print?
1
|
local link_id = redis.call("INCR", KEY[1])
|
2
|
redis.call("HSET", KEYS[2], link_id, ARGV[1])
|
3
|
return link_id
|
- 表是基于1的,也就是说索引以数值1开始。所以在表中的第一个元素就是mytable[1],第二个就是mytable[2]等等。
- 表中不能有nil值。如果一个操作表中有[1, nil, 3, 4],那么结果将会是[1]——表将会在第一个nil截断。
1
|
redis-cli EVAL "$(cat incr-and-stor.lua)"2 links:counter links:urls http://malcolmgladwellbookgenerator.com/
|
print?
1
|
local link_id = redis.call("INCR", "links:counter")
|
print?
1
|
if redis.call("EXISTS",KEYS[1]) == 1 then
|
2
|
return redis.call("INCR",KEYS[1])
|
3
|
else
|
4
|
return nil
|
5
|
end
|
print?
1
|
redis-cli SCRIPT LOAD "return 'hello world'"
|
3
|
脚本加载与注册执行
print?
1
|
redis-cli SCRIPT LOAD "return 'hello world'"
|
3
|
何时使用Lua
访问库
print?
1
|
if redis.call("EXISTS", KEYS[1]) == 1 then
|
2
|
local payload = redis.call("GET", KEYS[1])
|
3
|
return cjson.decode(payload)[ARGV[1]]
|
4
|
else
|
5
|
return nil
|
6
|
end
|
1
|
redis-cli set apple '{ "color": "red", "type": "fruit" }'
|
2
|
=> OK
|
3
|
print?
1
|
if redis.call("EXISTS", KEYS[1]) == 1 then
|
2
|
local payload = redis.call("GET", KEYS[1])
|
3
|
return cmsgpack.unpack(payload)[ARGV[1]]
|
4
|
else
|
5
|
return nil
|
6
|
end
|
数值转换
print?
1
|
local indiana_pi = 3.2
|
2
|
return indiana_pi
|
1
|
local indiana_pi = 3.2
|
2
|
redis.call("SET", "pi", indiana_pi)
|
3
|
return redis.call("GET", "pi")
|
总结:
- 表是Lua中的表达式,与很多流行语言不同。KEYS中的第一个元素是KEYS[1],第二个是KEYS[2](译注:不是0开始)
- nil是表的结束符,[1,2,nil,3]将自动变为[1,2],因此在表中不要使用nil。
- redis.call会触发Lua中的异常,redis.pcall将自动捕获所有能检测到的错误并以表的形式返回错误内容。
- Lua数字都将被转换为整数,发给Redis的小数点会丢失,返回前把它们转换成字符串类型。
- 确保在Lua中使用的所有KEY都在KEY表中,否则在将来的Redis版中你的脚本都有不能被很好支持的危险。
- Lua脚本和其它Redis操作一样,在脚本执行时,其它的一切都不能运行。考虑用脚本来护展Redis服务器能力,但要保持短小和有用。
补充读物补充读物
Lua Reference ManualLua Tutorial DirectoryEVAL Docsevalsha.com — 偶尔会有垃圾邮件,但内容很好(译注:里面有很多的Lua脚本,以EVALSHA方式提供,超棒,希望对你有用。)
转载于:https://www.cnblogs.com/xiaouisme/p/3922767.html
(转) Lua: 给 Redis 用户的入门指导相关推荐
- Lua:给Redis用户的入门指导
可能你已经听说过Redis中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lua ...
- Lua: 给 Redis 用户的入门指导
可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lu ...
- Redis框架从入门到学精(全)
目录 前言 1.NoSQL 1.1 其他数据库 2.Redis 2.1 软件安装 2.2 数据类型 2.2.1 key值键位 2.2.2 string字符串 2.2.3 list列表 2.2.4 se ...
- 史上最萌最认真的机器学习/深度学习/模式识别入门指导手册(一)
喵喵喵~大家元宵节快乐噢.有没有要陪小夕出去看烟花的吖... 小夕借此给热爱学习的喵喵们献上这篇拙文,希望不要嫌弃哦~ 还有,小夕画的封面图是不是很棒呀( ̄∇ ̄) 小夕发现现在想进军人工智能领域的程序 ...
- mdin偏移_C8051F020入门指导重点.ppt
C8051F020入门指导重点 4.4 看门狗定时器复位 MCU 内部有一个使用系统时钟的可编程看门狗定时器(WDT).当看门狗定时器溢出时,WDT 将强制CPU 进入复位状态. 为了防止复位,必须在 ...
- 2.写给设计师看的HTMLCSS入门指导
转自:http://www.uisdc.com/html-and-css-guide 整体简介 在开始学习HTML&CSS之前,首先要搞清楚两者的区别.两者在整体上有着很明显的差异. 整体看来 ...
- Zigbee入门指导(二)
Zigbee入门指导(二) 2010年08月06日 Zigbee入门指导(二) ――运行Zigbee例程 logiclimit 在Zigbee入门指导(一)中讲解了基于CC2430的Zigbee开发环 ...
- Zigbee入门指导(二)mdash;mdash;运行Zigbee例程
Zigbee入门指导(二) --运行Zigbee例程 logiclimit 在Zigbee入门指导(一)中讲解了基于CC2430的Zigbee开发环境的搭建,安装完Ti的协议栈后,里面有多个例程,帮助 ...
- 《用户至上:用户研究方法与实践》用户体验入门
本节书摘来自华章出版社<用户至上:用户研究方法与实践>一书中的第1章,第1节,作者凯茜·巴克斯特(Kathy Baxter)[美] 凯瑟琳·卡里(Catherine Courage)凯莉· ...
最新文章
- ef关联多实体查询_Mybatis基本知识十二:关联关系查询之延迟加载:侵入式延迟加载...
- python比java简单好学-21、PHP和python/JAVA比,哪个更好学?
- 部署 Communicator Web Access
- Django框架(三)—— orm增删改查、Django生命周期
- H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
- python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)...
- java 热布署 开源_一种简单快捷的 java 热部署方式
- 软件测试宝藏图_tSQLt –数据库单元测试中被遗忘的宝藏
- linux apache 403 forbidden,apache服务器显示403 Forbidden的原因和解决方法
- c#明华rf读卡器_C#调用第三方API接口-案例明华读卡器
- RedHatLinux新手入门教程(4)(转)
- C语言实现俄罗斯方块
- linux下载flink安装包
- ad怎么查接线_Altium怎么进行线路的开路检查?
- 制作Android系统App
- vue 背景图 自适应_Vue的自适应视频背景播放器
- OCP考试如何确定考试中心
- 【k8s的持久化存储】PV、PVC、StorageClass讲解
- NYOJ628 小媛在努力
- MCU踩坑记录:SWD复用为GPIO使用,Jflash连不上的问题
热门文章
- linux怎么查看服务器主频,Linux环境下查看服务器硬件信息
- python 嵌套类实例_使用dict访问Python中嵌套的类实例
- 在群晖synoboot.img引导文件中加入网卡驱动_群晖DS1819+使用记录
- 计算机视觉(一)——深度学习
- 最新发布|深度学习必学“圣经”花书出视频课了!附带论文代码精读讲解!
- CNN提取文本特征,融合PMF模型实现推荐系统
- java for mat,在Java绑定中通过OpenCV Mat进行循环
- android 获取GPS定位,
- kali安装步骤失败 选择并安装软件_7Zip v19.00 软件安装步骤
- JQuery_九大选择器