Redis
目录 |
---|
# Redis |
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。 |
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。 |
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。 |
# 什么时候用MongoDB 和Redis |
- 如果你还不知道如何查询数据,请使用 MongoDB 。 |
MongoDB是否适合Hackathons的初创公司,或者当你不知道你将如何查询所插入的数据。 MongoDB不对你的基础架构进行任何假设。 虽然MongoDB是非模式和 non-relational,但这并不意味着根本没有架构。 这只是意味着你的架构需要在你的应用程序中定义( 例如。 使用 Mongoose ) 。此外,MongoDB非常适合Prototype化或者尝试。 它的性能不是那么好,不能与Redis相比。 |
- 使用Redis来加速你现有的应用程序。 |
Redis可以很容易地集成为一个 LRU缓存 。 使用Redis作为独立数据库系统( 有些人喜欢把它称为"key-value"-store ) 是非常少见的。 像Craigslist这样的网站使用 Redis在它的主数据库 。 Antirez ( Redis开发人员) 演示了使用 Lamernews,它确实可以将Redis作为独立数据库系统使用。 |
- Redis没有根据你的数据进行任何假设。 |
Redis提供了一系列有用的数据结构( 例如。 设置,散列,列表,但必须明确定义如何存储数据。 简而言之,可以使用Redis和MongoDB来实现类似的东西。 Redis只是更快,但不适合Prototype化。 这是你通常首选MongoDB的一种用例。 除了这个,Redis还具有的灵活性。 它提供的底层数据结构是高性能数据库系统的构建块。 |
## 什么时候使用 Redis |
- 缓存 |
使用MongoDB缓存并没有什么意义。 会太慢的。 |
- 如果你有足够的时间思考你的数据库设计。 |
你不能简单地将文档放入Redis中。 你必须考虑你想存储和组织数据的方式。 一个例子是Redis中的哈希。 它们与"繁体中文",嵌套对象不同,这意味着你必须重新考虑存储嵌套文档的方式。 一个解决方案是在散列中存储引用到另一个散列( 比如键: 带有 [id of second hash] ) 。另一个设计理念在于将它的存储为 JSON,这个词,就是对大多数人来说 counter-intuitive |
- 如果你需要高性能的高性能。 |
击败性能Redis几乎是不可能的。 想象你的数据库和你的缓存一样快。 这就是为什么使用Redis作为真正的数据库的感觉。 |
- 如果你不介意那多少关于缩放。 |
缩放Redis并不像以前那么难。 例如你可以使用一种代理服务器来在多个Redis实例之间分发数据。 在应用程序的站点上( 例如 g, Master-slave 复杂,但分发你的复制并非键在多个Redis-instances需要被造成了。 使用 hash-function,模 等等 ) 。 比较MongoDB比较简单得多。 |
## 什么时候使用 MongoDB |
- Prototype,初创企业,Hackathons |
MongoDB非常适合快速Prototype化。 然而,性能并不是那么好。 记住,你很可能需要在你的应用程序中定义一些模式。 |
- 当你需要快速更改架构时。 |
因为没有架构 ! 在传统的关系数据库中改变表是痛苦且缓慢的。 MongoDB通过不对底层数据进行大量假设来解决这个问题。 但是,它尽可能地优化,不需要你定义一个架构。 |
TL ;DR - 使用红色并不如果性能很重要的话和你愿意付出更多的时间优化和组织你的数据。 - 如果你需要构建一个Prototype而不用担心你的数据库太多,那么使用 MongoDB 。 |
> redis 单线程内存保存数据更多是使用缓存和它的分布式锁。 |
> 而 mongodb 则是天生设计出来保存 json 数据的,因为有一些数据去设计数据库不好设计可能字段太多了,或者字段变化大。 |
# Mongodb与Redis应用指标对比 |
MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于 |
二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis |
更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。 |
# 原文链接 |
Redis和MongoDB的区别(面试受用):https://www.cnblogs.com/java-spring/p/9488227.html |
Redis教程:https://www.runoob.com/redis/redis-tutorial.html |
Redis和MongoDB的区别以及应用场景:https://www.cnblogs.com/ht22ht22/p/12567172.html |
Redis中文官网:http://www.redis.cn/ |
ASP.NET Core教程:ASP.NET Core中使用Redis缓存:https://www.cnblogs.com/dotnet261010/p/12033624.html |
Redis 在线测试:http://try.redis.io/ |
Redis 命令参考:http://doc.redisfans.com/ |
为什么要用Redis?Redis为什么这么快?:https://zhuanlan.zhihu.com/p/81195864 |
登峰造极的成就源于自律