目录
一.事务
1.特性
2.命令
二.管道 pipe
1.操作
2.与原生批量命令对比
4.注意事项
一.事务
1.特性
1) 单独的隔离操作
Redis的事务仅仅是保证事务里的操作会被连续独占得执行,redis命令执行是单线程架构,在执行完事事务内所有指令是不可能再去同时执行其他客户端的请求
2) 没有隔离级别的概念
在事务外查询可以看到要更新的数据
3) 不保证原子性
所有指令同时成功或同时失败,没有回滚的能力
4) 排他性
保证一个事务内的命令依次执行,而不会被其他命令插入
2.命令
1) 正常
multi 开启事务
exec 提交
2) 放弃
multi 开启事务
discard
3) 如果命令是语法类的错误会全部回滚,但语法没错编译出错,像数据类型不应该有的操作,不会全部回滚,正确的会继续提交。
4) watch 监控, 命令没有执行前,有其他连接修改了此key,那么事务中所有操作失败
watch key1
multi
exec
5) unwatch 中途放弃监控,就可避免4)的情况
watch key1
unwatch
multi
exec
二.管道 pipe
1.操作
1) 写批处理 vi cmd.txt
set k100 v100
set k200 v200
hset k300.name atgugu
hset k300.age 20
lpush list 1 2 3 4 5
2) 管道执行
cat cmd.txt | redis-cli -a 111111 --pipe
2.与原生批量命令对比
1) 原生批量命令是原子性,管道是非原子性
2) 原生批量命令一次只能执行一种命令,管道支持批量执行不同命令
3) 原生批量命令是服务端实现,而管道需要服务器与客户端共同完成
3.与事务对比
1) 事务具有原子性,管道不具有原子性
2) 管道一次性将多条命令发送到服务器,事务是逐条发,事务只有在接收到exec命令后才会执行
3) 执行事务时会阻塞其他命令,而执行管道中的命令时不会
4.注意事项
1) 命令不要太多,否则占用内存文章来源:https://www.toymoban.com/news/detail-405459.html
2) 没有原子性,一个失败其他命令会继续执行文章来源地址https://www.toymoban.com/news/detail-405459.html
到了这里,关于4.redis-事务和管道的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!