分布式内存缓存与数据库- MongoDB,Redis和Memcached的差异

15人阅读 评论(0) 收藏 举报
分类:


  • 心得

Memecached 是专门为内存缓存设计的,支持多线程,没有数据持久化功能。内存管理是采用slab allocation 机制,即通过建立一个较大的内存块,然后划分为若干不同大小的chunk,将这些chunk通过相同尺寸原则进行slab class分组。当用户提交和查询数据时,会根据数据大小选择合适的slab class组,通过查询内部的chunk列表找到空闲chunk进行存储以及找到相应的key的chunk进行查询。采用多线程在单机进行操作时其内存管理机制效率比较高,不会产生内存碎片,比较适合并发数较高但又不需要提供永久硬盘存储的纯缓存应用。当使用分布应用时,使用客户端进行分布式节点管理。

Redis 是一种支持缓存,内存和硬盘操作的单线程存储系统,具有数据持久化功能,支持丰富的数据结构。内存管理是将内存块的大小size存入头部,size所占据的内存大小是已知的,为size_t类型的长度,然后返回ret_ptr。当需要释放内存的时候,ret_ptr被传给内存管理程序。通过ret_ptr,程序可以很容易的算出real_ptr的值,然后将real_ptr传给free释放内存.Redis虽然是基于内存的存储系统,但是它本身是支持内存数据的持久化的,而且提供两种主要的持久化策略:RDB快照和AOF日志.支持cluster集群。  

    MongoDB 是一个基于文档的Nosql数据库,所有数据是从磁盘上进行读写的。同时又支持内存级别但操作,可以认为是nosql和关系型数据库的中间体,MongoDB善长的是对无模式JSON数据的查询。支持cluster集群。

   总结,Redis更加丰富,除了提供缓存功能,还可以作为数据库使用。如果只是实现缓存功能那么memcached更加方便快速,如果只是需要一个文档型数据库,那么mongoDB是很容易上手的查询性能不错的数据库选择。如果想通过一个系统实现缓存,内存操作的非关系型数据库,那么Redis是更好的选择。

参考:
  • 论述Redis和Memcached的差异-博客-云栖社区-阿里云
  • System Properties Comparison Memcached vs. MongoDB vs. Redis

    Editorial information provided by DB-Engines
    NameMemcached  XMongoDB  XRedis  X
    DescriptionIn-memory key-value store, originally intended for cachingOne of the most popular document storesIn-memory data structure store, used as database, cache and message broker info
    Primary database modelKey-value storeDocument storeKey-value store info
    Secondary database models Key-value storeDocument store info
    Graph DBMS info
    Time Series DBMS info
    DB-Engines Ranking inforanking trend
    Trend Chart
    Score33.79
    Rank#23  Overall
     #3  Key-value stores
    Score341.41
    Rank#5  Overall
     #1  Document stores
    Score130.11
    Rank#9  Overall
     #1  Key-value stores
    Websitewww.memcached.orgwww.mongodb.comredis.io
    Technical documentationgithub.com/­memcached/­memcached/­wikidocs.mongodb.com/­manualredis.io/­documentation
    DeveloperDanga Interactive infoMongoDB, IncSalvatore Sanfilippo info
    Initial release200320092009
    Current release1.5.6, February 20183.6.3, February 20184.0.9, March 2018
    License infoOpen Source infoOpen Source infoOpen Source info
    Cloud-based infononono
    Implementation languageCC++C
    Server operating systemsFreeBSD
    Linux
    OS X
    Unix
    Windows
    Linux
    OS X
    Solaris
    Windows
    BSD
    Linux
    OS X
    Windows info
    Data schemeschema-freeschema-free infoschema-free
    Typing infonoyes infopartial info
    XML support info  no
    Secondary indexesnoyesno
    SQL infononono
    APIs and other access methodsProprietary protocolproprietary protocol using JSONproprietary protocol info
    Supported programming languages.Net
    C
    C++
    ColdFusion
    Erlang
    Java
    Lisp
    Lua
    OCaml
    Perl
    PHP
    Python
    Ruby
    Actionscript info
    C
    C#
    C++
    Clojure info
    ColdFusion info
    D info
    Dart info
    Delphi info
    Erlang
    Go info
    Groovy info
    Haskell
    Java
    JavaScript
    Lisp info
    Lua info
    MatLab info
    Perl
    PHP
    PowerShell info
    Prolog info
    Python
    R info
    Ruby
    Scala
    Smalltalk info
    C
    C#
    C++
    Clojure
    Crystal
    D
    Dart
    Elixir
    Erlang
    Fancy
    Go
    Haskell
    Haxe
    Java
    JavaScript (Node.js)
    Lisp
    Lua
    MatLab
    Objective-C
    OCaml
    Pascal
    Perl
    PHP
    Prolog
    Pure Data
    Python
    R
    Rebol
    Ruby
    Rust
    Scala
    Scheme
    Smalltalk
    Swift
    Tcl
    Visual Basic
    Server-side scripts infonoJavaScriptLua
    Triggersnonono
    Partitioning methods infononeShardingSharding
    Replication methods infonone infoMaster-slave replicationMaster-slave replication info
    Multi-master replication info
    MapReduce infonoyesno
    Consistency concepts info Eventual Consistency
    Immediate Consistency info
    Eventual Consistency
    Foreign keys infonono infono
    Transaction concepts infonono infoOptimistic locking, atomic execution of commands blocks and scripts
    Concurrency infoyesyesyes info
    Durability infonoyes infoyes info
    In-memory capabilities info yes infoyes
    User concepts infoyes infoAccess rights for users and rolesSimple password-based access control info

