首页 > 数据库 >Redis事务

Redis事务

时间:2024-07-08 22:42:57浏览次数:16  
标签:事务 EXEC 队列 Redis 命令 执行

001-redis事务   (1)Redis事务的概念:     Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。     总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。     (2)Redis事务没有隔离级别的概念:     批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行, 也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。   Redis不保证原子性:   Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。   Redis事务的三个阶段:   开始事务 命令入队 执行事务   Redis事务相关命令:     watch key1 key2 ... : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断。   multi : 标记一个事务块的开始( queued )   exec : 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 )    discard : 取消事务,放弃事务块中的所有命令   unwatch : 取消watch对所有key的监控   若在事务队列中存在命令性错误(类似于java编译性错误),则执行EXEC命令时,所有命令都不会执行。 若在事务队列中存在语法性错误(类似于java的1/0的运行时异常),则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。     watch指令类似于乐观锁,在事务提交时,如果watch监控的多个KEY中任何KEY的值已经被其他客户端更改,则使用EXEC执行事务时,事务队列将不会被执行,同时返回Nullmulti-bulk应答以通知调用者事务执行失败。

 

标签:事务,EXEC,队列,Redis,命令,执行
From: https://www.cnblogs.com/rcsy/p/18290819

相关文章

  • Redis安全
    Redis安全一、账号密码端口安全1)账号密码安全。configgetrequiespass检查是否设置有密码,设置密码:CONFIGsetrequirepass"runoob"配置文件:#requirepassfoobared2)网络配置配置文件:bind192.168.1.100 #Redis服务器只监听本地网络接口,只有本机可以访问Redis服务器......
  • Redis核心问题总结(二)
    统计高并发网站每个网页每天的UV数据,结合Redis你会如何实现?选用方案:HyperLogLog如果统计PV那非常好办,给每个网页一个独立的Redis计数器就可以了,这个计数器的key后缀加上当天的日期。这样来一个请求,incrby一次,最终就可以统计出所有的PV数据。但是UV不一样,它要去......
  • redis如何与mysql数据保持一致?
    redis如何与mysql数据保持一致?同步双写:cacheasidepattern,读:先读缓存再读数据库,一个缓存的过期时间,实现起来简单好用极限情况还会有数据不一致的风险。CAP定理:c一致性a可用性p分区容错性,cp或者是ap异步双写:基于消息队列实现,写:生产者:先更新数据库,向队列发消息,消费者:监听消......
  • 在CentOS 7虚拟机上正确安装Redis
    在CentOS7虚拟机上正确安装Redis,可以按照以下步骤进行操作:更新系统软件包:sudoyumupdate安装Redis依赖库:sudoyuminstallepel-releaseyum-utilssudoyuminstallhttp://rpms.remirepo.net/enterprise/remi-release-7.rpmsudoyum-config-manager--enableremisudoyu......
  • redis缓存的穿透及解决的方案
    概念缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案方案一:将每次查询到为null的值存入redis优点:简单缺点:消耗内存,可能会出现数据不一......
  • 基于 RedisTemplate + 线程池 实现 Redis分布式锁
    分布式锁需求往往部署的后台服务不会只是单机部署了,而是通过集群的方式运行在两个甚至多个部署的服务器上(即便是同一个服务器的两个端口上,也会出现同样的问题)等架构来进行部署。在用户所发送的请求中,每个请求将会通过负载均衡发送到不同的服务器中。如果我们还想对集群中的......
  • Redis基础教程(十六):Redis Stream
    ......
  • 分布式事务最经典的七种解决方案
    转载:后端-分布式事务最经典的七种解决方案-分布式事务-SegmentFault思否随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题。这篇文章首先介绍了相关的基础理论,然后总结了最经......
  • Docker部署Django+MySQL+Redis+Nginx+uWSGI+Celery(超详细)
    一、知识储备经过我们之前学习的Docker相关知识,现在我们来进行实战,以下介绍如何通过DockerCompose部署Django项目:先前知识:Docker学习笔记(一)概念理解-CSDN博客Docker学习笔记(二)镜像、容器、仓库相关命令操作-CSDN博客Docker学习笔记(三)Dockerfile-CSDN博客DockerCompose......
  • nginx作为反向代理服务器:代理MySQL、Postgresql、Redis及多个TCP服务
    使用Nginx作为反向代理服务器,可以代理MySQL、PostgreSQL、Redis及多个TCP服务。这需要配置Nginx的stream模块。以下是详细的配置步骤:1.确保Nginx支持stream模块首先,确保Nginx已经编译并支持stream模块。运行以下命令检查:nginx-V在输出中查找--with-str......