Cache为缓解DB装有重要数据,下面经常使用memcached和redis要总结,促进技术的选择。


1 memcached 
(1) 有限支持的操作,持经常使用的set。get。delete和过期删除等。
(2) 本身不支持分布式特性。分布式特性是通过client来提供,client须要维护多个server的信息,添加或者删除一个server节点,须要更新全部的client维护的信息。
(3) client支持一致性hash算法,不提供持久化,不提供Replaction机制。
(4) 性能高。操作简单,存储复杂的数据结构,须要自己提供序列化机制。
(5) 近期版本号不怎么更新,作为内存池的一种扩展。功能已经非常完备了。
2 redis
(1) 提供丰富的操作,支持丰富的数据结构。
(2) 本身不提供分布式特性。分布式特性可通过Redis cluster或者Twemproxy支持分布式操作。
(3) 提供持久化,提供主从同步机制。提供的机制都不是严格一致性的,会造成数据短暂的不一致性。
(4) 官方支持特别好,一直在提供和完好一些新特性。这个非常重要!


这里简介下Twemproxy

1 这个是Twitter开源的Memcached和Redis的代理层,使用Twemproxy的集群方案例如以下:

2 Twemproxy的功能介绍

(1)前端使用 Twemproxy 做代理,后端的 Redis 数据能基本上依据 key 来进行比較均衡的分布。

(2)后端一台 Redis 挂掉后。Twemproxy 可以自己主动摘除。

恢复后,Twemproxy 可以自己主动识别、恢复并又一次增加到 Redis 组中又一次使用。

(3)Redis 挂掉后。后端数据是否丢失根据 Redis 本身的策略配置,与 Twemproxy 基本无关。

(4)假设要新添加一台 Redis。Twemproxy 须要重新启动才干生效;而且数据不会自己主动又一次 Reblance,须要人工单独写脚本来实现。

(5)如同一时候部署多个 Twemproxy,配置文件一致(測试配置为distribution:ketama,modula),则能够从随意一个读取。都能够正确读取 key相应的值。

(6)多台 Twemproxy 配置一样。client分别连接多台 Twemproxy能够在一定条件下提高性能。依据 Server 数量,提高比例在 110-150%之间。

(7)如原来已经有 2 个节点 Redis,兴许有添加 2 个 Redis,则数据分布计算与原来的 Redis 分布无关,现有数据假设须要分布均匀的话,须要人工单独处理。

(8)假设 Twemproxy 的后端节点数量发生变化,Twemproxy 同样算法的前提下,原来的数据必须又一次处理分布。否则会存在找不到key值的情况

结合这边的业务特点,我认为能够使用Redis来提供Cache服务。

1  提供多个(大于1)Redis实例,且在不同机器上面,同一时候在多个机器上面都部署Twemproxy代理,规避Cache的单点故障。
2  开启Redis的Replaction机制,通过区分不同业务。来区分使用主Cache和从Cache。分担请求压力。

3  经确认,Redis也存在delete删除失败的情形,这个须要配合Cache过期时间,异步删除来完好。

4  使用Cache的同一时候,须要区分业务。敏感业务不做Cache。保证数据的严格一致性。

5  Redis的持久化作用不大,能够考虑关闭。



版权声明:本文博客原创文章,博客,未经同意,不得转载。

