乐趣区

关于java:锁屏面试题百日百刷Redis篇四

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步,吊打面试官! 接下来的是今日的面试题:

==== 都有哪些方法能够升高 Redis 的内存应用状况呢?
如果你应用的是 32 位的 Redis 实例,能够好好利用 Hash,list,sorted set,set 等汇合类型数据,因为通常状况下很多小的 Key-Value 能够用更紧凑的形式寄存到一起。

====Redis 的内存用完了会产生什么?
如果达到设置的下限,Redis 的写命令会返回错误信息(然而读命令还能够失常返回。)或者你能够将 Redis 当缓存来应用配置淘汰机制,当 Redis 达到内存下限时会冲刷掉旧的内容。

==== 一个 Redis 实例最多能寄存多少的 keys?List、Set、SortedSet 他们最多能寄存多少元素?
实践上 Redis 能够解决多达 2^32 的 keys,并且在理论中进行了测试,每个实例至多寄存了 2 亿 5 千万的 keys。咱们正在测试一些较大的值。任何 list、set、和 sorted set 都能够放 2^32 个元素。换句话说,Redis 的存储极限是零碎中的可用内存值。

====MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保障 redis 中的数据都是热点数据?
Redis 内存数据集大小回升到肯定大小的时候,就会实施数据淘汰策略。面试官前面可能就会问到淘汰策略了。。。

==== 如果 Redis 外面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀结尾的,如果将它们全副找进去?
应用 keys 指令能够扫出指定模式的 key 列表。
对方接着诘问:如果这个 redis 正在给线上的业务提供服务,那应用 keys 指令会有什么问题?
这个时候你要答复 redis 要害的一个个性:redis 的单线程的。keys 指令会导致线程阻塞一段时间,线上服务会进展,直到指令执行结束,服务能力复原。这个时候能够应用 scan 指令,scan 指令能够无阻塞的提取出指定模式的 key 列表,然而会有肯定的反复概率,在客户端做一次去重就能够了,然而整体所破费的工夫会比间接用 keys 指令长。

==== 如果有大量的 key 须要设置同一时间过期,个别须要留神什么?
如果大量的 key 过期工夫设置的过于集中,到过期的那个工夫点,redis 可能会呈现短暂的卡顿景象。个别须要在工夫上加一个随机值,使得过期工夫扩散一些。

==== 应用过 Redis 做异步队列么,你是怎么用的?
个别应用 list 构造作为队列,rpush 生产音讯,lpop 生产音讯。当 lpop 没有音讯的时候,要适当 sleep 一会再重试。
如果对方诘问可不可以不必 sleep 呢?
list 还有个指令叫 blpop,在没有音讯的时候,它会阻塞住直到音讯到来。如果对方诘问能不能生产一次生产屡次呢?应用 pub/sub 主题订阅者模式,能够实现 1:N 的音讯队列。
如果对方诘问 pub/sub 有什么毛病?
在消费者下线的状况下,生产的音讯会失落,得应用业余的音讯队列如 RabbitMQ 等。
如果对方诘问 redis 如何实现延时队列?
我预计当初你很想把面试官一棒打死如果你手上有一根棒球棍的话,怎么问的这么具体。然而你很克服,而后神态自若的答复道:应用 sortedset,拿工夫戳作为 score,音讯内容作为 key 调用 zadd 来生产音讯,消费者用 zrangebyscore 指令获取 N 秒之前的数据轮询进行解决。到这里,面试官暗地里曾经对你竖起了大拇指。然而他不晓得的是此刻你却竖起了中指,在椅子背地。

更多面试题或学习资源可查看我主页或评论获取

退出移动版