1.前言

由于memcached把数据都放到内存里,因此性能是极高的,正因为如此,不可避免会造成数据丢失,repcached就派上用场了,它可以实现memcached的主从复制

2.安装repcached

下面采用memcached和repcached一起安装的方式

$ cd usr/local/src
$ wget https://downloads.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
$ tar -zxvf memcached-1.2.8-repcached-2.2.1.tar.gz
$ cd memcached-1.2.8-repcached-2.2.1
$ ./configure --enable-replication --program-transform-name=s/memcached/repcached/
error: 'IOV_MAX' undeclared (first use in this function) #centos编译会报这个错,需要修改代码
$ vi memcached.c
/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
#ifndef IOV_MAX
#if defined(__FreeBSD__) || defined(__APPLE__)
#define IOV_MAX 1024
#endif
#endif
$ make && make install

3.测试复制

为了方便,下面的测试是在同一台机器上开启两个端口来进行主从复制的

$ memcached -p 11211 -d -v #-d表示守护进程 -v是打印日志
replication: listen
replication: accept #按下Ctrl+c,在本机添加从服务器,-x是主cache的ip
$ memcached -p 11212 -d -x 192.168.56.10 -v
replication: connect (peer=192.168.56.10:11212)
replication: marugoto copying
replication: start #分别连接测试主从同步
$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set myname 0 0 6
pigfly
STORED
quit
Connection closed by foreign host.
$ telnet localhost 11212
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get myname
VALUE myname 0 6
pigfly #从cache已经能获取到主cache的数据了,说明主复制到从没有问题
END
set age 0 0 2
23
STORED
quit
Connection closed by foreign host.
$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get age
VALUE age 0 2
23 #这里主cache也拿到了从cache的数据,说明从复制到主也没问题
END
quit
Connection closed by foreign host.
$ telnet localhost 11212
Trying ::1...
Connected to localhost.
Escape character is '^]'.
delete age
DELETED
quit
Connection closed by foreign host.
$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get age #删除也是同步的
END

4.总结

简单配置几下就可以实现memcached的备份,是不是很开森?!考虑下面的一些情况:

  • repcached只支持memcached1.2.x,好几年没更新过了
  • 当有一台memcache宕机,repcached不会自动帮你切换到另外一台,要手动切换,考虑用缓存代理+主从复制

memcached复制-repcached的更多相关文章

  1. Repcached实现memcached复制

    1.介绍     repcached是日本人开发的实现memcached复制功能,它是一个单 master单 slave的方案,但它的master/slave都是可读写的,而且可以相互同步,如果 ma ...

  2. Memcached实战之复制----基于repcached的主从【转】

    由于 Memcached 自己没有防止单点的措施,因为为了保障 Memcached 服务的高可用,我们需要借助外部的工具来实现高可用的功能.本文引入 Repcached 这个工具,通过使用该工具我们可 ...

  3. Memcached介绍及相关知识

    memcached简介 1.memcached是一个免费开源的.高性能的,具有分布式内存对象的缓存系统.memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括 ...

  4. Ubunut 13.04下配置memcached、 python MySQLDB,python-memcache模块等

    一开始系统使用的是163的源,没有安装成功memcached,换了cn99的也不行,后来换了台湾的源,以下步骤才得以顺利进行. 更换源的方法可以参看我以前的帖子. 安装memached:sudo ap ...

  5. memcache集群

    实现memcache集群   一:memcache本身没有redis锁具备的数据持久化功能,比如RDB和AOF都没有,但是可以通过做集群的方式,让各memcache的数据进行同步,实现数据的一致性,即 ...

  6. centos安装memcache与telnet

    ####################linux下安装memcache过程######################http://www.cnblogs.com/zgx/archive/2011/ ...

  7. Linux一键安装PHP/JAVA环境OneinStack

    OneinStack 是一款PHP/JAVA环境一键配置工具.                         OneinStack包含以下组合   lnmp(Linux + Nginx+ MySQL ...

  8. OpenStack Grizzly详细安装指导

    一.环境介绍: 控制节点 eth0 (10.10.10.51), eth1 (192.168.100.51) 网络节点 eth0 (10.10.10.52), eth1 (10.20.20.52), ...

  9. 通过yum安装 memcache

    . 通过yum安装 复制代码代码如下: yum -y install memcached#安装完成后执行:memcached -h#出现memcached帮助信息说明安装成功 2. 加入启动服务 复制 ...

随机推荐

  1. 解决Nginx+Tomcat时ContextPath不同的问题

    1        问题描述 项目前端模板使用Thymeleaf,在对各种URL进行格式化输出时,都使用@{uri}代码.它会自动读取项目部署的虚拟路径,添加到URI的前端输出. 真实测试和生产环境中, ...

  2. 一次从0到1的java项目实践清单

    虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...

  3. Debug 运行正常,Release版本不能正常运行总结(转)

    引言      如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程 ...

  4. python爬虫如何入门

    学爬虫是循序渐进的过程,作为零基础小白,大体上可分为三个阶段,第一阶段是入门,掌握必备的基础知识,第二阶段是模仿,跟着别人的爬虫代码学,弄懂每一行代码,第三阶段是自己动手,这个阶段你开始有自己的解题思 ...

  5. [译]ASP.NET Core 2.0 视图引擎

    问题 如何在ASP.NET Core 2.0中使用Razor引擎来创建视图? 答案 新建一个空项目,修改Startup.cs,添加MVC服务和请求中间件: public void ConfigureS ...

  6. Picture

    Picture Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  7. HTTP服务简介

    第1章 HTTP服务介绍 1.1 简述用户访网站流程 a 进行域名信息的DNS解析   dig +trace 获得www.oldboyedu.com  ip地址信息 b 进行与网站服务器建立连接,tc ...

  8. html5客户端本地存储之sessionStorage及storage事件

    首先您可以看一下<JavaScript本地存储实践(html5的localStorage和ie的userData)>sessionStorage和上文中提到的localStorage非常相 ...

  9. URL模块之parse方法

    url.parse(urlString , boolean , boolean) parse这个方法可以将一个url的字符串解析并返回一个url的对象. 参数: urlString指传入一个url地址 ...

  10. JS中!=、==、!==、===的用法和区别

    1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较"转化成同一类型后的值"看"值"是否相等,===如果类型不同 ...