事务
redis中的事务是一组命令的集合。使得一个事务中的redis命令要么全执行,要么全不执行
使用方式: multi 和exec完成
multi: 告诉redis将同一个事务的命令存储起来。 之后发送两个SADD, redis返回queued表示命令进入了等待执行的事务队列中。
exec:则是告知redis按照发送顺序执行命令。一旦客户端发送exec名,所有命令将执行,即使此后客户端断线,没有关系。
错误处理
1>语法错误。 命令不存在或者命令参数个数不对。
只要有一个命令有语法错误,执行exec命令后redis就会直接返回错误,连正确的命令也不会执行。
2> 运行错误。指的是命令执行时出现错误。比如使用散列类型的命令操作集合类型的键。这种错误在实际执行前redis是无法发现的。所以在事务里这样的命令会被redis接受并执行。如果事务里的一条命令出现了运行错误,事务的其他命令
依然会继续执行(包括出错命令后面的命令)
redis的事务没有提供回滚的功能,因此开发者必须在事务执行后自己将数据库复原到原来执行前的状态。
这两种错误,其中语法错误是能在开发是找出并解决的。
WATCH命令介绍
在一个事务中只有当所有命令都依次执行完才能得到每个结果的返回值,可是有些情况需要先获得一条命令的返回值。然后在根据这个值执行下一条命令。
比如get,set 命令实现increase时候就会出现竞态条件。