分布式缓存系统有DCache、redis、Memcached、SSDB等

区别

实际开发中经常使用的分布式缓存系统主要有Redis、MemCache、SSDB,这三者都是KV存储方案,各有优缺,但Redis相比较而言实用性更加广泛。由于Redis特点突出,支持多种数据类型,如String、Hash、Set、List、StoredSet,并且有高可用的解决方案和集群方案,支持水平扩容。也就解决了大部分企业的需求,而MemCache、SSDB相对来说,解决方案并不算那么完善。

Redis与MemCache的区别

  • 线程操作

Redis使用单核而Memcache使用多核,也就是说,Redis属于单线程操作,MemCache属于多线程操作。在多个用户同时请求时,Redis是处理完一个请求以后再去处理下一个请求。而MemCache可以同时处理多个请求。

  • 数据结构

Redis不仅支持简单的KV类型的数据,同时提供List、Set、Hash等数据结构的存储。

  • 数据安全性

Redis和MemCache都是将数据存储在内存中,都属于内存数据库。但是MemCache服务宕机或重启后数据是不可恢复的,而Redis服务宕机或重启后可以恢复。因此Redis可以做持久化,它会将内存数据定期同步到磁盘中。

Redis提供两种持久化策略,默认支持的是RDB持久化以及需要手工开启的AOF持久化。而MemCache仅仅是将数据存储在内存中。

  • 数据备份

Redis支持数据备份,需开启master-slave主从策略。

  • 过期策略

MemCache在set时就指定了过期时间,而Redis可以通过expire设置Key的过期时间。

  • 内存回收

MemCache有内存回收机制,当程序中为它设置的内存大小,一旦存储的数据超过时,它会去自动回收,也就是释放,不然会出现内存溢出的情况。这是因为MemCache的数据都是存储在内存中的。而Redis不会出现这种情况,因为Redis可以将数据持久化到磁盘上。

Redis和SSDB的区别

SSDB是基于Google性能极高的LevelDB作为存储引擎去架构的,特性与Redis基本一致,而且可以和Redis完美整合。SSDB完全可以替换Redis,它与Redis的API兼容并支持Redis的客户端,也就是说,在redis-cli上的所有操作在SSDB中同样适用。由于SSDB该性能的写特性,所以很多时候可以通过Redis+SSDB实现分布式缓存的策略,即"用SSDB写用Redis读"。

链接:https://www.jianshu.com/p/2f2a4d9519fa

DCache特点:

https://baijiahao.baidu.com/s?id=1630872547239502395&wfr=spider&for=pc

同时支持后接 DB 实现数据持久化。DCache 具备快速水平扩展能力,同时配套有 Web 运维平台实现高效的运维操作。

DCache 研发团队成员山宝银:

Memcached 与 Redis

优点:极其强大的能力

缺点:运维困难、缺乏集群化方案与无法应对微服务趋势带来的挑战等问题。

举个例子,当前微服务是一大趋势,大家都在说要做微服务,它可以让计算与存储之间解耦,实现轻量级通信。微服务不需要管理生命同期,而作为系统组件的 Redis 则不然,“我们做服务架构设计时希望把逻辑层和数据层分离开来,但是如果使用 Redis 做缓存,缓存与DB之间的数据一致性问题,以及缓存不命中如何解决等问题都需要使用者在业务逻辑中做相关处理,这增加了一定的复杂度和难度,也增加了逻辑层和数据层的耦合度。”

DCache 架构

我们疑惑 DCache 似乎强依赖于 etcd 与 TARS 等中间件,那它本身的核心特性与能力体现在哪里?

山宝银解释,DCache 并不强依赖 etcd,“etcd 只涉及了路由服务 RouterServer 的选主,如果 RouterServer 部署单点也是可用的,而且RouterServer 的宕机不会影响到数据的读写访问,因为所有的 Proxy 与 Cache 服务都有本地的路由缓存”,关于 TARS 的采用,他说:“因为 TARS 是一个非常优秀的服务开发框架,它屏蔽了底层的网络通信细节,且自带了名字服务等很多服务化需要的功能,对于 DCache 来说,使用已有的 TARS 框架可以更好地做到服务化,我们没有必要去重复的造轮子。”

至于 DCache 本身的能力,山宝银介绍:“DCache 自身的存储引擎具有很高的性能,而且支持后接 DB,对使用者来说,不需要再关心 DB 和缓存之间的数据一致性,以及缓存不命中带来的一系列问题。”

具体来说,DCache 持久化与 Redis 不一样,后者只是把内存中的数据在本地磁盘做一个备份,保证 Redis 重启之后做数据恢复。

“Redis 持久化主要是为了数据备份。DCache 后端有了 DB 以后,业务的逻辑与后台的数据可以完全隔开,DCache自身会处理缓存与DB之间的数据一致性问题。DCache会不断的将Cache中的数据落地后端DB,如果 Cache 中存储空间不够,会将已经落地DB的冷数据淘汰掉。在数据查询的过程中,如果查询Cache不命中,会从 DB 读取并重新存到 Cache,以此来保证 Cache中数据的热点性和命中率,同时 DB 与 Cache 的穿透问题也得到解决。另外,数据持久化到后端DB的能力对于一些需要做离线数据分析的业务场景也比较方便。总之你完全不用关心数据的东西,只需要把数据写到 Cache,后端的落地由 DCache 处理。”

