为什么要用Redis
因为随着互联网的发展,传统的关系型数据库,例如Mysql,已经不能适用所有的业务场景,比如秒杀的库存扣减,重点页面的访问流量高峰等这种大流量请求都很容易把数据库打崩,所以引入了缓存中间件,通过内存缓存,加快请求响应速度,降低数据库的压力,常见的有Redis和Memcache,由于Redis具有更丰富的数据类型和功能,最终选择Redis
为什么Redis比关系型数据库快
完全基于内存,绝大部分请求是纯粹的内存操作,数据在内存中以类似HashMap的方式存储,HashMap的优点就是查找和操作的时间复杂度都是O(1),官方数据是可以达到100000+QPS(不过同时要考虑网卡带宽问题,假设KEY平均1KB大小,10万QPS每秒流量大约100M/s,通常一个千兆网卡支持1000M/8 = 125M/s的流量)
数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的
采用单线程,避免了不必要的上下文切换和竞争条件,也不考虑锁的问题,自然也不会出现可能出现死锁导致的性能损耗
采用多路I/O复用模型,非阻塞I/O
它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM机制,因为一般的系统调用系统函数,会浪费一定的时间去移动和请求
Redis作为目前的主流NoSql数据库,不会是不可能的,在面试中也是非常高频的,一定不能在这个环节丢分,不管是学习,还是面试,以下知识点,都有必要掌握。
- 分布式锁
- 延迟队列
- 布隆过滤器
- 线程IO模型
- Redis事务
- Stream
- Redis管道

高频大厂Redis面试题(附答案解析)
Redis是什么?
Redis特性?
Redis合适的应用场景?
除了Redis你还知道哪些NoSQL数据库?
Redis和Memcache区别?
Redis的有几种数据类型?
Redis有哪些高级功能?
安装过Redis吗,简单说下步骤?
redis几个比较主要的可执行文件?分别是?
启动Redis的几种方式?
Redis客户端命令执行的方式?
如何停止redis服务?
如何查看当前键是否存在?
如何删除数据?
Redis为什么快?单线程?
字符串最大不能超过多少?
Redis默认分多少个数据库?
redis持久化的几种方式?
RDB持久化?
RDB的持久化是如何触发的?
RDB的优点?
RDB的缺点?
如何禁用持久化?
AOF持久化?
如何查询AOF是否开启?
如何开启AOF?
AOF工作流程?
为什么AOF要先把命令追加到缓存区(aof_buf)中?
AOF持久化如何触发的?
AOF优点?
AOF缺点?
混合持久化?优缺点?
Redis的Java客户端官方推荐?实际选择?
Redis事务?
Redis事务开始到结束的几个阶段?
Redis中key的过期操作?
Redis过期键删除策略?
Pipeline是什么?为什么要它?
如何获取当前最大内存?如何动态设置?
Redis内存溢出控制?
Redis内存溢出策略?
Redis高可用方案?
Redis集群方案?
Redis Cluster槽范围?
Redis锁实现思路?
什么是布隆过滤器?
什么是缓存穿透?处理问题?
什么是缓存预热?
答案解析


复习文档



分布式锁

延迟队列

布隆过滤器

线程 IO 模型

Redis事务

Stream

Redis管道

1879

被折叠的 条评论
为什么被折叠?



