首页 > 数据库 >Redis扩展功能

Redis扩展功能

时间:2024-02-27 11:23:34浏览次数:14  
标签:功能 Redis 扩展 事务 watch 命令 multi 执行

Redis 事务

一次操作执行多条命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入、不许加塞。由于redis只能在执行前检查一组命令的语法错误,在命令执行时出现异常没法全体回滚,所以是弱一致性。

multi + exec组合

正常执行

执行前队列中命令无语法错误,且执行成功
image

全部回滚

执行前队列中的命令检查出语法错误,整个事务的命令都会放弃执行
image

部分执行失败

执行前队列中的命令语法检查通过,执行时发生异常,则只有执行异常的命令会执行失败,其它命令正常执行
image

multi + discard组合

主动放弃执行事务中的组合命令
image

watch + multi + exec组合

执行事务组合命令前先通过watch获取锁资源,watch采用乐观锁的形式,不会造成进程阻塞,当变更数据时数据发生变化,则事务执行失败。
image
示例中在执行multi前通过其它客户端改变了transtion:name的值,导致最终事务执行失败

unwatch

通过unwatch可以取消乐观锁资源的监听
image
示例中,在watch后通过其它客户端改变了transtion:name的值,之后通过unwatch取消了乐观锁的监听,所以事务可以成功执行。

Redis 管道

可以一次性的发送多条命令给服务端,服务端一次处理完成后,通过一条响应一次性将结果返回,减少客户端与redis的通信次数来实现降低往返的延迟时间。pipeline实现的原理是队列,先进先出特性就保证数据的顺序性。
如果管道中的任何命令执行失败,则所有后续命令都会被取消。

标签:功能,Redis,扩展,事务,watch,命令,multi,执行
From: https://www.cnblogs.com/zly1015/p/18035788

相关文章

  • 将 Redis 数据放置在 Controller 层还是 Service 层
    在三层架构中,将Redis数据放置在Controller层还是Service层,同样需要根据具体的业务需求和设计原则来决定。以下是一些常见的考虑因素:数据访问频率:如果某个数据在多个请求之间频繁被读取或写入,可以考虑将其放置在Service层的缓存中,以减少对Redis的频繁操作。这样可以提高......
  • 【性能测试】Redis中的缓存雪崩、缓存击穿、缓存穿透问题详解
    一.什么是缓存雪崩当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,这种情况会导致连锁反应,整个系统可能会崩溃。1.......
  • CentOS下安装redis 详细步骤
    1、前言Redis版本6.2.5服务器版本LinuxCentOS7.664位2、下载Redis下载网址:https://redis.io/download/笔者使用wget在线下载wgethttp://download.redis.io/releases/redis-6.2.5.tar.gz3、解压、安装3.1使用tar解压压缩包tar-xzvfredis-6.2.5.tar.gz3.2......
  • Sass基础功能介绍
    本文将从入门角度介绍Sass的极大特性和基本语法,由于作者初学Sass,若有不当之处还请指正.Sass介绍Sass是一个CSS预处理器。Sass是CSS扩展语言,可以帮助我们减少CSS重复的代码,使css代码更"像代码"。有sass和scss两种写法,有区别符号分别为缩进和大括号,下......
  • Apipost 数据模型功能API数据重复利用起来
    在Apipost数据模型中用户可以预先创建多个数据模型,并在API设计过程中重复利用这些模型来构建API创建数据模型在左侧导航点击「数据模型」-「新建数据模型」在右侧工作台配置数据模型参数 引入数据模型在API设计预定义响应期望下点击引用数据模型,并选择需要导入的数据模型......
  • 视频汇聚平台EasyDarwin音视频流媒体视频平台新增视频拉流转推流功能
    ​在这个信息爆炸的时代,视频内容的生产和消费已经成为我们日常生活的一部分。随着技术的不断进步,视频处理和传输的方式也在不断地演变和升级。今天,我要向大家介绍的是一个令人振奋的消息——视频汇聚平台EasyDarwin新增了视频拉流转推流功能,这一创新之举无疑将为视频内容的传......
  • redis自学(5)QuickList
    问题1:ZipList虽然节省内存,但申请内存必须是连续空间,如果内存占用较多,申请内存效率很低。怎么办?为了缓解这个问题,我们必须限制ZipList的长度和entry大小。问题2:但是我们要存储大量数据,超出了ZipList最佳的上限怎么办?我们可以创建多个ZipList来分片存储数据。问题3:数据拆分后比......
  • redis常见的五种类型
    https://www.cnblogs.com/xkqwy/p/16353029.html 总结1.string类型写命令通过set关键字实现,set[key][value]读命令通过get关键字实现,get[key]2.list列表类型通过rpush、lpush,将一个或多个值向右或向左推入。rpush[key][value1][value2],将value值推入到列表的右端......
  • Redis扩展数据类型&命令
    StreamRedisStream是Redis5.0版本引入的一种新的数据类型,它是一个持久化的、可查询的、可扩展的消息队列服务。Stream类型的数据结构类似于一个日志系统,数据被添加到Stream的末尾,并且每个数据都会被分配一个唯一的序列号,这个序列号是按照时间顺序递增的。主体队列:Stre......
  • 在Docker中设置Redis的密码
    目录1,介绍2,实现“DockerRedis设置密码”的整体流程3,具体实现步骤4,结论1,介绍Docker是一个开源的应用容器引擎,可以自动化部署、扩展应用程序。它可以帮助开发人员将应用程序及其依赖项打包到一个可移植的容器中,然后在任何环境中运行。Redis是一个开源的内存数据结构存储系统,它可以......