DeathWhispers

Redis的事务

Redis的事务 Redis事务天然具有隔离性 Redis事务时单进程程序,并且他保证在执行事务时,不会对事务进行中断,事务可以运行知道执行完所有事务队列中的命令为止。因此,Redis的事务是总是带有隔离性的。 Redis事务保证原子性吗,支持回滚吗 Redis中,单条命令是原子执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余命令仍会被执行。 Redis事务其他...

Redis如何保证与数据库的数据一致

Redis如何保证与数据库的数据一致 当我们对数据进行修改的时候,到底是先删缓存,还是先写数据库? 1. 如果先删缓存,再写数据库 在高并发场景下,当第一个线程删除了缓存,还没有来得及写数据库,第二个线程来读取数据,会发现缓存中的数据为空,那就会去读数据库中的数据(旧值、脏数据),读完之后,把读到的结果写入缓存(此时,第一个线程已经将新的值写到缓存里面了),这样缓存中的值就会被覆盖为修...

Redis为什么这么快

Redis为什么这么快 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是时间复杂度低O(1) 数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因...