0
点赞
收藏
分享

微信扫一扫

微软面试高频算法题解析与代码实现(C++)

刘员外__ 2024-04-25 阅读 9

Redis 事务特性

本文Redis事务特性是与MySQL相对而言的:

弱化的原⼦性: redis 没有 “回滚机制”. 只能做到这些操作 “批量执⾏”. 不能做到 “⼀个失败就恢复到初始状态”.
不保证⼀致性: 不涉及 “约束”. 也没有回滚. MySQL 的⼀致性体现的是运⾏事务前和运⾏后 , 结果都是合理有效的, 不会出现中间⾮法状态.
不需要隔离性: 也没有隔离级别, 因为不会并发执⾏事务 (redis 单线程处理请求) .
不需要持久性: 是保存在内存的. 是否开启持久化, 是redis-server ⾃⼰的事情, 和事务⽆关

Redis 事务使用

  1. MULTI命令 用于开启一个事务 ;
  2. EXEC命令 用于开始执行事务 ;
    每次添加⼀个操作, 都会提⽰ “QUEUED”, 说明命令已经进⼊客⼾端的队列了。真正执⾏ EXEC 的时候, 客⼾端才会把事务内的操作发送给服务器.
  3. DISCARD命令 放弃当前事务
  4. WATCH命令 用于监视一个或多个键,如果在事务执行期间有其他客户端对这些键进行了修改,事务将被打断;
    在执⾏事务的时候, 如果某个事务中修改的值, 被别的客⼾端修改了, 此时就容易出现数据不⼀致的问题.因此, 即使不保证严格的隔离性, ⾄少也要告诉⽤⼾, 当前的操作可能存在⻛险watch 命令就是⽤来解决这个问题的. watch 在该客⼾端上监控⼀组具体的 key.当开启事务的时候, 如果对 watch 的 key 进⾏修改, 就会记录当前 key 的 “版本号”. (版本号是个简单的整数, 每次修改都会使版本变⼤. 服务器来维护每个 key 的版本号情况)。在真正提交事务的时候, 如果发现当前服务器上的 key 的版本号已经超过了事务开始时的版本号, 就
    会让事务执⾏失败. (事务中的所有操作都不执⾏).
  5. UNWATCH命令 取消对具体key的监控。
举报

相关推荐

0 条评论