一、介绍
memcache本身没有像redis所具备的数据持久化功能,但是可以通过做集群同步的方
式,让各memcache服务器的数据进行同步,从而实现数据的一致性,即保证各memcache的数据是一样的,即使有任何一台memcache发生故障,只要集群种有一台memcache可用就不会出现数据丢失,当其他memcache重新加入到集群的时候可以自动从有数据的memcache当中自动获取数据并提供服务。
repcached 是一个为 memcached 设计的插件,它提供了数据复制和同步的功能。通过安装和使用 repcached,可以构建一个高可用的 memcached 集群,其中数据可以在多个节点之间进行复制和同步,以减少单点故障的风险,并提高系统的容错能力。
二、集群部署
1、部署memcached:
准备两台memcached服务器,通过yum安装memcached。
yum install memcached -y
2、部署repcached:
安装依赖:
yum -y install libevent libevent-devel
yum -y install gcc gcc-c++ autoconf automake make
获取repcached:
wget https://jaist.dl.sourceforge.net/project/repcached/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz
解压安装:
tar xvf memcached-1.2.8-repcached-2.2.1.tar.gz
cd memcached-1.2.8-repcached-2.2.1
./configure --prefix=/usr/local/repcached --enable-replication
vim memcached.c
删去第57、59行:
编译安装:
make && make install
验证是否可执行:
echo 'PATH=/usr/local/repcached/bin:$PATH' > /etc/profile.d/repcached.sh
. /etc/profile.d/repcached.sh
3、启动memcached:
memcached -d -u memcached -x 10.1.1.20
这条命令意思是以守护进程方式启动Memcached服务,并且允许来自10.1.1.20的连接。
10.1.1.20是对端memcached服务器 (memcached2) 的IP。
4、连接memcache验证数据:
安装telnet:
yum install -y telnet
连接memcached1并存储数据:
telnet 10.1.1.10 11211
连接memcached2查看数据是否同步:
5、使用python脚本连接memcached:
安装python-memcached:
python-memcached是一个软件包,允许 Python 程序通过 Memcached 协议与 Memcached 服务器通信,以存储和检索数据。
yum -y install python-memcached
编写python脚本:
连接到 Memcached 服务器,从中存储一些键值对,再检索出来并打印出来。
#!/usr/bin/env python
#coding:utf-8import memcache
m = memcache.Client(['10.1.1.10:11211'], debug=True)
for i in range(10):m.set("key%d" % i,"v%d" % i)ret = m.get('key%d' % i)print ret
运行python脚本:
chmod +x m.py
./m.py
查看对端memcached数据是否同步: