本文是技术面试系列Redis篇,你在面试中关于Redis被常问的高频面试题都有哪些?下面一文带你详细了解,欢迎收藏!
-
Redis与Memcache的区别?
-
Redis的单线程问题?
-
Redis的持久化方案由哪些?
-
Redis的集群方式有哪些?
-
Redis的常用数据类型有哪些?
-
聊一下Redis事务机制?
-
Redis的Key过期策略?
-
Redis在项目中的哪些地方有用到?
-
Redis的缓存击穿、缓存雪崩、缓存穿透?
-
缓存冷热数据分离?
-
Redis实现分布式锁?
-
如何实现数据库与缓存数据一致?
1.Redis与Memcache的区别?
-
redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。
-
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。
-
集群模式:memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的.
-
Redis使用单线程:Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的多路 IO 复用模型。
2.Redis的单线程问题
面试官:Redis采用单线程,如何保证高并发?
面试话术:Redis快的主要原因是:
-
完全基于内存
-
数据结构简单,对数据操作也简单
-
使用多路 I/O 复用模型,充分利用CPU资源
面试官:这样做的好处是什么?
面试话术:单线程优势有下面几点:
-
代码更清晰,处理逻辑更简单
-
不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为锁而导致的性能消耗
-
不存在多进程或者多线程导致的CPU切换,充分利用CPU资源
3.Redis的持久化方案由哪些?
相关资料:
1)RDB 持久化
RDB持久化可以使用save或bgsave,为了不阻塞主进程业务,一般都使用bgsave,流程:
-
Redis 进程会 fork 出一个子进程(与父进程内存数据一致)。
-
父进程继续处理客户端请求命令
评论