Redis是单线程的,但是为什么还那么快?Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题使用I/O多路复用模型,非阻塞IO能解释一下I/O多路复用模型?Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,I/O......
主从复制单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主从数据同步原理主从全量同步:ReplicationId:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承mas......
了解分布式锁,我们举个常见例子,一个抢券场景。上面代码在单线程执行,或者多线程依次执行都没有问题。但是如果两个线程并发,就有可能会出现问题。如下图所示,假设库存只剩一个,两个线程都查出剩余优惠券但是两个线程还没有运行到扣减库存的那一步,这个时候两个线程都认为还有库存,都会执行扣减库存操作,就会出现问......
数据的淘汰策略:当Redis中的内存不够用时,此时在向Redis中添加新的key,那么Redis就会按照某一种规则将内存中的数据删除掉,这种数据的删除规则被称之为内存的淘汰策略。Redis支持8种不同策略来选择要删除的key:noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认......
Redis数据删除策略-惰性删除惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key优点:对CPU友好,只会在使用该key时才会进行过期检查,对于很多用不到的key不用浪费时间进行过期检查缺点:对内存不友好,如果一个key已......
RDBRDB全称RedisDatabaseBackupfile(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据主动备份Redis内部有触发RDB的机制,可以在redis.conf文件中找到,......
双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致读操作:缓存命中,直接返回;缓存未命中查询数据库,写入缓存,设定超时时间写操作:延迟双删先删除缓存,再操作数据库正常情况:会出现脏数据情况:先操作数据库,再删除缓存正常情况脏数据情况:如上图所示,无论是先删除Redi......
缓存穿透缓存穿透:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库例:一个get请求:api/news/getById/1解决方案一:缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存优点:简单缺点:消耗内存,可能会发生不一致的问题解决方案二:布隆过滤器......
先通过故事理解一下RDB和AOF,再来详细讲讲两者的区别RDB和AOF的故事我是Redis,一个叫Antirez的男人把我带到了这个世界上。“快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我。慢慢睁开眼睛,原来旁边是MySQL大哥。“我怎么睡着了?”“嗨,你刚才是不是出现了错误,整个进程都崩溃了!害得......