Redis的面试题

        一、Redis支持的数据类型?

                Redis支持的数据类型主要有五种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

        二、什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

                1. 把内存中的数据保存到磁盘的过程。
                2. RDB和AOF
                3. RDB优点: 大数据RDB数据恢复快。 缺点: 完整性差,会丢失一段时间内的数据
                    AOF优点: 数据完整高. 缺点: 大数据AOF数据恢复慢。

        三、Redis 有哪些架构模式?讲讲各自的特点?

                1. 主从复制--->主节点负责写操作 主节点的数据会同步到所有的从节点上。 从节点只负责读操作。一旦主节点宕机,从节点无法自动上位。
                2. 哨兵模式---->哨兵服务监听主节点的状态,如果主节点宕机后会从所有的从节点中投票选举一个主节点。 只有一个主节点完成写操作。
                3. 集群模式----> 可以有多个节点完成写操作。

        四、什么是缓存穿透?如何避免?

                1. 缓存穿透: 查询的数据在数据库中不存在,缓存中也不存在,而有些人恶意访问这种数据。

                        缓存穿透(cache penetration)是用户访问的数据既不在缓存当中,也不在数据库中。出于容错的考虑,如果从底层数据库查询不到数据,则不写入缓存。这就导致每次请求都会到底层数据库进行查询,缓存也失去了意义。当高并发或有人利用不存在的Key频繁攻击时,数据库的压力骤增,甚至崩溃,这就是缓存穿透问题。

                2. 避免:  
                     1. controller校验不合法的数据。
                     2. 设置一些空对象到缓存中。 该对象的过期时间不能太长一般不超过5分钟。
                     3. 布隆过滤器。

        解决办法:

            业务层校验不合法的数据.比如id=负数。

            如果查询的结果为null,也往缓存中存入一个Null对象。而且该对象的存放时间不要太长。

            使用布隆过滤器。 把表中存在的所有id存入到布隆过滤器中,查询时,先经过布隆过滤器,如果不存在则直接返回null,如果存在则查询缓存和数据库。

        五、什么是缓存雪崩?何如避免?

                 缓存雪崩是指缓存由于某些原因整体或者大量失效,导致大量请求打到后端数据库,从而导致数据库崩溃,整个系统崩溃,发生灾难。

                        在使用缓存时,通常会对缓存设置过期时间,一方面目的是保持缓存与数据库数据的一致性,另一方面是减少冷缓存占用过多的内存空间,但当缓存中大量热点缓存采用了相同的实效时间,就会导致缓存在某一个时刻同时实效,请求全部转发到数据库,从而导致数据库压力骤增,甚至宕机。从而形成一系列的连锁反应,造成系统崩溃等情况,这就是缓存雪崩(Cache Avalanche)

        如何解决缓存雪崩?

        1.通常的解决方案是将key的过期时间后面加上一个随机数(比如随机1-5分钟),让key均匀的失效。
        2. 可以把一些热点数据提前放入缓存。
        3. 构建缓存高可用集群(针对缓存服务故障情况)。

        六、Redis淘汰策略有哪些?

                redis--内存肯定会满,添加新数据【】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值