ablegao
2015-09-10 14:05:34 +08:00
我阐述一下我的观点,
1.我记得是先有得 memcache , 后推出的 redis , 增加了数据运算功能, hash 和队列等,当时都不支持固化,起点都是提高访问速度,减少数据压力, redis 分析市场需求,尝试推出的本地固化功能,可实际应用中是这样的, 数据会分为热数据和冷数据,或者称为活跃数据和非活跃数据,全都在 redis ,显然长期下来并不合理, redis 的 RDB 快照和 AOF 纪录都会有一定的硬盘负担。关系数据库又是必不可少的,项目中多少都会用, 既然少不了, 索性不如更多的利用起来, redis 可以是一个小硬盘,多内存的专属服务器集群, 专心做缓存。 mysql 专心做存储。(补充, redis 在热数据冷数据的区分上,是支持的,可以将冷数据固化起来,有需要时提取出来, 但作为 key 的值,会一直在内存中。)
2. 没有可靠的先例或者有谁把 redis 本身的固化机制用的很好又不出问题。那在这个前提下, redis 本身在内存崩溃和重启数据恢复复杂且不确定是否数据完整的情况下,过渡依赖 redis 自身固化机制, 是在给上线的项目找麻烦。所以,同上观点, 把数据转储到一个关系数据反而更容易一些。
其实这些都是需求催生的, 所以有了很多类似于 leveldb 这种纯硬盘的 kv 数据库。 redis 的起点是 cache 。