redis的缺点主要体现在并不支持完整的acid事务,redis虽然提供事务功能,但redis的事务和关系数据库的事务不可同日而语,redis的事务只能保证隔离性和一致性,无法保证原子性和持久性。
- 原子性
redis事务不支持原子性,不支持回滚操作,事务中间一条命令执行失败,既不会导致前面已经执行的命令会滚,也不会中断后面的命令的执行。
- 一致性
redis事务能够保证事务开始之前和事务结束之后,数据库的完整性没有破坏。
- 隔离性
redis不存在多个事务的问题,因为redis是单进程单线程的工作模式,这种隔离性的方式也带来另一个隐含的问题,如果某个客户端通过事务提交了大量的命令,那么会阻塞其他客户端的任何操作。
- 持久性
redis提供两种持久化的方式,rdb和aof。
rdb持久化之辈分当前内存中的数据集,事务执行完毕时,其数据还在内存中,并未立即写入磁盘,所以rdb持久化不能保证redis事务的持久性。
aof持久化是先执行命令,执行成功后再将命令追加到日志文件中去。即使aof每次执行命令后立即将日志文件刷盘,也可能丢失一条命令数据,因此aof也不能严格保证redis事务的持久性。
网友评论