山宝银也提供了 DCache 的性能数据:

使用DCache需要考虑的问题:

1、用户数量(问题交流的便利性)

2、后期维护(Dcache持续维护多久)

【缓存】分布式缓存系统-DCache、redis、Memcached、SSDB相关推荐

  1. ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)

    1.   何为缓存?     缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找.由于缓存的运行速度比内存快 ...

  2. memcached 缓存 分布式缓存 常见命令,管理命令

    1.启动Memcache 常用参数  -p <num>      设置端口号(默认不设置为: 11211)  -U <num>      UDP监听端口(默认: 11211, ...

  3. 高并发读场景下的利器:本地缓存+分布式缓存

    本地缓存和分布式缓存并不是二者取其一甚至对立的关系,而是要结合使用:常见的电商高并发读场景下下,本地缓存存放热点数据,分布式缓存存放全量数据:当然这里有一个很重要的点,即要结合业务,本地缓存中的数据一 ...

  4. C# Azure 存储-分布式缓存Redis的新建配置查看

    C# Azure 存储-分布式缓存Redis的新建&配置&查看 1. 介绍 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存 ...

  5. 高性能分布式缓存Redis(缓存分类 安装 数据类型选择和应用场景 发布订阅 事务 Lua脚本 慢查询日志)

    高性能分布式缓存Redis 高性能分布式缓存Redis 1. 缓存发展史&缓存分类 1.1 大型网站中缓存的使用 1.2 常见缓存的分类 1.3 分布式缓存选型方案对比 2. Redis概述& ...

  6. 第五阶段-第五阶段高性能分布式缓存Redis

    第五阶段 大型分布式系统缓存架构进阶 文章目录 第五阶段 大型分布式系统缓存架构进阶 第一部分 Redis 快速实战 第一节 缓存原理与设计 1.1 缓存基本思想 1.11 缓存的使用场景 1.12 ...

  7. Redis 实现分布式缓存

    缓存 1. 什么是缓存? 缓存就是数据交换的缓冲区,用于临时存储数据(使用频繁的数据).当用户请求数据时,首先在缓存中寻找,如果找到了则直接返回.如果找不到,则去数据库中查找 缓存的本质就是用空间换时 ...

  8. 什么是缓存?为什么要使用Redis?

    文章目录 什么是缓存? 缓存 VS 数据库 本地缓存 VS 分布式缓存 本地缓存 分布式缓存 Memcached VS Redis 什么是缓存? 缓存是⼀个高速数据交换的存储器,使用它可以快速的访问和 ...

  9. 服务端分布式缓存与本地缓存

    缓存技术是保障系统性能的基础技术.核心技术. 缓存发挥的作用 ① 最大程度上避免对数据库的并发查询,从而降低因为数据库资源不足导致的系统故障. ② 提升系统的响应速度,保证用户体验 总之缓存使系统稳定 ...

  10. 本地缓存、分布式缓存以及多级缓存

    像MySql等传统的关系型数据库已经不能适用于所有的业务场景,比如电商系统的秒杀场景,APP首页的访问流量高峰场景,很容易造成关系型数据库的瘫痪,随着缓存技术的出现很好的解决了这个问题. 一.缓存的概 ...

最新文章

  1. Svn 笔记—— Hooks
  2. 如何参与一个顶级开源项目
  3. 51 执行远程命令(Paramiko)
  4. 隋唐5s与linux的关系,我与Linux
  5. [置顶]IFTTT与Google+是什么?ifttt怎么玩?
  6. C#获取txt记事本内容,防止乱码情况
  7. 加密芯片——3DES算法特点与应用注意事项
  8. 异常已存在具有相同键的条目。_从Viticis Fructus分离的环烯醚萜类化合物抑制紫杉醇诱导的小鼠机械性异常性疼痛...
  9. HSRP+生成树+vlan间路由!
  10. linux和windows下安装python拓展包及requirement.txt安装类库
  11. 写一条SQL,使它通过全表扫描方式的效率优于索引访问,分别给出各自的执行计划。...
  12. 关于操作系统设计的基本原理和设计原则
  13. C++读入用逗号隔开的数据
  14. 关于数据分析师的4点思考
  15. 限时免费!2016杭州云栖大会抢票指南
  16. 行为设计学-让创意更有黏性
  17. Github优秀Android开源项目,值得引用与学习(注意!里面有巨图! )
  18. api windows 线程加锁_Windows 进程与线程管理
  19. 学习基金(2)避坑-如何选择基金
  20. iOS越狱插件: Icon Tool 可定位文件目录和备份资料等功能

热门文章

  1. KEIL5软件安装步骤(全图文,全网最详细)
  2. b2c o2o_企业对消费者– B2C | 第2部分
  3. 汽车驾驶 直角转弯训练 技巧
  4. eos.io+java+客户端_eos.io环境搭建
  5. python绘制正弦函数和余弦函数
  6. 产品思维——苏杰、梁宁课程学习个人笔记——持续更新
  7. 【小程序源码】谁是卧底线下发牌器微信小程序源码下载,强大的自定义功能
  8. 【运筹学】对偶理论 : 最优性定理、强对偶性
  9. JAVA8 stram 实战
  10. 和你抢“饭碗”的40家服务机器人企业大盘点!