1.Redis 是什么?
是一个基于内存的高性能key-value数据库。
2.Redis相比memcached有哪些优势:
memcached所有的值均是简单的字符串,
redis作为其替代者,支持更为丰富的数据类型,
redis的速度比memcached快很多,
redis可以持久化其数据。
3.Reids常用5种数据类型
string,list,set,sorted set,hash
4.Reids6种淘汰策略:
noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。大多数写命令都会导致占用更多的内存(有极少数会例外。
allkeys-lru:所有key通用; 优先删除最近最少使用(less recently used ,LRU) 的 key。
volatile-lru:只限于设置了 expire 的部分; 优先删除最近最少使用(less recently used ,LRU) 的 key。
allkeys-random:所有key通用; 随机删除一部分 key。
volatile-random: 只限于设置了expire的部分; 随机删除一部分 key。
volatile-ttl: 只限于设置了expire的部分; 优先删除剩余时间(time to live,TTL) 短的key。
5.为什么Redis是单线程的?
Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。
单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。
6.Redis是单线程的,但Redis为什么这么快?
完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
使用多路I/O复用模型,非阻塞IO;这里“