查看评论

Mongodb缓存的使用

由于担心项目性能问题,最初的数据库设计就一直有缓存服务器,用的最多的还是mongodb,今天,我就简单谈谈mongodb在项目中的使用。 其实,我使用mongodb最多的是用于查询,确实,作为nos...
  • chengmin1989
  • chengmin1989
  • 2017-03-17 18:02:20
  • 4484

Memcache缓存与Mongodb数据库的优势和应用

先说说自己对Memcache和Mongodb的一些看法,主要是抛砖引玉了,希望看到大家的意见和补充。MemcacheMemcache的优势我觉得总结下来主要体现在:1) 分布式。可以由10台拥有4G内...
  • xqy1522
  • xqy1522
  • 2011-03-05 16:07:00
  • 783

Memcached,Redis,MongoDB(数据缓存系统)方案分析与对比

一、问题 每次查询的数据量极大,需要让服务器更加快速地响应用户的请求。 二、解决方案        1.  通过高速服务器Cache缓存数据库数据        2. 内存数据库 三、主流Cache和...
  • biaozhun90
  • biaozhun90
  • 2017-03-09 10:16:46
  • 743

分布式缓存学习之一:Memcached, Redis, MongoDB区别

分布式缓存学习之一:Memcached, Redis, MongoDB区别   Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。   Memcach...
  • yu540174014
  • yu540174014
  • 2017-08-29 23:32:21
  • 84

缓存,Redis的机制及与MongoDB的对比

1MongoDB与Redis区别①. 性能方面:redis要大于mongodb②. 操作的便利性:a. Mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富b. Redi...
  • CQ173
  • CQ173
  • 2018-03-29 00:09:16
  • 26

用redis缓存mongodb数据

原文链接:http://www.sitepoint.com/caching-a-mongodb-database-with-redis/ 读数据的策略: 防止redis内存一直增长...
  • tl070602023
  • tl070602023
  • 2016-05-12 15:12:22
  • 898

[免费]生成<em>Mongodb缓存</em>

本示例将地图<em>缓存</em>入库到<em>Mongodb数据</em>里,便于其他客户端使用地图<em>缓存</em>,只需拷贝<em>缓存</em>的sci文件即可
  • 2018年04月08日 00:00

Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析

一、问题:     数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求。   二、解决方案:      1.通过高速服务器Cache缓存数据库数据  ...
  • yulijianzhangminmin
  • yulijianzhangminmin
  • 2017-01-22 09:47:58
  • 178

分布式缓存Redis之与Memcached的比较

写在前面  本学习教程所有示例代码见GitHub:https://github.com/selfconzrr/Redis_Learning  由于在项目中并没有使用Memcached,所以在这贴出Me...
  • u011489043
  • u011489043
  • 2017-12-28 15:07:59
  • 750

memcached&redis等分布式缓存的实现原理

memcached&redis等分布式缓存的实现原理 DBAplus社群(陈科) · 2015-12-13 07:00 12月9日,河狸家资深架构师...
  • shaochenshuo
  • shaochenshuo
  • 2016-01-21 10:54:25
  • 3858
    个人资料
    持之以恒
    等级:
    访问量: 7677
    积分: 512
    排名: 10万+