持久化
RDB 快照
全量
在服务线上请求的同时,Redis还需要进行内存快照,内存快照要求Redis必须
进行文件IO操作,可文件IO操作是不能使用多路复用API. IO操作不能阻塞.
原理:
COW(copy on write) 详情可以看CopyOnWrite.md,
优点支持并发,缺点只能保证最终一致性,还可能导致频繁gc.
AOF 追加
增量
缺点:重启重放AOF日志会很慢,AOF会很大,定期进行瘦身.
频率:
alaways everysec(最优) no
AOF重写(瘦身)
通过 bgrewriteaof命令
其原理就是开辟一个子进程对内存进行遍历转换成一系列 Redis 的操作指令,
序列化到一个新的AOF日志文件中.序列化完毕后再将操作期间发生的增量AOF
日志追加到这个新的AOF日志文件中,追加完毕后就立即替代旧的AOF日志.
Redis 4.0 混合持久化
redis可以用作数据库吗?
性能 可靠性 成本上考虑
1、Redis-RDB半持久化模式下,非实时,如果一旦断电,丢失一些数据,程序能不能接受、兼容?
2、Redis主要是Key的查询,对于复杂的数据结构,需要其他sql是不是更爽?需要其他关联查询?
3、Redis吃的是纯内存,跟磁盘相比,成本也要计算在内?
4、是否需要支持像银行存取款级别的事务?
5、数据总有“冷”、“热”之分,10亿的冷数据都放Redis显然浪费资源
网友评论