Redis可以用来做数据库吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis可以用来做数据库吗?相关的知识,希望对你有一定的参考价值。
结论:Redis 不能当数据用。
原因:我们理解的数据库,无论是 SQL、NoSQL、NewSQL,至少要是读写一致的。也就是说如果客户端发起一个写请求,如果服务器回复了成功,就算是之后服务器异常重启了,这个数据一样是能被读到的。
而 Redis 不是读写一致的。
答案里有人提到说 Redis 也会持久化,但是就算是 AOF,也是给客户端应答后,再定时写磁盘的,都是不一致的。
这里还没讨论磁盘损坏的问题。
有几个基于持久化存储的、兼容 Redis 协议的系统可以当作数据库使用,比如 SSDB、ARDB、Pika 等。但是据我所知,这些项目现在都不支持集群,没办法动态扩容。
另外,还有一个很麻烦的问题,就是刚才提到的 磁盘损坏问题,如果数据只存放在一个单点,一旦有磁盘损坏,就会造成数据丢失,所以,即使是同步持久化的但是没有集群备份数据的系统,用作数据库也是有很大风险的。
参考技术ARedis本来就是内存数据库,用来当做计数器,队列等的确很不错,性能高效。但是,但是,但是架构不靠谱下可能使你提心吊胆。
只用Redis作为数据库时,使用时确实很爽,突然来个新需求、数据突然暴增、数据架构迁移的时候就给跪了。
Redis是key-value数据库,面对key的内存搜索,优势明显。
大部分还是要和其他持久化数据库合作使用,就只来说几个注意的场景:
1、Redis-RDB半持久化模式下,非实时,如果一旦断电,丢失一些数据,程序能不能接受、兼容?
2、Redis主要是Key的查询,对于复杂的数据结构,需要其他sql是不是更爽?需要其他关联查询?
3、Redis吃的是纯内存,跟磁盘相比,成本也要计算在内?
4、是否需要支持像银行存取款级别的事务?
5、数据总有“冷”、“热”之分,10亿的冷数据都放Redis显然浪费资源。
性能、成本、可靠性,最终是一个权衡的问题。
Redis 已经发展了 2 年多,很多团队已经验证了它是一个靠谱的数据库。 但是它并不通用,使用场景是有限的。
知乎日报的基础数据和统计信息是用 Redis 存储的,这使得请求的平均响应时间能在 10ms 以下。 其他数据仍然需要存放在另外的地方,其实完全用 Redis 也是可行的,主要的考量是内存占用。 就使用经验而言,Redis 的数据结构很丰富,精心设计地话,能满足很多应用场景。至少很多时候比 mysql 更方便。 更重要的是,它很 cool,开发时有新鲜感。
参考技术Bredis是目前公认的速度最快的基于内存的键值对数据库,但redis的缺点也非常明显,仅提供最基本的hash set, list, sorted set等基于数据类型,不分表,没有schema,没有索引,没有外键,缺少int/date等基本数据类型,多条件查询需要通过集合内联(sinter,zinterstore)和连接间接实现,操作不便,开发效率低,可维护性不佳; 因此一般不将其视为完整的数据库单独使用,很多网站将redis作为高速缓存和session状态存储层,然后再与其他数据库搭配使用。
但是我们的开源博客和网站系统 newghost/ourjs · GitHub v0.1.x,后台数据库就采用了Redis,为了克服Redis操作不便的问题,我们还设计了redblade, 只要事先定好schema,就能像mongodb那样操作redis,自动帮你创建index/ keyword等索引;
至于内存限制,有很多第三方的Redis集群工具可以帮你把它扩展成一个内存无限大的数据库。
Redis (安装方法 )数据库采用极简的设计思想,最新版的源码包还不到2Mb。其在使用上也有别于一般的数据库。
Redis的一个Key不仅可以对应一个String类型的值,还支持hashes, lists, sets, sorted sets, bitmaps等。
redis一般用来干嘛
redis是一个单线程的NoSQL数据库,主要用来做数据缓存,一般大型网站的应用和数据库之间的那一层就是Redis。比如京东商城的页面查找功能,用户接触到的查询的第一层就是Redis数据缓存层,缓存中找不到的数据,再进入数据库查询。Redis中缓存热点数据,能够保护数据库,提高查询效率。
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。 参考技术A
redis是一个单线程的NoSQL数据库,主要用来做数据缓存,一般大型网站的应用和数据库之间的那一层就是Redis。比如京东商城的页面查找功能,用户接触到的查询的第一层就是Redis数据缓存层,缓存中找不到的数据,再进入数据库查询。Redis中缓存热点数据,能够保护数据库,提高查询效率。
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
以上是关于Redis可以用来做数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章