什么是 Redis?
- redis是由Apache提供的高性能的非关系型数据库
redis的特点
- redis支持数据的持久化,支持将内存中的数据持久到磁盘上,这样可以避免重启或服务器宕机引起数据的丢失
- redis不仅仅支持key-value这样类型的数据,还支持list ,set ,zset,hash等数据结构的存储
- redis常常以集群的方式部署在节点上,采用的主从结构,支持数据的备份,即master-slave模式的数据备份
Redis 优势
- redis是基于内存存储数据的,所以有高性能的读写速度
- 有丰富的数据类型 - redis支持 strings lists hashes sets数据类型的草错
- 原子性 --redis所有的操作都是原子性的,即要么同时成功,要么同时失败
- 丰富的特性 - redis支持的发布订阅 ,通知 和key过期等特性
Redis 与其他 key-value 存储有什么不同?
- redis支持丰富的数据类型的数据的存储,如list ,set ,zset hash等
- redis支持数据的持久化,可以将数据持久化到磁盘上防止数据丢失
- redis提供原子性操作
- redis在内存中操作数据更加的简单,以及有更快的读写效率
Redis支持的数据类型
- 支持5种数据类型 string hash list set zset(sorted set 有序集合)
Redis 是单进程单线程的?
- redis是单进程单线程的,redis利用队列技术将并发访问编程串行访问,消除了传统数据库串行控制的开销
Redis 的持久化机制是什么?各自的优缺点?
- RDB 以数据集快照方式把持久化模式,记录redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件达到数据恢复
优点:
- 只有一个dump.rdb方便持久化
- 容灾性好,一个文件可以保存到安全的磁盘上
- 能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis的高性能) 4.相对于数据集大时,比 AOF 的启动效率更高。
缺点:
- 数据安全性会降低,RDB会隔一段时间持久化,在持久化的过程中如果redis出现故障,则会造成数据的丢失
AOF(Append-only file)持久化方式: 是指所有的命令行记录以 redis 命令请求协议的格式完全持久化存储)保存为 aof 文件。
优点
- 数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次
命令操作就记录到 aof 文件中一次。 - 通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof
工具解决数据一致性问题。 - AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令
进行合并重写),可以删除其中的某些命令(比如误操作的 flushall))
缺点
- AOF文件比RDB文件大,且恢复速度慢
- 数据集大的时候,比rdb启动效率低