![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 55
redis常见问题解析
lisin-lee-cooper
这个作者很懒,什么都没留下…
展开
-
Redis 面试知识点
1 为什么使用Redis分布式缓存记录用户收藏数,评论数缓存热点数据搜索记录2 Redis 数据结构Redis数据结构解析3 分布式锁Redis分布式锁4 布隆过滤器向布隆过滤器中添加 key 时,会使用多个 hash 函数对 key 进行 hash 算得一个整数索引值然后对位数组长度进行取模运算得到一个位置,每个 hash 函数都会算得一个不同的位置。再把位数组的这几个位置都置为 1 就完成了 add 操作;向布隆过滤器询问 key 是否存在时,跟 add 一样,也会把 hash 的原创 2022-03-25 00:23:26 · 1126 阅读 · 0 评论 -
Redis 缓存与数据库双写一致性
双写一致性要求:缓存不能读到脏数据缓存可能会读到过期数据,但要在可容忍时间内实现最终一致这个可容忍时间尽可能的小一.先更新数据库,再更新缓存线程A更新数据库,线程A更新缓存线程B更新数据库,线程B更新缓存因为网络等原因,线程A更新缓存晚于线程B更新缓存,导致缓存与数据库不一致延时双删二.先删除缓存,再更新数据库线程A删除缓存,线程A更新数据库;线程B查询缓存不存在,更新缓存线程A更新数据库晚于线程B更新缓存,导致缓存与数据库不一致三.先更新数据库,再删除缓存缓存失效,线程A查询数原创 2022-03-15 21:45:56 · 810 阅读 · 0 评论 -
Redis高可用模式
一.主从复制读写分离,适用于读多写少场景,但是master宕机后,redis写入将不可用。二.哨兵模式Sentinel集群会对Redis的主从架构中的Redis实例进行监控,一旦发现了master节点宕机了,就会选举出一个Sentinel节点来执行故障转移,从原来的slave节点中选举出一个,将其提升为master节点,然后让其他的节点去复制新选举出来的master节点。三.集群模式主从复制和哨兵模式无法扩展写能力Redis Cluster要求至少需要3个master才能组成一个集群,同时每个m原创 2022-03-15 21:24:57 · 1086 阅读 · 0 评论 -
Redis 数据持久化
一.持久化的两种方式RDB:Redis Database,某个时刻Redis内存中的数据快照AOF:Append Only File,所有修改内存数据的指令合集两种方式都会生成相应的文件落地到磁盘上。二.RDBsave命令直接调用rdbsave方法,此时会阻塞Redis主进程,直至快照文件生成;bgsave命令会fork出一个子进程,由fork出来的子进程调用rdbsave。父进程会继续响应来自客户端的读写请求。子进程完成RDB文件生成之后会给父进程发送信号,通知父进程保存完成。基于这个策略,原创 2022-03-15 20:49:14 · 1062 阅读 · 0 评论 -
redis 缓存击穿、穿透、雪崩
一.击穿大量的请求过来,被查询的key缓存失效,导致直接查询数据库,导致数据库cpu飙升,服务器响应变慢甚至宕机。解决方案1 加锁更新key失效后可以放一部分请求同步加锁更新,其他请求阻塞等待获取缓存值。2 缓存预热启动定时任务,去异步更新缓存值二. 穿透查询的数据缓存和数据库中都不存在,每次请求都会访问数据库解决方案1 缓存空值或默认值2 布隆过滤器三.雪崩击穿的加强版,同一时间大量key同时缓存失效解决方案1 key值过期时间分散2 热点数据永不过期,双写同步更新缓存原创 2022-02-24 11:31:40 · 430 阅读 · 0 评论 -
Redis数据结构解析
一.五种数据结构String:字符串类型List:列表类型Set:无序集合类型ZSet:有序集合类型Hash:哈希表类型二.RedisObjectredisObject 用来表示所有的key 和 value ,用redisObject 结构体来表示String 、Hash、List、Set、ZSet;redisObject 结构:数据类型(type)编码方式(encoding)数据指针 (ptr)虚拟内存(vm)其他信息三.数据的编码方式和应用场景3.1 StringStr原创 2022-03-01 17:29:40 · 685 阅读 · 0 评论 -
Redisson分布式锁
一.什么是锁锁主要是用来实现资源共享同步,只有获取到了锁才能访问该同步代码,否则等待其他线程使用结束释放锁。二.redis实现分布式锁主要步骤1.指定一个 key 作为锁标记,存入 Redis 中,指定一个 唯一的用户标识 作为 value;2.当 key 不存在时才能设置值,确保同一时间只有一个客户端进程获得锁,满足 互斥性 特性。3.设置一个过期时间,防止因系统异常导致没能删除这个 key,满足 防死锁 特性。4.当处理完业务之后需要清除这个 key 来释放锁,清除 key 时需要校验 va原创 2022-03-03 00:23:12 · 7320 阅读 · 0 评论