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. WebKit介绍和总结(一)

    一 . WebKit 简单介绍 Webkit 是一个开放源码的浏览器引擎 (web browser engine) ,最初的代码来自 KDE 的 KHTML 和 KJS( 均开放源码 ) . 苹果公司 ...

  2. gc overhead limit exceeded eclipse错误解决方式

    在Eclipse打包的时候报错:gc overhead limit exceeded eclipse 原因是Eclipse默认配置内存太小须要更改安装Eclipse目录下的eclipse.ini文件. ...

  3. 使用LabVIEWPC的制备

    使用LabVIEWPC的制备 1.下载.安装LabVIEW 如今,互联网搜索,你可以搜索出一大推LabVIEW下载并安装破解教程.因此,这里没有具体描述的.请自行百度~~.另外.提醒一下,下载LabV ...

  4. Android自己的自动化测试Monkeyrunner和用法示例

    眼下android SDK在配有现成的测试工具monkey 和 monkeyrunner两. 也许我们不看一样的兄弟名字.但事实是完全跑了两个完全不同的工具.在测试的不同区域的应用程序.总体,monk ...

  5. bootstrap的popover在trigger设置为hover时不隐藏popover

    使用bootstrap的popover,trigger设置为hover时,可以实现当鼠标放置到目标元素上时显示popover,可是无法实现当鼠标移动到popover上时不隐藏popover,在网上找了 ...

  6. sails中文文档地址

    http://sailsdoc.swift.ren/ Sails.js是一个Web框架,可以于轻松构建自定义,企业级Node.js Apps.它在设计上类似于像Ruby on Rails的MVC架构的 ...

  7. 达到J2EE在后台action控制接待javascript弹出的对话框

    1.后台Action于: request.setAttribute("message", "这项username要么password错误,请重新输入!"); 2 ...

  8. ezjailserver备份和恢复方法

    FreeBSD通过使用ezjail管理jails虚拟机非常方便.公司有多台ezjailsserver,执行n许多jails虚拟机,硬盘故障,做一个整体恢复.感性的方法如以下: 备份就绪: 暗示ezja ...

  9. yum 安装时错误 Errno 14 Couldn't resolve host 解决办法(转)

    在安装mlocate的时候发现一直报错,错误内容大致如下 Downloading Packages:http://mirrors.163.com/centos/6.5/os/i386/Packages ...

  10. 使用jQuery和css3实现了仿淘宝ued博客左边的菜单切换动画

    今天看到淘宝ued博客的左侧导航菜单的动画好,要使用jQuery和css3我做一个简单的示例,主要用途是实现jQuery 事件和css3 transition属性. 个元素来实现鼠标滑动到某个导航的背 ...