首页 > 数据库 >redis学习随笔

redis学习随笔

时间:2023-05-23 17:34:07浏览次数:42  
标签:脚本 命令 redis 学习 lua call 随笔 local

redis中的单个命令是原子操作。

多条命令可以用multi,exec,discard等命令。

1.multi开始执行事务,后面的命令都会放到队列里,暂不执行

2.exec执行,会将队列的命令按顺序执行,失败不回滚

3.discard取消事务。

redis为什么事务失败不会滚:

1.redis的命令错误一般是因为错误的语法,或者用错了key,这样的错误应该在开发环境就被发现,而不应该放到生产环境当中。

2.因为不需要支持事务的回滚,redis内部可以保存简单快速。

 

 

lua脚本:将复杂的或者多步的redis操作,写为一个脚本,一次提交给redis执行,减少反复连接redis的次数。提升性能。 LUA脚本是类似redis事务,有一定的原子性,不会被其他命令插队,可以完成一些redis事务性的操作。 但是注意redis的lua脚本功能,只有在Redis 2.6 以上的版本才可以使用。 利用lua脚本淘汰用户,解决超卖问题。 redis 2.6版本以后,通过lua脚本解决争抢问题,实际上是redis 利用其单线程的特性,用任务队列的方式解决多任务并发问题。

lua脚本也不支持回滚

 

lua:秒杀脚本

``
local userId=KEYS[1];
local stockKey=KEYS[2];
local userIdKey=KEYS[3];
local userExists=redis.call(“sismember”,userIdKey,userId);
if tonumber(userExists)==1
then
return 2;
end
local num= redis.call(“get” ,stockKey);
if tonumber(num)<=0 then return 0;
else
redis.call(“decr”,stockKey);
redis.call(“sadd”,userIdKey,userId);
end
return 1;

https://blog.csdn.net/m0_56340064/article/details/127024948

 

标签:脚本,命令,redis,学习,lua,call,随笔,local
From: https://www.cnblogs.com/gz-wod/p/17425883.html

相关文章

  • cloud alibaba 学习 之 rocketmq
    rocketmq有三种消息发送模式:1.同步发送需要等待broker回应/***同步消息发送*/@TestpublicvoidtestSyncSend(){//param1:topic;若添加tag:topic:tag//param2:消息内容SendResultsendResult=rocketMQTemplate......
  • 2023.5.21学习内容 多态、接口、泛型、反射
    下午1.了解CSS响应式布局和兼容性问题2.浏览IDEA使用手册并修改Maven仓库设置3.复习强化JavaSE的多态、接口、泛型、反射知识importorg.junit.Test;importtest.Hello;importjava.lang.reflect.Field;importjava.util.ArrayList;importjava.util.LinkedList;import......
  • 每日总结-Lucene的学习
    Lucene是一个开源的全文检索引擎库,由Apache组织维护。它提供了一系列和全文检索相关的API,包括索引构建、查询等功能。以下是Lucene的一些特点和功能:高效的索引和搜索:Lucene使用倒排索引(InvertedIndex)的方式来提高检索性能,能够处理大量的文本数据。多种查询方式:Lucen......
  • 微信小程序的学习1--环境准备
    1、注册一个微信小程序帐号注册网址:https://mp.weixin.qq.com/cgi-bin/wx2、注册完成之后,在相关页面可以获取到小程序的APPID在填写好我们的小程序的基本信息之后,我们就能够在左侧边栏的设置模块里面找到我们需要的APPID的信息了:3、下载开发者工具在开发者工具里面,找到这里......
  • 1、Nodejs学习笔记
    1、fs模块fs模块名称,可以用来操作文件,比如:文件创建,删除,重命名,移动,写入,读取2、来一个fs模块写入的例子//第一个参数文件名称,不存在会创建,第二个参数:写入内容,第三个参数:是写入情况返回值,如果写入成功返回null,如果失败返回错误信息fs.writeFile('','',err=>{})//异步fs.......
  • 《数字图像处理》冈萨雷斯(第四版)学习笔记
    前言:基于电科大830考研大纲。本人非图像处理研究方向的学生,因考试需要,自己整理的学习笔记,本文仅供参考,内容若有出入请自行补充。希望对大家有所帮助。 电科大830考研大纲参考网址来源:https://blog.csdn.net/sinat_35907936/article/details/103743934http://www.kaoyanmiji.c......
  • 做好个人黄金投资,学习黄金投资交易原则
    随着经济的发展,黄金逐渐成为金融投资的重要工具,越来越多的人开始关注黄金投资。想要做好个人黄金投资,建议先熟悉和学习黄金投资交易原则的内容。黄金投资交易原则一、跟随趋势入场在买入之前,首先应对行情的运行趋势有个明确的判断。一般来说,根据自己的资金实力制定投资策略,是准备......
  • 8百多经典古诗学习鉴赏ACCESS\EXCEL数据库
    虽然古诗类的数据搞到过很多,但是有鉴赏、译文等鉴赏类字段的还是很少,而今天搞到一个古诗学习类数据库,虽然记录数不多,但大都有翻译、鉴赏、译文等字段内容,是小学生、中学生、高中生学习的好东西。朝代统计:金朝(2)、两汉(22)、明代(25)、南北朝(24)、清代(27)、宋代(348)、唐代(373)、魏晋(19)、五......
  • 你说啥?Redis中除了五大数据类型,还有特殊数据类型!
    一、geospatial地理位置1.1>概述可以用于基于地理位置的业务场景。比如:查询两地之间的距离,方圆几里存在的地理位置等等。Redis提供了geospatial相关的8个指令,操作如下图所示:1.2>GEOADD(v3.2.0)指令格式:GEOADDkeylongitudelatitudemember[longitudelatitudemember...]指令含......
  • git 学习网页
    git学习网页:http://backlogtool.com/git-guide/cn/intro/intro1_1.htmlhttp://git-scm.com/book/zh/v2......