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. D3js-堆栈图

    效果图: 源码: <%@ page language="java" import="java.util.*" pageEncoding="UTF ...

  2. Ubuntu 12.04开启3D桌面特效

    1.设定软件源,更新软件 点击左边栏Dash主页(Ubuntu图标),输入更新管理器,会出现更新管理器,打开后点设置,弹出软件源对话框,为确保能够正常更新,选主服务器 点击检查,更新完后,点重启 2. ...

  3. Java 过滤器的作用

    Servlet API 非常久曾经就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充.在 J2EE 探索者 系列文章的最后一篇中,作者 Kyle Gabhar ...

  4. simple factory, factory method, abstract factory

    simple factory good:1 devide implementation and initialization2 use config file can make system more ...

  5. C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符

    1.算术/关系运算符 平时,定义成非成员函数以同意左右側运算对象进行转换.由于这些运算符一般不须要改变运算对象的状态,所以形參都是常量的引用. 以"+"号运算符为例: Person ...

  6. .c和.h档

    可一再声明,但不是很多定义 对于一个项目,我们应该要非常好的处理众多的.c和.h文件 1.通过头文件调用库功能:#include <stdio.h>       在非常多场合,源码不便(或 ...

  7. WPF绘制党徽(立体效果,Cool)

    原文:WPF绘制党徽(立体效果,Cool) 前面用WPF方式绘制了党旗(WPF制作的党旗) ,去年3月份利用C# 及GDI+绘制过党徽,这次使用WPF来绘制党徽. ------------------ ...

  8. git commit -s -m 注释中的换行 [加入signed-off-by

    windows环境下的Git Bash中注释的换行: 使用单引号. 或者是在Linux系统里面用终端 git add . git commit -m ' . this is the test . up ...

  9. ZOJ - 3822 Domination (DP)

    Edward is the headmaster of Marjar University. He is enthusiastic about chess and often plays chess ...

  10. JAVA开源爬虫,WebCollector,使用方便,有接口。

    假设你想下载整个网站内容爬行动物,我不希望配置heritrix复杂的爬行动物,要选择WebCollector.项目github一个不断更新. github源地址:https://github.com/ ...