当前位置: 首页 > news >正文

redis运维(十九)redis 的扩展应用 lua(一)

一  redis 的扩展应用 lua

redis如何保证原子操作

说明:引入'lua脚本',核心解决'原子性'问题

①  redis为什么引入lua?

lua脚本本身'体积小',启动'速度快'

②  redis引入lua的优势

小结: 类似'自定义redis命令'

③  redis中如何使用lua

④  EVAL

说明: '内置'的 lua解释器的版本是'5.1','避免'语法'兼容性'问题注意: 从哪个版本redis引入'对lua'的支持语法: EVAL script numkeys key [key ...] arg [arg ...]

细节: '多个lua语句'之间使用'分号'隔开

需求: 在'lua脚本'中获取redis'相关参数'

⑤  call和pcall函数

需求'1':查看call和pcall函数'报错'的'差异性'

需求'2':call'函数'的使用

补充:'()'是pcall函数的参数,里面的参数'类似'在redis-cli客户端中'执行命令','逗号变成空格'

⑥  lua和redis的数据转换

思考:'何时发生'数据类型转换?

redis使用的数据类型

--- 获取一个参数
local expire = ARGV[1]--- 由于lua脚本接收到参数都会'转为String',如果要使用'数字'类型,必须'强转'
tonumber(expire)

⑦  lua类型redis类型

说明:eval命令的'返回值'的类型强调:lua脚本的'return 返回值'被转换成'redis数据结构'

备注:redis数据类型和lua数据类型并'不完全'对应

备注: 希望lua返回一个'浮点数',那么应该将它作为一个'字符串',比如'ZSCORE'命令

⑧  redis数据结构转换为lua类型

1、lua通过'redis.call()'或者'redis.pcall()'函数执行redis命令2、者两个函数调用'返回值'被转换成了'lua数据结构'测试方法:首先在lua脚本中'执行redis命令',然后'type'下查看类型

相关文章:

  • 如何下载OpenJDK及其源码
  • PHP 语法||PHP 变量
  • 睡前随笔记录
  • 含分布式电源的配电网可靠性评估matlab程序
  • Apache配置虚拟主机
  • 【双指针】有效三角形的个数
  • 6.2.SDP协议
  • 数据分析基础之《jupyter notebook工具》
  • OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建
  • Modbus TCP
  • SpringBoot问题
  • Django 入门学习总结8-管理页面的生成
  • 【qsort学习及改造冒泡排序能排序任何数】
  • 【数据结构】F : 道路建设 (Ver. I)
  • 【MySQL】InnoDB中的索引
  • AWS实战 - 利用IAM对S3做访问控制
  • JS笔记四:作用域、变量(函数)提升
  • LeetCode29.两数相除 JavaScript
  • opencv python Meanshift 和 Camshift
  • SpiderData 2019年2月13日 DApp数据排行榜
  • swift基础之_对象 实例方法 对象方法。
  • 对JS继承的一点思考
  • 翻译:Hystrix - How To Use
  • 翻译--Thinking in React
  • 基于遗传算法的优化问题求解
  • 看域名解析域名安全对SEO的影响
  • 盘点那些不知名却常用的 Git 操作
  • 我与Jetbrains的这些年
  • 线性表及其算法(java实现)
  • 找一份好的前端工作,起点很重要
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Spring Batch JSON 支持
  • 说说我为什么看好Spring Cloud Alibaba
  • ​Python 3 新特性:类型注解
  • #stm32整理(一)flash读写
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • %check_box% in rails :coditions={:has_many , :through}
  • (1)bark-ml
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (java)关于Thread的挂起和恢复
  • (分布式缓存)Redis哨兵
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计大学生兼职系统
  • (六)c52学习之旅-独立按键
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (原)本想说脏话,奈何已放下
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)ObjectiveC 深浅拷贝学习
  • (转)Scala的“=”符号简介
  • (转)编辑寄语:因为爱心,所以美丽
  • .gitattributes 文件
  • .Net IE10 _doPostBack 未定义
  • .net 受管制代码
  • ::什么意思
  • ?php echo ?,?php echo Hello world!;?