Redis事务,管道,发布订阅

2024-05-05 05:36

本文主要是介绍Redis事务,管道,发布订阅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Redis事务

redis事务本质上是一组命令的集合,按照顺序串行化执行命令而不被其他命令打断

redis事务开启后将要执行的命令放到事务队列中,提交事务后一次性顺序排他地执行所有命令

关键词:单线程,无隔离级别,不保证原子性,排他性,顺序性 

要注意和mysql的acid进行区分

怎么用

multi--开启事务

exec--提交事务

discard--放弃提交事务

watch,unwatch--监视/取消监视某个键

 redis事务执行遵循的规则总结起来就是:语法错误全体连坐,个别出错冤头债主

  1. 提交事务时系统检查到命令有语法出错,则整个事务都无法提交
  2. 命令没有检查出错误,但是执行的对象不合理则该命令执行失败,其他命令照常执行

redis通过watch实现乐观锁:

如果watch监视的key在事务提交前被修改了,那么整个事务都将执行失败

一旦执行了exec之前加的监控锁都会被取消,当客户端断开连接时所有key都会被取消监视

Redis管道

管道(pipeline)是为了解决执行大量命令时要频繁进行网络通信和系统I/O影响性能的问题

通过管道可以将多条命令一次性传输给服务端,服务端再进行统一回复

管道和原生批量命令对比

  1. 原生批量命令(如mset...)是原子性的,管道执行的命令是非原子性
  2. 管道支持批量执行不同命令,原生批量命令一次只支持一种
  3. 管道需要C/S共同完成

管道和事务对比

  1. 事务具有原子性,管道不具有原子性
  2. 管道一次性将多条命令发送到服务器,事务是一条一条的发
  3. 执行事务会阻塞其他命令执行,执行管道的命令时不会

 

使用管道时不要使用太多的数据,因为服务端会被强制去处理管道中的命令,而客户端也会进入阻塞状态,所以一次不要传太多命令

Redis发布订阅

redis的发布订阅功能有点类似于我们的消息队列mq,客户端可以订阅不同的频道,当该频道发出消息时会自动转发给订阅的客户

关键词:非持久化,不保证消息签收,实时性高 

常用命令

 psubscribe是按照模式批量订阅,通过给定模式(*,?等)订阅频道

替代发布订阅

实际生产中不常使用发布订阅,为解决消息无法持久化,无法保证消息到达等问题,我们可以使用redis的stream数据结构或者引入其他消息中间件来代替

这篇关于Redis事务,管道,发布订阅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960895

相关文章

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

如何提高Redis服务器的最大打开文件数限制

《如何提高Redis服务器的最大打开文件数限制》文章讨论了如何提高Redis服务器的最大打开文件数限制,以支持高并发服务,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录如何提高Redis服务器的最大打开文件数限制问题诊断解决步骤1. 修改系统级别的限制2. 为Redis进程特别设置限制

SpringBoot嵌套事务详解及失效解决方案

《SpringBoot嵌套事务详解及失效解决方案》在复杂的业务场景中,嵌套事务可以帮助我们更加精细地控制数据的一致性,然而,在SpringBoot中,如果嵌套事务的配置不当,可能会导致事务不生效的问题... 目录什么是嵌套事务?嵌套事务失效的原因核心问题:嵌套事务的解决方案方案一:将嵌套事务方法提取到独立类

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