wangxiaoxue 2020-01-17
1,什么是redis?
redis是开源的、用c语言编写的,非关系型、 存储结构为Key-Value的数据库
2,redis的数据类型
String,List,Hash,Set,Sorted Set
3,使用redis有哪些好处?
①数据存在内存中,读取速度快
②支持丰富数据类型,支持string,list,set,sorted set,hash
③支持事务,操作都是原子性的
④可以设置存储数据的过期时间
4,redis相比memcached有哪些优点、区别?
区别、优点
①memcached 只支持string类型的数据,而redis支持五种数据类型
②memcached不支持持久化,关闭服务器,数据就消失了;redis支持持久化,会将数据保存到硬盘
③memcached不支持分布式部署,各个memcached服务器之间互不通信,独立存取数据; redis支持分布式部署,支持集群,支持主从复制,以及读写分离等。
④redis的读取速度比memcached快很多
区别:
①memcached是多线程模型,redis是单线程模型
5,Redis为什么单进程单线程也那么快?
①完全基于内存
②数据结构简单,对数据操作简单
③使用IO多路复用模型(多路:多个网络连接,复用:共用一个redis线程,且redis在内存中操作数据的速度非常快)
6,单线程的好处,弊端?
好处:
①代码清晰,处理逻辑简单
②不用去考虑各种锁的问题,不存在加锁和释放锁操作,没有因为可能出现的死锁而导致的性能消耗
③不存在多进程或者多线程的切换而消耗cpu
弊端:
①无法发挥多核cpu的性能,不过可以通过在单机中开多个redis实例来完善
7,一个字符串类型的值能存储最大容量是多少?512M
8,Redis的持久化机制是什么?各自的优缺点哪些?
RDB持久化:
RDB优点:
(1)RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备。
(2)RDB对redis对外提供读写服务的时候,影像非常小,因为redis 主进程只需要fork一个子进程出来,让子进程对磁盘io来进行rdb持久化
(3).RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
RDB缺点
(1)如果redis要故障时要尽可能少的丢失数据,RDB没有AOF好,例如1:00进行的快照,在1:10又要进行快照的时候宕机了,这个时候就会丢失10分钟的数据。
(2)RDB每次fork出子进程来执行RDB快照生成文件时,如果文件特别大,可能会导致客户端提供服务暂停数毫秒或者几秒
AOF持久化:
AOF优点: