文章目录
- 前言
- 1.Redis的高并发和快速原因?你为什么选择redis?Redis跟其他缓存相比,优势在哪里?
- 2.redis为什么是单线程的?
- 3.Redis的单线程的优劣性?
- 4.Redis中的数据类型有哪些?
- 5.跳表的原理是什么?
- 6.Redis相关命令
- 7.持久化方式有哪些?有什么区别?
- 8.你了解Redis事务机制吗?
- 9.什么是悲观锁?什么是乐观锁?
- 10.主从复制的原理:
- 11.主从复制的三种方式
- 12.什么是哨兵机制?哨兵机制的工作原理是什么?
- 13.知道什么是热key吗?热key问题怎么解决?
- 14.什么是缓存击穿、缓存穿透、缓存雪崩?
- 15.Redis的过期策略有哪些?
- 16.那么定期+惰性都没有删除过期的key怎么办?
前言
具行业大佬打听得知,redis一直是各公司面试必问的,今天斗胆从大佬 电脑中窃取到redis面试题目,舍命分享给大家,望大家珍惜,不用谢我,因为我叫雷锋。
答应我背下来好吗????
1.Redis的高并发和快速原因?你为什么选择redis?Redis跟其他缓存相比,优势在哪里?
- redis是基于内存的,内存的读写速度非常快;
- redis是单线程的,省去了很多上下文切换线程的时间;
- redis使用I/O多路复用技术,可以处理并发的连接。(客户端的连接不占用线程资源,只有当命令成功发送的时候,才会进入单线程,然后依次执行)
解释:多路:多个socket、多个客户端、多个黑窗口
复用:多用一个线程
图解如下:
2.redis为什么是单线程的?
- 官方答案:因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。
3.Redis的单线程的优劣性?
- 单线程的优势:代码清晰,处理逻辑简单
- 单线程的劣势:无法发挥多核CPU的性能,不过可以通过在单机开多个Redis实例来完善。
4.Redis中的数据类型有哪些?
- String:字符串类型,一个key对应一个值,可以存储任何内容,图片、视频都行,但是大小限制在512M以内。
- List:列表,单键多值,值可以重复。
- Set:集合,单间多值,值不可以重复。
- Hash:散列,key后面跟着field属性,从而确定一个值。
- zSet:有序集合,单键多值,有序不重复集合,可以自动排序。
5.跳表的原理是什么?
- 跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。跳表是在原有的有序链表上增加了多级索引,通过索引可以进行快速查找。跳表不仅可以提高搜索的性能,而且能提高插入和删除的性能。Redis中的zSet集合底层就是运用了这种数据结构。
6.Redis相关命令
Redis key
- 1.exists key判断某个key是否存在
- 2.expire key 10 10秒钟:为给定的key设置过期时间
String
- 1.setnx key value :只有在key不存在的时候设置key的值
常用来做分布式锁