Cache 在选择的几点思考的更多相关文章

  1. 如何选择PHP框架?

    PHP是世界上最受欢迎的编程语言之—.最近发布的PHP7令这种服务器的编程语言比以前变得更好,更稳定了. PHP被广泛应用于重大的项目.例如Facebook就是使用PHP来维护和创建它们的内部系统的. ...

  2. [ZZ] Cache

    http://blog.sina.com.cn/s/blog_6472c4cc0102duzr.html 处理器微架构访问Cache的方法与访问主存储器有类似之处.主存储器使用地址编码方式,微架构可以 ...

  3. 我的前端故事----关于redux的一些思考

    背景 我一个前端,今年第一份工作就是接手一个 APP 的开发...一个线下 BD 人员用的推广 APP,为了让我这个一天原生开发都没有学过的人能快速开发上线,于是乎就选择了 react-native ...

  4. ****** 三十四 ******、软设笔记【存储器系统】-Cache存储器

    Cache存储器 Cache(高速缓冲存储器) 高速缓冲存储器是位于主存与CPU之间的一级存储器,有静态存储芯片(SRAM)组成,容量比较小,速度比主存高得多,接近于CPU的速度,单位成本比内存高.C ...

  5. Guava Cache 使用笔记

    https://www.cnblogs.com/parryyang/p/5777019.html https://www.cnblogs.com/shoren/p/guava_cache.html J ...

  6. 以Spring Cache扩展为例介绍如何进行高效的源码的阅读

    摘要 日常开发中,需要用到各种各样的框架来实现API.系统的构建.作为程序员,除了会使用框架还必须要了解框架工作的原理.这样可以便于我们排查问题,和自定义的扩展.那么如何去学习框架呢.通常我们通过阅读 ...

  7. 如何进行高效的源码阅读:以Spring Cache扩展为例带你搞清楚

    摘要 日常开发中,需要用到各种各样的框架来实现API.系统的构建.作为程序员,除了会使用框架还必须要了解框架工作的原理.这样可以便于我们排查问题,和自定义的扩展.那么如何去学习框架呢.通常我们通过阅读 ...

  8. 关于Kernel的思考

    学习播客_KLDA(推导得很通俗,下面的推导就是源于此篇博客) 第一部分:按照自己的理解,模仿抄!学习播客来完成一下KLDA的推导. 第二部分:对于Kernel的思考 KLDA:顾名思义,就是把Ker ...

  9. 操作系统-存储管理(3)高速缓存Cache

    存储器的组织形式: 数据总是在相邻两层之间复制传送,最小传送单位是定长块,互为副本(不删除) ️指令和数据有时间局部性和空间局部性.   高速缓冲存储器Cache 介于CPU和主存储器间的高速小容量存 ...

随机推荐

  1. Objective-C路成魔【18-复制对象】

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 将一个变量 ...

  2. [Cacti] cacti监控mongodb性能实战

    .生成监控图 在界面.选择"Device".选择mongodb服务器连接"3.X2_mongodb".再选择右上角的"Create Graphs fo ...

  3. Ubuntu14.04 用 CrossOver 安装 TMQQ2013

    Crossover 是 wine 的优化+商业版本号 ,  免去了wine的繁琐配置,让Ubuntu安装windows软件很easy..... 部分移植的软件还有官方的维护,执行效果也比較好..... ...

  4. Android实战技术:IPC方式简介教程

    非实时,通知性的方式 第一种方式就是Intent,Intent可以非常方便的通讯,但是它是非实时的,无法进行实时的像函数调用那样的实时的通讯. 实时的函数调用 但是IPC的根本目的还是为了实现函数的调 ...

  5. 协同编辑多人word一个小技巧文件

    协同编辑多人word窍门 近期在工作中编写标书时因为不同内容分给了各个部门去制作.可是在汇总后遇到再次改动的问题.对方把改动后的部分文档发给我粘贴到标书中后,所有的格式所有都乱了.又一次整理格式.标题 ...

  6. 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree

    原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...

  7. 在VC/MFC中嵌入Google地图——图文并茂

    近期须要实验室须要将在无人机地面站中嵌入地图,在网上找了非常多资料,最终有些眉目了, 首先.做这个须要用到的知识有.MFC控件.MFC类库.JavaScript脚本语言.Google API.Goog ...

  8. 破解win2008r2服务器域用户名

    启动PE系统 进入 cmd窗口 cd 进入 win2008r2服务器的安装盘(假设为d:) d: cd windows/system32 ren osk.exe osk02.exe  #重命令屏幕键盘 ...

  9. dbus 和 policykit 实例篇(python) ()转

    使用policykit 的程序一般都有一个dbus daemon程序来完成相关操作,这个dbus daemon 会在系统注册一个system bus 服务名,用于响应要求root privileged ...

  10. BAE3.0搭建wordpress注意

    仅仅是mark一个注意的点,数据库连接时,主机是: /** MySQL主机 */ define('DB_HOST', 'sqld.duapp.com:4050');