分布式缓存Redis/memcache选型

分布式缓存:

  缓存这种能够提升指令和数据读取速度的特性,随着本地计算机系统向分布式系统的扩展,在分布式计算领域中得到了广泛的应用,称为分布式缓存。分布式缓存能够高性能地读取数据、能够动态地扩展缓存节点、能够自动发现和切换故障节点、能够自动均衡数据分区,而且能够为使用者提供图形化的管理界面,部署和维护都十分方便。

  既然是缓存,那么本质还是存储一些数据,与本地缓存一样,当请求进来时,先去缓存中查找,缓存中存在直接返回缓存中的数据,否则进入数据库查找。所谓分布式缓存,即在分布式环境下的缓存,所有节点都能共享缓存,简单的说就是把本地缓存的缓存内存移到一个共享的地方,就像数据库一样,不管哪个客户端都能访问到。

  先来了解下分布式缓存,常用的分布式缓存有Redis、MongoDB、Memcached、HBase。。。它们都是NoSq(Not Only SQL)数据库,NoSql是指非关系型数据库,我们常用的SQLserver、MySQL。。。都是关系型数据库,这些数据库用来存储重要信息,对于日常使用没问题,当面对大规模高并发的时候就有些无力,这个时候NoSq可以更好的应对。

  Redis与Memcached对比:

对比项
Redis
Memcached
高可用 支持主从节点复制配置,从节点可使用RDB和缓存的AOF命令进行同步和恢复;支持Sentinel和Cluster(从3.0版本开始)等高可用集群方案 memcached服务器互不通信,分布式部署取决于memcached客户端,需要二次开发
队列   支持lpush/brpop、publish/subscribe/psubscribe等队列和订阅模式  不支持队列,可通过第三方MemcachQ来实现
适用场景  复杂的数据结构,有持久化、高可用需求  只需key-value数据结构,数量量非常大,并发量非常大的业务 
过期策略  主动过期 +惰性过期

懒淘汰机制,每次往缓存放入数据的时候,都会存一个时间,在读取的时候要和设置的时间做 TTL 比较来判断是否过期。

虚拟内存使用  有自己的VM机制,理论上能够存储比物理内存更多的数据,当数据超量时,为引发swap,把冷数据刷到磁盘上  所有的数据储存在物理内存里 
网络模型  非阻塞I/O模型 ,提供一些非KV存储之外的排序,集合功能,在执行这些功能时,复杂的CPU计算会阻塞整个I/O调度 非阻塞I/O模型 ,但是使用了多线程,不会出现一个逻辑复杂的请求阻塞对其它请求的响应的场景
数据结构 key-value,哈希,列表,集合,有序集合 纯key-value
持久化 有,RDB和AOF
存储value容量  最大512M  最大1M 
多线程  支持单线程  支持多线程,CPU利用方面优于Redis 
单机QPS  约10W  约60W 

 

分布式缓存Redis/memcache选型

上一篇:Linux C 使用 inotify 监控文件或目录变化


下一篇:Linux基础命令总结