分享

Redis 可以用来做数据库吗?

xioaxu790 发表于 2014-5-12 09:46:12 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 22635
本帖最后由 xioaxu790 于 2014-5-12 09:49 编辑
问题导读:
看到许多人用来做cache,计数器,队列,那么做数据库靠谱吗?
相信,这是很多做数据库的人心中的一个大疑问。



在此期间 Redis 已经发展几年了,很多团队已经验证了它是一个靠谱的数据库。
但是它并不通用,使用场景是有限的。

知乎日报和新浪微博的基础数据和统计信息是用 Redis 存储的,这使得请求的平均响应时间能在 10ms 以下。
其他数据仍然需要存放在另外的地方,其实完全用 Redis 也是可行的,主要的考量是内存占用。

就使用经验而言,Redis 的数据结构很丰富,精心设计地话,能满足很多应用场景。至少很多时候比 MySQL 更方便。
更重要的是,它很 cool,开发时有新鲜感。

目前redis做数据库还不太靠谱。它支持的数据类型太少,而且查询功能太弱。redis并不是为了作为数据库使用的,它更多地是一个高速存取器,一般用作缓存和类似场景。

如果你想找一个关系型数据库如mysql的替代者,推荐使用mongodb,支持海量数据,查询功能强大,数据类型支持广泛。目前已有一些团队在后台完全使用mongodb作为数据库。

redis能否做数据库用取决于如下几个条件:
1:数据量,毕竟内存数据库,还是受限于内存的容量,虽然可以redis可以持久化。
2:数据的结构,是否能够将关系型数据结构都转换为key/value的形式。
3:查询的效率,对范围查询等,是否能转换为高效的hash索引查询

redis能不能拿来当数据库,取决于你想要存储什么数据:
如果你打算存储一些临时数据,数据规模不大,不需要太复杂的查询,但是对性能的要求比较高,那可以拿redis当数据库使用。
否则别拿来当数据库用。

redis 能不能做数据库,要看你具体的需求了:
1. 像上面提到的,redis的持久化有问题,如果使用aof模式,并且fsync always,则性能比mysql 还低,如果你喜欢redis 方便的数据结构而对性能要求不高,或者性能要求很高,但允许一定程度的丢失数据,则可以用redis做为数据库。
2. redis 是内存数据库, 内存写满后,数据不会存储到硬盘上(VM 不稳定,diskstore未启用),如果你内存足够大,则可以用redis作为数据库。

redis是一种k/v的内存数据库,适合小数据量的存储以及实时要求高的地方,但是不适合做完整数据库,完整数据库基本上都有一套详细解决方案,基本上没有做了的,比如mysql

项目里用到的redis是用来做缓存的,设置过期时间,到时就自动清掉。数据库还是用mysql等这种成熟的方案。
如果你非要用一种nosql来做数据库,推荐你用Mongodb。

这种KV存储完全不具备数据库所能提供的数据安全性保障。
所以还是用来做缓存比较合适。

redis做数据库不靠谱,不是所有的数据都是立即回写磁盘的。

最后,我个人觉得哈
Redis到底靠不靠谱,最终还是要看使用者对他熟悉的程度
你要 redis 得作者来使用的话, 肯定是非常靠谱的。对吧
但要是个newbie 的话, 肯定是不行的。对吧


最后,欢迎大家一起讨论哈

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条