![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【八股】redis
白速龙王的回眸
一命二运三风水
四积功德五读书
六名七相八敬神
九交贵人十养生
展开
-
【redis】过期策略、基本数据类型实现、为什么快
【简述redis过期策略】1.定期删除,redis默认都是100ms就随机抽取一些设置了过期时间的key,并检查其是否过期,如果过期就删除。因此该删除策略并不会删除所有的过期key2.惰性删除,在客户端需要获取某个key时,redis将首先进行检查,若该key设置了过期时间并已经过期就会删除实际上redis结合上述两种手段,保证删除过期的key【redis基本数据类型实现原理】字符串:采用类似数组的形式存储list:采用双向链表进行具体实现hash:采用hashtable或者ziplist进行原创 2022-04-13 11:11:55 · 842 阅读 · 0 评论 -
【redis】RDB和AOF比较、简述redis淘汰机制、mysql和redis区别、
【RDB和AOF优缺点比较】AOF占用的文件体积比RDB大,一般来说利用AOF备份对系统的消耗比RDB低。对于备份时出现系统故障,RDB数据可能会全丢,但AOF只会损失一部分。RDB回复速度比AOF低。AOF除了文件体积大,消耗低、容错高、恢复速度高。。。【简述redis淘汰机制】1.noeviction:默认禁止驱逐数据。内存不够使用时,对申请内存的命令报错2.volatile-lru:从设置了过期时间的数据集中淘汰最近没使用的数据3.volatile-ttl:从设置了过期时间的数据集中淘汰即原创 2022-04-12 14:50:11 · 856 阅读 · 0 评论 -
【redis】AOF,持久化策略,重写
【简述redis的AOF】AOF通过日志,对数据的写入修改操作进行记录。这种持久化方式实时性更好。通过配置文件打开AOF。【简述AOF的持久化策略】1.always,每执行一次数据修改命令就将其命令写入到磁盘日志文件上2.everysec,每秒将命令写入到磁盘日志文件上3.no,不主动设置,由os决定什么时候写入到磁盘日志文件上【简述AOF的重写】随着客户端的不断操作,AOF对应的文件也越来越大,redis提供了bgrewriteaof函数,针对目前数据库中数据,在不读取原AOF文件的基础上,原创 2022-04-11 11:25:21 · 509 阅读 · 0 评论 -
【redis】save、bgsave、自动触发RDB
【save】save命令是redis手动触发RDB过程的命令。使用该命令后,服务器阻塞,直到RDB过程完成后终止。该过程占用内存较多【bgsave】bgsave命令不阻塞主进程(严格意义上也不是完全不阻塞,详看下面过程),该命令fork一个子进程用于执行RDB过程。其具体过程为1.判断此时有没有子进程用于RDB,有的话直接返回2.redis进行fork子进程过程,此时父进程处于阻塞状态3.子进程创建RDB文件,完成后返回给父进程【redis自动触发RDB机制】1.通过配置文件,设置一定时间后原创 2022-04-10 14:00:21 · 1627 阅读 · 0 评论 -
【redis】哨兵模式、cluster集群、RDB
【简述哨兵模式】哨兵模式监控redis集群中master的工作状态。在master宕机时,从slave中选择新机器当作master,保证系统高可用(有点raft的感觉)每个哨兵每10秒向master,slave和其他哨兵发送ping(保活)client通过哨兵,由哨兵提供可供服务的redis master节点哨兵只需要配master节点,会自动寻找对应的slave节点监控同一个master节点的哨兵会自动互联,组成哨兵网络,当任一哨兵发现master连补上,即开会投票,半数以上master下线,从原创 2022-04-09 14:58:52 · 737 阅读 · 0 评论 -
【redis】解决缓存雪崩、redis部署方式、主从赋值模式
【简述缓存雪崩的解决方法】所谓缓存雪崩就是一大批缓存数据到期,导致数据库查询压力陡然变大解决方法1.缓存数据设置随机过期时间,防止同一时间大量数据过期2.设置热点数据永不过期3.对于集群部署的情况,将热点数据均匀分布在不同缓存中【redis有哪些集群部署方式】1.主从复制2.哨兵模式3.Cluster集群模式【简述主从复制模式】在主从复制中,有master节点和slave节点两个角色在节点服务启动会连接master,向master发送SYNC命令master收到同步命令,启动持久化原创 2022-04-08 10:56:50 · 806 阅读 · 0 评论 -
【redis】缓存击穿、缓存雪崩
【简述缓存击穿】缓存击穿指缓存中没有数据,但db中有数据。一般这种情况指特定数据的缓存时间到期,但由于并发用户访问该数据特别多,因此去数据库去取数据,引起db访问压力过大【简述缓存穿透的解决方法】1.设置热点数据泳不过期2.对并发读数据设置并发锁,降低并发性【简述缓存雪崩】缓存雪崩指缓存中一大批数据到过期时间,而从缓存中删除。但该批数据查询数据量巨大,查询全部走数据库,造成数据库压力过大...原创 2022-04-07 20:53:36 · 461 阅读 · 0 评论 -
【redis】和memcache的区别、缓存穿透、解决方法
【redis和memcache的区别】1.redis处理网络请求采用单线程模型,memcache采用多线程异步io方式2.redis支持数据持久化,memcache不支持3.redis支持数据格式比memcache更多【简述缓存穿透】缓存穿透是指缓存和db都没有需要查询的数据,攻击者不断发送这种请求,导致数据库压力过大【简述缓存穿透的解决方法】1.对db操作访问前进行校验,对不合法请求直接返回2.对于经常被访问的,并且数据库中没有的key,缓存层记录键=null...原创 2022-04-06 13:58:11 · 434 阅读 · 0 评论 -
【redis】单线程原理、数据类型、适用情况
【redis单线程原理】redis单线程是指网络请求模块使用了一个线程,其他模块仍用了多个线程,并不是一个线程完成了所有功能,原理上,使用了epoll多路复用特性,因此可以采用单线程处理网络请求【redis数据类型】String:字符串类型,最简单的类型Hash:类似map的结构List:有序列表Set:无序集合Zset:带权值的无序集合,即每个ZSet元素还有另外一个数字代表权值,集合通过权值排序【什么时候使用redis】1.针对热点数据进行缓存2.对于特定限时数据的存放3.针对带热原创 2022-04-05 20:46:08 · 656 阅读 · 0 评论