1.redis常见使用场景
seesion缓存、全页缓存、缓存数据、消息队列、排行榜/计数器、发布/订阅
2.redis与memcached的区别
redis支持数据类型多 redis支持持久化 redis速度快
Memecache把数据全部存在内存之中,Redis有部份存在硬盘上
value大小:redis最大可以达到1GB,而memcache只有1MB
3.redis持久化方式,两者的对比
RDB 定时快照 可能存在短时间内的数据丢失 快照可以归档
AOF 写日志文件 日志可以重写
4.redis数据类型
字符串 整数值 简单动态字符串
列表 压缩列表 双向链表
hash 压缩列表 字典
集合 整数集合 字典
有序集合 压缩列表 跳跃表和字典
5.清除过期键方法
惰性删除:访问时判断是否过
定期删除:定时任务判断是否过期
6.redis如何实现主从
全量同步:一般发生在Slave初始化阶段,向所有从服务器发送RDB快照文件
增量同步:主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。
7.Redis为什么这么快
1. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。
2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。
3. Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。
4. 另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。
5. 还有一点,Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。
8.一些优秀的开源软件采用的模型
单进程单线程模型:Redis
单进程多线程模型:Memcached
多进程单线程模型:Nginx