什么是Redis?简述它的优缺点?
本质为Key-Value类型的内存数据库,像memcached,在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。
优点:纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。持保存多种数据结构,单个value的最大限制是1GB,memcached只能保存1MB的数据。
缺点:数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
Redis相比memcached有哪些优势?
(1) memcached只支持简单的字符串,redis作为其替代者,支持更为丰富的数据类型
(2) redis的速度比memcached快很多
(3) redis可以持久化其数据
Redis支持哪几种数据类型?
string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis主要消耗什么物理资源?
内存。
Redis有哪几种数据淘汰策略?
noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)
allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
allkeys-random: 回收随机的键使得新添加的数据有空间存放。
volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使
Redis官方为什么不提供Windows版本?
windows兼容不好,且用户量少
一个字符串类型的值能存储最大容量是多少?
512M
为什么Redis需要把所有数据放到内存中?
为了快速和持久化,不放入内存中的话磁盘I/O会影响性能,而且内存越来越便宜了
MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
Redis集群方案什么情况下会导致整个集群不可用?
有A,B,C三个节点的集群,在没有复制模型的情况下,如果节点B失败了,那么整个集群就会以为缺少5501-11000这个范围的槽而不可用。
Redis有哪些适合的场景?
会话缓存(Session Cache)
全页缓存(FPC)
队列
排行榜/计数器
发布/订阅
Redis如何设置密码及验证密码?
设置密码:config set requirepass 123456
授权密码:auth 123456
Redis集群会有写操作丢失吗?为什么?
Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操
什么是内存溢出和内存泄露?
内存溢出:out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露: memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。