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

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'下查看类型


http://www.kler.cn/news/148778.html

相关文章:

  • Android:FragmentTransaction
  • a-range-picker 时间选择器的默认日期显示,日期格式化
  • OMP: Error #15: Initializing libiomp5md.dll
  • C语言——求π的近似值
  • 第八节HarmonyOS @Component自定义组件的生命周期
  • 【Qt之QSqlTableModel】介绍及使用
  • u-popup组件在UniApp中的讲解
  • Unity 关于生命周期函数的一些认识
  • 【创建一个组件并通过npm让其他人安装和调用】
  • 【数据结构】排序效率最优解之一:二叉树-堆
  • .netcore 获取appsettings
  • Leetcode—58.最后一个单词的长度【简单】
  • Linux处理文件常见命令
  • 基于合成数据的行人检测AI模型训练
  • 火柴人版王者-Java
  • java使用freemarker模板生成html,再生成pdf
  • 利用Spring Boot构建restful web service的详细流程
  • Nginx系列-正向代理和反向代理
  • Vue3+java开发组队功能
  • 【hive-design】hive架构详解:描述了hive架构,hive主要组件的作用、hsql在hive执行过程中的底层细节、hive各组件作用
  • Java中关于ArrayList集合的练习题
  • Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持
  • 【泛型】JAVA基础篇(三)
  • 基于矢量控制的永磁同步电机调速系统
  • 带你用uniapp从零开发一个仿小米商场_5. 公共样式编写,
  • Elasticsearch 线上实战问题及解决方案探讨
  • 八股文面试day6
  • 视频号小店怎么运营?具体操作详解!
  • [MySQL--基础]函数、约束
  • 如何编写自己的python包,并在本地进行使用