.
目录
横向比较
概括:
内存比较
性能对比
Redis 和 Couchbase 都是基于内存的数据存储系统。Couchbase 是高性能,高伸缩性和高可用的分布式缓存系统;Redis 是一个开源的内存数据结构存储系统。memcached 就不提了,low !
横向比较
| 类别 | COUCHBASE | REDIS | |
|---|---|---|---|
| 类别 | NoSQL | NoSQL | |
| 网站 | www.couchbase.com | redis.IO | |
| 许可证 | GFDLApache许可证2Couchbase公司企业许可协议:免费版Couchbase公司社区版许可协议 | BSD的许可证 | |
| 设计 | |||
| 数据库模型 | 键值无模式面向文档NoSQL的 | 键值无模式发布/订阅 | |
| 数据存储 | 易失性存储器文件系统 | 易失性存储器文件系统 | |
| 嵌入 | 无 | 无 | |
| 产品特点 | |||
| 查询语言 | memcached协议 | API calls Lua | |
| 数据类型 | JSON | 数据结构 | |
| 有条件的条目更新 | 是的 | 是的 | |
| MAP和REDUCE | 是的 | 无 | |
| UNICODE | 是的 | 是的 | |
| TTL | 是的 | 是的 | |
| 压缩 | 是的 | 是的 | |
| 完整性 | |||
| 诚信示范 | MVCC | ? | |
| 原子 | 是的 | 是的 | |
| 一致性 | 是的 | 是的 | |
| 隔离 | 是的 | 是的 | |
| 耐用性(数据存储) | 是的 | 是的 | |
| 交易 | 无 | 是的 | |
| 参照完整性 | 无 | 无 | |
| 版本控制 | 是的 | 无 | |
| 锁定模式 | 乐观锁悲观锁 | 锁定Free模特儿 | |
| 索引 | |||
| 二级索引 | 是的 | 无 | |
| 组合键 | 是的 | 无 | |
| 全文搜索 | 是的 | 无 | |
| 地理空间索引 | 是的 | ? | |
| 图支持 | 无 | 无 | |
| 分配 | |||
| 横向可扩展性 | 是的 | 是的 | |
| 复制 | 是的 | 是的 | |
| 复制模式 | 多主复制 | 主从复制 | |
| 分片 | 是的 | 无 | |
| 无共享架构 | 是的 | 是的 | |
| 限制 | |||
| 值的大小最大。 | 20 MB | 512 MB | |
| 系统要求 | |||
| 操作系统 | Ubuntu
red hat windows Mac OS X | Linux
* NIX windows Mac OS X | |
| 本机驱动程序 | Beanshell PHP Perl C# Ruby Go JavaScript C++ Java Python Erlang | C Actionscript 3.0 C# C++ Clojure Common Lisp D Lang Dart Erlang Fancy Go Haskell Haxe io Java JavaScript Lua Objective-C Perl PHP Pure Data Python Ruby Scala Scheme Smalltalk Tcl | |
| 最低内存 | ? | 2 MB | |
| 架构 | |||
| 程序设计语言 | C C++ Erlang | Ç | |
| 更多 | |||
| 描述 | 非常灵活的高性能key-value/document存储,但相当慢,支持索引。 | 在内存中的数据结构存储 | |
| 多用户系统 | 是的 | 是的 | |
| 软件分发 | 软件包管理系统 | 压缩包软件包管理系统 | |
| 对象 – 关系映射(ORM) | 是的 | 是的 | |
| 文档级 | |||
| REST风格 | 无 | ? | |
| 分布式计数器 | 是的 | ? | |
| 免费使用 | 有条件的 | 是的 | |
| 活跃 | 是的 | 是的 | |
| 数据库连接池 | 是的 | 是的 | |
| 实时分析 | 是的 | 是的 | |
| 社区主导型 | 基本的 | ? | |
| WSDL | 无 | 无 | |
| WEB界面 | 是的 | 无 | |
| 在线备份 | 是的 | ? | |
| 基于功能的索引 | 无 | 无 | |
| 密钥长度最大 | 250 | ? | |
| 登录 | 是的 | 是的 | |
| 实施的灵活性 | (67%的全球投票) | (50%的全球投票) | |
| 下载 | www.couchbase.com /download | redis.IO /download | |
| 备份功能 | 基本的 | 好 | |
| 查询缓存 | 无 | ? | |
| 易于使用 | |||
| 就地更新 | 是的 | ? | |
| 免费用于商业用途 | 是的 | 是的 | |
| 排序 | 是的 | 是的 | |
| 皑皑的收藏 | 无 | 是的 | |
| 可调的担忧写 | 是的 | 是的 | |
| 阅读喜好 | 无 | ? | |
| 运算/秒 | 160 000 | ? | |
| JSON | 是的 | 是的 | |
| 灵活的表(架构) | 是的 | ? | |
| 重降低 | 是的 | ? | |
| 代码行 | ? | 30 K时 | |
| 事件驱动架构 | ? | 是的 | |
| 管道汇聚 | ? | 是的 | |
| 弹簧数据支持 | ? | 是的 | |
| 类型 | COUCHBASE | REDIS的 | |
概括
Redis 相比 Couchbase 来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在 Couchbase 里,你需要将数据拿到客户端来进行类似的修改再 set 回去(你需要先先通过 get 方法从服务器读取数据文档,并将文档反序列化为 json 对象,之后修改 json 对象对应属性,再通过 set 方法将数据写入服务器,序列化后进行存储)。这大大增加了网络 IO 的次数和传输中的数据体积。在 Redis 中,这些复杂的操作通常和一般的 GET/SET 一样高效。
内存比较
使用简单的 key-value 存储的话,Couchbase 的内存利用率更高,而 Redis 采用 hash 结构来做 key-value 存储,由于其组合式的压缩,其内存利用率会高于 Couchbase。所以,如果需要缓存能够支持更复杂的数据结构和更频繁数据的部分更新操作,那么 Redis 会是不错的选择。
性能对比
由于 Redis 只使用单核,而 Couchbase 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Couchbase 性能更高。而在 100k 以上的数据中,Couchbase 性能要高于 Redis,虽然 Redis 最近也在存储大数据的性能上进行优化,但是比起 Couchbase,还是稍有逊色。
至于其他(数据类型,效率,集群,分布式等的信息,可以去官网看),可去官网一探究竟!
redis: https://redis.io/ http://www.redis.cn/
couchbase : https://www.couchbase.com/
