Redis 可以用来做数据库吗

Redis 可以用来做数据库吗,第1张

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 不能当数据用。

原因:我们理解的数据库,无论是 SQL、NoSQL、NewSQL,至少要是读写一致的。也就是说如果客户端发起一个写请求,如果服务器回复了成功,就算是之后服务器异常重启了,这个数据一样是能被读到的。

而 Redis 不是读写一致的。

答案里有人提到说 Redis 也会持久化,但是就算是 AOF,也是给客户端应答后,再定时写磁盘的,都是不一致的。

这里还没讨论磁盘损坏的问题。

有几个基于持久化存储的、兼容 Redis 协议的系统可以当作数据库使用,比如 SSDB、ARDB、Pika 等。但是据我所知,这些项目现在都不支持集群,没办法动态扩容。

另外,还有一个很麻烦的问题,就是刚才提到的 磁盘损坏问题,如果数据只存放在一个单点,一旦有磁盘损坏,就会造成数据丢失,所以,即使是同步持久化的但是没有集群备份数据的系统,用作数据库也是有很大风险的。

不是。

redis是一个key-value的nosql数据库(非关系型数据库)。支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的 *** 作,而且这些 *** 作都是原子性的。为了保证效率,数据都是缓存在内存中。

MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。

Redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。

Redis和MySQL的区别:

1、类型上

从类型上来说,MySQL是关系型数据库,Redis是缓存数据库。

2、作用上

MySQL用于持久化的存储数据到硬盘,功能强大,但是速度较慢。

Redis用于存储使用较为频繁的数据到缓存中,读取速度快。

3、需求上

MySQL和Redis因为需求的不同,一般都是配合使用。

4、场景选型上

Redis和MySQL要根据具体业务场景去选型。

5、存放位置

数据存放位置MySQL:数据放在磁盘。

Redis:数据放在内存。

6、适合存放数据类型

Redis适合放一些频繁使用,比较热的数据,因为是放在内存中,读写速度都非常快,一般会应用在下面一些场景:排行榜、计数器、消息队列推送、好友关注、粉丝。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6692303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存