缓存常见面试题(1)
(1)第一问,在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果?
答:一个一个来看 (1)在项目中缓存是如何使用的?
这个,你结合你自己项目的业务来,你如果用了那恭喜你,你如果没用那不好意思,你硬加也得加一个场景吧 (2)为啥在项目里要用缓存呢? 用缓存,主要是俩用途,高性能和高并发
那么问题来了,如果不用缓存会是什么效果? 每次查询数据都要从数据库查,严重消耗数据库性能 用了缓存之后,我们来看下图所示:保证了高性能 接下来我们再看缓存是如何实现高并发的
(2)第二问,redis和memcached有啥区别?
(3)第三问,redis的线程模型
1)文件事件处理器(下面整个图就是一个文件事件处理器)(redis内部核心原理图) io多路复用程序(非阻塞,相当于可以多线程走法,接收socket就压入队列)的作用就是负责监听各个socket,然后把产生事件的socket压入队列 下图中的三个事件处理器虽然是单线程的,但是它是基于内存的,所以可能处理一个事件或命令只需要2ms,几毫秒,很快
(4)redis都有哪些数据类型?分别在哪些场景下使用比较合适?
第一类:string
第二类:hash 第三类:list 第四类:set 第五类:sorted set
(5)第五问,redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?
答:过期策略:①定期删除②惰性删除 上面的两种过期策略可能还是无法解决一些问题 答案是:走内存淘汰机制。 内存淘汰机制: 手写一下LRU代码实现
上一篇:
Java基础知识总结(2021版)