做网站运营是有提成的吗/网站首页面设计
Redis事务
把一组数据库操作数据库的语句放在一起执行,保证操作的原子性。要么同时成功要么同时失败。在Redis的事务中,允许把一组Redis命令放在一起,把命令序列化,然后一起执行,保证部分原子性。
命令 | 作用 |
---|---|
multi | 用来标记一个事务的开始,将执行的一组命令放到队列中。 |
exec | 用来执行事务 |
discard | 清除所有已经放入事务队列中的命令,并且结束整个事务。 |
watch | 监控某一个key,当事务在执行过程中,对应的value发生变化 |
unwatch [key] | 放弃监控某个或者所有的key |
如果在放入事务的队列时,命令发生严重的错误就会无法保证事务的原则性。此时执行事务就会报错。
如果一组命令中,在放入事务队列的过程正常,但是在执行事务队列命令时发生了错误,则只会影响发生错误的命令,不会影响其他命令的执行,所以不能保证事务的原子性。
使用事务案例
watch version
multi
decrby balance 50
incrby balance2 50
exec
这个案例模拟的是转账场景,事务开始之前监控的是version,当version发生改变说明有人对账户中的余额进行 了变动。
Redis事务特点
1、单独的的隔离操作:事务中的所有命令都会序列化、顺序的执行。事务在执行过程中,不会被其他客户端发来的命令请求所打断,除非使用watch命令监控某些键
2、不保证事务的原子性:Redis同在一个事务中如果一些命令执行失败,其后的命令仍然可能会执行成功,redis的事务没有回滚。由于Redis是一种内存数据库所以为了提高性能牺牲了事务的回滚操作。
Redis消息发布与订阅
Redis消息发布与订阅是指:Redis客户端之间的通信。Redis为了实现客户端之间的通信所以提出了"频道"的概念,当Redis客户端订阅频道时,消息的发布者只需要在该频道上发布消息即可。
相关命令
命令 | 作用 |
---|---|
subscribe | 订阅一个或者多个频道 |
psubscribe | 订阅一个或者多个频道,频道名支持通配符。 |
publish | 将消息发布到指定频道 |