前言:
说到面试,那就要好好准备下,不许备充分的面试,彻底是浪费时间,更是对本身的不负责。那么面试的知识点是哪些呢?面试
通过大多数朋友面试事后的反馈,Java面试重点以下:redis
数据结构与算法,JVM内存结构、垃圾回收器、回收算法、GC、并发编程相关(多线程、线程池等)、NIO/BIO、性能优化、设计模式、Spring框架:分布式相关:Redis、一致Hash算法、分布式存储、负载均衡等,微服务以及Docker容器等。算法
今天下面就列举的是Redis的相关面试问题,看看你是否能答出来。数据库
Redis高级面试专题
- 什么是 Redis?简述它的优缺点?
- Redis与memcached相比有哪些优点?
- Redis支持哪几种数据类型?
- Redis主要消耗什么物理资源?
- Redis有哪几种数据淘汰策略?
- Redis官方为何不提供Windows版本?
- 一个字符串类型的值能存储最大容量是多少?
- 为何Redis须要把全部数据放到内存中?
- Redis集群方案应该怎么作?都有哪些方案?
- Redis集群方案什么状况下会致使整个集群不可用?
- MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
- Redis有哪些适合的场景?
- Redis支持的Java客户端都有哪些?官方推荐用哪一个?
- Redis和Redisson有什么关系?
- Jedis与Redisson对比有什么优缺点?
- 说说Redis哈希槽的概念?
- Redis集群的主从复制模型是怎样的?
- Redis集群会有写操做丢失吗?为何?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
- Redis集群如何选择数据库?
- Redis中的管道有什么用?
- 怎么理解Redis事务?
- Redis事务相关的命令有哪几个?
- Rediskey的过时时间和永久有效分别怎么设置?
- Redis如何作内存优化?
- Redis回收进程如何工做的?
- 加锁机制
- 锁互斥机制
- watchdog自动延期机制
- 可重入加锁机制
- 释放锁机制
- 上述Redis分布式锁的缺点
- 使用过Redis分布式锁么,它是怎么实现的?
- 使用过Redis作异步队列么,你是怎么用的?有什么缺点?
- 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
面试题答案
一、什么是 Redis?简述它的优缺点?编程
Redis的全称是:RemoteDictionary.Server,本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库通通加载在内存当中进行操做,按期经过异步操做把数据库数据flush到硬盘上进行保存。设计模式
由于是纯内存操做,Redis的性能很是出色,每秒能够处理超过10万次读写操做,是已知性能最快的Key-ValueDB。缓存
Redis的出色之处不单单是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,所以Redis能够用来实现不少有用的功能。比方说用他的List来作FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set能够作高性能的tag系统等等。性能优化
另外Redis也能够对存入的Key-Value设置expire时间,所以也能够被看成一个功能增强版的memcached来用。Redis的主要缺点是数据库容量受到物理内存的限制,不能用做海量数据的高性能读写,所以Redis适合的场景主要局限在较小数据量的高性能操做和运算上。数据结构
二、Redis与memcached相比有哪些优点?多线程
- memcached全部的值均是简单的字符串,redis做为其替代者,支持更为丰富的数据类型
- redis的速度比memcached快不少redis的速度比memcached快不少
- redis能够持久化其数据redis能够持久化其数据
三、Redis支持哪几种数据类型?
String、List、Set、SortedSet、hashes
四、Redis主要消耗什么物理资源?
内存。
五、Redis有哪几种数据淘汰策略?
- noeviction:返回错误当内存限制达到,而且客户端尝试执行会让更多内存被使用的命令。
- allkeys-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
- volatile-lru:尝试回收最少使用的键(LRU),但仅限于在过时集合的键,使得新添加的数据有空间存放。
- allkeys-random:回收随机的键使得新添加的数据有空间存放。
- volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于在过时集合的键。
- volatile-ttl:回收在过时集合的键,而且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。
你的关注和点赞都是对笔者最大的支持。