简介
管道技术由客户端提供的,与服务器无关,服务器始终使用,收到-执行-回复的顺序处理消息。而客户端通过对管道中的指令列表改变读写顺序,而节省大幅IO时间,指令越多,效果越好。
管道测试:reids-benchmark(-p )
管道可以将多个命令大包,一次性发送给服务器处理(类似于批处理)
事务
- redis事务指令:multl、exec、discard,虽然可以使用DISCARD取消事务,但是不支持回滚
- 当输入multl命令后,服务器返回OK表示事务开始成功,然后依次输入需要在本次事务中执行的所有命令,每次输入一个命令服务器并不会马上执行,而是返回"QUEUED",表示命令已经被服务器接收并且暂时保存起来,最后输入exec命令后,本次事务中的所有命令才会被依次执行。
- 事务错误处理:
1.语法错误,全部执行
2.运行错误,出错后仍然继续执行
事务监测
- 将其中一个条命令的执行结果作为另外一条命令的执行参数,如i++,需要使用watch命令
- watch命令可以监控一个或多个键,一旦其中有一个键被修改或删除,之后的事务就不会执行,监控一直持续到exec命令执行
- 执行exec命令后会取消监控使用watch命令监控的键,如果不想执行事务中的命令,也可以使用unwatch命令来取消监控
- 使用方式 watch -> multl -> command -> exec
注意: 由于watch命令的作用只是当被监控的键被修改后取消之后的事务,并不能保证其他客户端不修改监控的值,所以当exec命令执行失败之后需要手动重新执行整个事务(本质上是一种乐观锁)
网友评论