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.hqwc.cn/news/211960.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git clone -mirror 和 git clone 的区别

目录 前言两则区别git clone --mirrorgit clone 获取到的文件有什么不同瘦身仓库如何选择结语开源项目 前言 Git是一款强大的版本控制系统,通过Git可以方便地管理代码的版本和协作开发。在使用Git时,常见的操作之一就是通过git clone命令将远程仓库克隆…

FreeSQL 基本使用

FreeSQL连接MySQL 安装 FeeSql相关库 FreeSql 基本库 FreeSql.DbContext FreeSql.Extensions.Linq linq语法扩展库 FreeSql.Provider.Mysql MySQL连接库 新建DbConent.cs public class Base{static string connstr "Data Source127.0.0.1;Port3306;User IDroot;Pa…

Py之PyPDF2:PyPDF2的简介、安装、使用方法之详细攻略

Py之PyPDF2:PyPDF2的简介、安装、使用方法之详细攻略 目录 PyPDF2的简介 PyPDF2的安装 PyPDF2的使用方法 1、基础用法 PyPDF2的简介 PyPDF2是一个免费的、开源的纯python PDF库,能够拆分、合并、裁剪和转换PDF文件的页面。它还可以为PDF文件添加自定…

每日一题(LeetCode)----链表--两数相加

每日一题(LeetCode)----链表–两数相加 1.题目(2. 两数相加) 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返…

JS数组常用的20种方法详解(每一个方法都有例子,超全面,超好理解的教程,干货满满)

目录 1.会改变原数组的方法(7种) 1.push() 2.pop() 3.unshift() 4.shift() 5.reverse() 6.sort() 7.splice() 2.不改变原数组的方法(13种,返回的新数组是从原数组浅拷贝来的) 1.concat() 2.join() 3.slice…

231123 刷题日报-动态规划

今天主要看了DP,前几天频繁遇到DP打击有点大。。 1. 0-1背包问题 要点: a. 三部曲: 1. 状态和选择 状态:物品序号、背包容量 选择:放、不放 2. dp数组定义、base case dp[i][w] 对于前i个物品,当前背包…

安卓现代化开发系列——从生命周期到Lifecycle

由于安卓已经诞生快二十载,其最初的开发思想与现代的开发思想已经大相径庭,特别是Jetpack库诞生之后,项目中存在着新老思想混杂的情况,让许多的新手老手都措手不及,项目大步向屎山迈进。为了解决这个问题,开…

【Axure教程】用中继器制作卡片多条件搜索效果

卡片设计通过提供清晰的信息结构、可视化吸引力、易扩展性和强大的交互性,为用户界面设计带来了许多优势,使得用户能够更轻松地浏览、理解和互动。 那今天就教大家如何用中继器制作卡片的模板,以及完成多条件搜索的效果,我们会以…

YOLOv8训练自己的目标检测数据集

YOLOv8训练自己的目标检测数据集 目录标题 源码下载环境配置安装包训练自己的数据集数据集文件格式数据集文件配置超参数文件配置训练数据集命令行训练脚本.py文件训练 进行detect显示detect的效果 源码下载 YOLOv8官方的GitHub代码,同时上面也有基础环境的配置要…

Android——资源IDnonFinalResIds和“Attribute value must be constant”错误

一、异常描述 通过资源ID引用资源提示错误 Attribute value must be constant 二、解决方案 在根目录下的文件 gradle.properties 中添加如下配置,然后Sync Project android.nonFinalResIdsfalse 三、问题原因 android.nonFinalResIds 是Android开发中一个用于解…

3D火山图绘制教程

一边学习,一边总结,一边分享! 本期教程内容 **注:**本教程详细内容 Volcano3D绘制3D火山图 一、前言 火山图是做差异分析中最常用到的图形,在前面的推文中,我们也推出了好几期火山图的绘制教程&#xff0…

单链表实现【队列】

目录 队列的概念及其结构 队列的实现 数组队列 链式队列 队列的常见接口的实现 主函数Test.c 头文件&函数声明Queue.h 头文件 函数声明 函数实现Queue.c 初始化QueueInit 创建节点Createnode 空间释放QueueDestroy 入队列QueuePush 出队列QueuePop 队头元…