Redis事物和主从同步

Redis事物

Redis中是有事物,但是它的事务和数据库中的有些不一样。

Redis的acid

原子性,如果事物刚开始的命令被判断是错误的,例如使用了put等Redis中没有的关键词,Redis会直接把这个事物抛弃,这时候就保证了原子性。但是如果刚开始检查的时候,没有检查出错误,但是执行的时候发现错误了,这个时候就没有原子性了,下面的操作还是会执行的。

一致性,如原子性一样,如果Redis一开始检查出来了,就会拒绝执行事物,如果没有检查出错误,但是执行的时候发现了错误,还是会执行的。如果在事物执行到一半之后发生故障,如果使用的是AOF,那么一致性不可以保证,但是使用RDB的话,一致性是可以保证的。

隔离性,如果在事物执行的阶段,有别的命令一起进来的话,就需要使用watch命令来确保隔离性。但是如果是在事物执行完毕的时候,有命令进来的话,Redis会优先执行事物中的命令。

持久性,RDB和AOF都可以保证持久性。

Redis主从同步问题

Redis主从同步是会有延迟的,一般有两个因素

一网络因素,可能网络延迟过长导致命令从主库传送到从库晚了很久。

二从库正在处理复杂的数据,导致从库接受主库的RDB数据时无法及时同步。

Redis还有可能读取过期的数据。

如果Redis给主库设置10秒后过期,结果从库收到这个命令后已经是3秒后了,从库就会晚三秒过期。因此的话,可以设置为十点钟过期,这种统一时间。

Redis脑裂

如果哨兵判断Redis主库客观下线,结果其实它没有下线,它仍然在接受客户端的消息,这个时候哨兵们已经选好了新的主库,这个时候,这段时间的命令就会丢失,也就是脑裂。可以依靠判断多少个从库多少秒钟如果无法连接到主库,客户端就禁止发送数据给主库来避免脑裂。

往期文章

Redis核心技术

Redis主从同步和哨兵

Redis实战

Redis为什么会阻塞

Redis一些问题

你可能感兴趣的:(Redis,开发语言,redis,数据库,缓存,java,数据库开发)