• 分布式缓存Redis/memcache选型 IT


    分布式缓存:

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

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

      先来了解下分布式缓存,常用的分布式缓存有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 
  • 相关阅读:
    inspector元素定位[wda-facebook]
    pip下载 requirements.txt
    APP运行出现闪退
    安卓的webview报错
    深度强化学习入门笔记
    强化学习入门笔记
    如何将本地代码上传到GitHub
    Sublime插件Emmet的错误及Tab补全代码
    flask的url错误
    计算输出特征图的空间尺寸
  • 原文地址:https://www.cnblogs.com/itfeng813/p/14486433.html
Copyright © 2020-2023  润新知