Redis
简介
C语言编写的,开源的key-value数据库
网络请求模块单线程,其余应该多线程;NIO
特点
- 非关系型数据库
- 5种不同类型的值
- 持久化(快照/AOF)
- 复制特性(扩展读性能)
- 客户端分片(扩展写性能)
数据类型
持久化
- RDB(Redis Database)
-
指定时间间隔内,将内存中的数据集快照写入磁盘;fork一个子进程,先将数据集写入临时文件,写入成功后替换之前的文件
- 优点
- 整个数据库只有1个文件,备份恢复时转移方便
- 服务进程只需要fork子进程,不要IO等操作,性能最大化
- 数据集很大时,启动效率更高
- 缺点
- 持久化前出现宕机,会有数据丢失
- 数据集很大时,持久化子进程会拖慢服务器
- 持久化配置(6379.conf)
- save 900 1 #900秒后,若至少1个key变化,则dump快照
- save 300 10 #300秒后,若至少10个key变化,则dump快照
- save 60 10000 #60秒后,若至少10000个key变化,则dump快照
-
- AOF(Append-Only File)
-
以日志形式记录服务器所处理的每一个写、删除操作,以文本方式记录
- 优点
- 数据安全性高(3种同步策略:没修改同步;每秒同步;不同步)
- append模式写入日志,不影响之前;即使本次写入中宕机,依旧可以靠redis-check-aof解决数据一致性问题
- rewrite机制
- 缺点
- 相同数据集下,AOF文件大于RDB文件
- 无同步下效率等同RDB(此时没有持久化);每秒同步效率相对较高
- 持久化配置
- appendfsync always #每次有数据修改发生时都会写入AOF
- appendfsync everysec #每秒同步一次,缺省策略
- appendfsync no #从不同步,高效但数据不会持久化
-