为什么redis取出来是null_[2020] Redis 最新面试题

Redis 的数据类型(数据结构)

  1. string (二进制安全,可以存储任意类型的数据)
  2. list(链表)
  3. 字典(就是hashmap)
  4. set(不重复无序的hashmap)
  5. zset(按照给定的 score 排序的 set)
  6. HyperLogLog(来做基数统计的算法,简介)
  7. Geo(支持地理位置的操作,使用简介)
  8. Pub/Sub
  9. BloomFilter
  10. RedisSearch
  11. Redis-ML

缓存雪崩(缓存击穿)

他们出现的原理都是访问缓存的时候,key 刚好失效,导致直接访问 DB,压垮后台。

解决办法就是让 key 的过期时间分散开,不要集中失效

分布式锁

使用 setnx 命令后为了防止死锁,需要对 key 施加 expire 命令,防止死锁,但是存在执行 expire 命令前宕机,造成死锁的发生。

解决办法就是使用复杂的 setnx 命令,他可以把 setnx 和 expire 一起原子执行

如何寻找有固定前缀的 key

使用 KEYS pattern 命令,如:KEYS alib*

但是因为 Redis 是单线程的,执行该命令后会导致 Redis 阻塞住。

解决办法就是使用 scan 命令,scan 命令可以无阻塞的提取出指定模式的 key 列表,但是会有一定的重复概率,在客户端做一次去重就可以了,但是整体所花费的时间会比直接用 keys指令长

scan 命令的特点:

Redis中的Scan命令的使用 - MSSQL123 - 博客园​www.cnblogs.com
3cf62f2cb414ef60818dcbce79464dce.png

如何用 Redis 做异步队列

使用 list 数据结构,在一遍加入,另一边取出,若取出来的是 null,则消费线程应该 sleep,或者消费线程不使用 lpop 或 rpop 命令,改为 blpop 或者 brpop 命令,若没有元素可取,它会阻塞列表直到等待超时或发现可弹出元素为止。

如何生产一次,消费多次

使用发布订阅模式

但是在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如 rabbitmq

Redis 如何实现延时队列

使用 zset ,用时间戳作为 score,消息会按照时间顺序排序

然后使用 zrangebyscore key min max [WITHSCORES] [LIMIT offset count] 来取出比当前时间小的 key 的 value

持久化

Redis 4.0 时代以 RDB 为主,AOF 只记录上一次 RDB 到现在的更改记录

开启混合持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关于Java和Redis面试题,你可以参考以下资源: 1. "Java基础教程(入门篇)"这本书可能包含与Java和Redis相关的基础知识点,例如如何连接和操作Redis以及在Java使用Redis的常见场景。 2. "java面试大集合"这本书可能包含Java和Redis面试题,涵盖了Java技术栈以及与Redis相关的问题。你可以浏览这本书的相关章节以寻找你感兴趣的Java和Redis面试题。 3. "Java基础教程(进阶篇)"这本书可能包含更深入的Java和Redis面试题,例如Java高并发和如何在Java使用Redis进行缓存。 这些资源可能给你提供一些有关Java和Redis面试题的参考。你可以根据自己的需求和兴趣选择适合的资源进行学习。希望这些资源能帮助到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [redis面试题总结(附答案)](https://blog.csdn.net/guorui_java/article/details/117194603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [java面试大集合一共485页](https://download.csdn.net/download/wm9028/88268176)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值