缓存解决方案

1 NoSQL总览

1.1 介绍

NoSQL(Not Only SQL),意即“不仅仅是SQL”,非关系型的数据库

1.2 分类

  • 键值(key-value)存储数据库
  • 列存储数据库
  • 文档型数据库
  • 图形(Graph)数据库

2 Memcached

一个自由开源的,高性能,分布式内存对象缓存系统。

  • 类型:key-value 存储数据库
  • 优点
    • 内存
    • 多核,支持多线程操作
  • 缺点
    • 不支持持久化
    • 本身不支持分布式,只能在客户端通过像一致性哈希类的分布式算法实现
    • 单个 key-value 大小有限,一个value最大只支持 1MB

3 Redis

一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。

  • 类型:key-value 存储数据库
  • 优点
    • 内存
    • 支持持久化(快照,AOF等)
    • 支持服务器端分布式(主从复制方案)
    • 支持多种数据结构
    • 单个 key-value 大小有限,一个 value 最大只支持 512MB
    • 支持pub/sub消息订阅机制
  • 缺点
    • 单核,不支持多核心多线程操作

4 MongoDB

一个基于分布式文件存储的数据库,文档型的非关系型数据库,与上面两者不同。

  • 类型:文档存储数据库
  • 优点
    • 支持持久化(binlog)
  • 缺点
    • 不支持事务

5 应用场景

需要根据使用的具体场景分析:

  • 需要数据持久化或主从复制,只能采用 Redis。
  • 需要缓存的数据只是 key-value 这样简单的结构,采用 memcache;若涉及不同数据结构,排序等选用 Redis。

5.1 推荐

  • Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。
  • Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。
  • MongoDB:主要解决海量数据的访问效率问题。

参考

坚持原创技术分享,您的支持将鼓励我继续创作!