Memcache介绍及安装部署

Memcache 官网:http://memcached.org/

1、Memcache 的特性:

(1)可以通过做集群同步的方式,让各 memcache 服务器的数据进行同步,从而实现数据的一致性
(2)memcached使用libevent库,能在 Linux、BSD、Solaris 等操作系统上发挥其高性能。
(3)Memcache 支持最大的内存存储对象为 1M,memcache 最适合报错用户的session实现session 共享。Memcached 存储数据时, Memcached 会去申请 1MB 的内存, 把该块内存称为一个slab, 也称为一个 page。
(4)memcached 具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/

2、redis 对比 memcached的优势

(1)支持数据的持久化:重启后可以从磁盘备份文件中恢复至内存继续使用。
(2)支持更多的数据类型:支持 string(字符串)、hash(哈希数据)、list(列表)、set(集合)、zet(有序集合)
(3)支持数据的备份:可以实现类似于数据的master-slave模式的数据备份,另外也支持使用快照+AOF。
(4)支持更大的 value 数据:memcache 单个key value最大只支持 1MB,而 redis 最大支持 512MB。
(5)支持分布式集群以实现更高并发:Redis 是单线程,memcache是多线程,所以单机情况下没memcache 并发高,但 redis 支持分布式集群以实现更高的并发,单 Redis 实例可以实现数万并发。
(6)支持集群横向扩展:基于redis cluster的横向扩展,可以实现分布式集群,大幅提升性能和数据安全性。
(7)都是基于C语言开发。

3、Memcache 的安装与部署
(1)yum安装与部署
# yum install memcached -y
# vim /etc/sysconfig/memcached
PORT="11211" #监听端口
USER="memcached" #启动用户
MAXCONN="1024" #最大连接数
CACHESIZE="1024" #最大使用内存
OPTIONS="" #其他选项
# ps -ef | grep memcached
# ss -ntl(11211)
(2)python 操作 memcache:
#!/usr/bin/env python
#coding:utf-8
#Author:Zhang ShiJie
import memcache
m = memcache.Client(['172.18.200.106:11211'], debug=True)
for i in range(100):
 	m.set("key%d" % i,"v%d" % i)
 	ret = m.get('key%d' % i)
 	print ret
(3)编译安装与启动
# yum install libevent libevent-devel –y
# pwd
/usr/local/src
# tar xvf memcached-1.5.12.tar.gz
# ./configure --prefix=/usr/local/memcache
# make && make install
#启动 memcached
# /usr/local/memcache/bin/memcached -u memcached -p 11211 -m 2048 -c 65536 &
4、memcached 集群部署架构
(1)基于 magent 的部署架构:

应用端通过负载服务器连接到 magent,然后再由 magent代理用户应用请求到 memcached 处理,底层的 memcached 为双主结构会自动同步数据,本部署方式存在 magent 单点问题因此需要两个 magent 做高可用。

(2)基于 repcached 的双主数据同步:双机master-master方案
(3)简化后的部署架构:

不再使用 magent,直接通过负载均衡连接memcached

5、部署 repcached

repcached官网:http://repcached.sourceforge.net/

[root@s6 src]# yum install libevent libevent-devel
[root@s6 src]# wget https://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-
1.2.8-repcached-2.2.1.tar.gz
[root@s6 src]# tar xvf memcached-1.2.8-repcached-2.2.1.tar.gz
[root@s6 src]# cd memcached-1.2.8-repcached-2.2.1
[root@s6 memcached-1.2.8-repcached-2.2.1]# ./configure --prefix=/usr/local/repcached --enablereplication
[root@s6 memcached-1.2.8-repcached-2.2.1]# make 
#报错的解决办法:
[root@s6 memcached-1.2.8-repcached-2.2.1]# vim memcached.c
 56 #ifndef IOV_MAX
 57 #if defined(__FreeBSD__) || defined(__APPLE__)
 58 # define IOV_MAX 1024
 59 #endif
 60 #endif
#改为如下内容:
 55 /* FreeBSD 4.x doesnt have IOV_MAX exposed. */
 56 #ifndef IOV_MAX 
 57 # define IOV_MAX 1024 
 58 #endif
#再次编译安装:
[root@s6 memcached-1.2.8-repcached-2.2.1]# make && make install
#验证是否可执行:
[root@s5 memcached-1.2.8-repcached-2.2.1]# /usr/local/repcached/bin/memcached -h

启动 memcache:
通过 repcached 安装的 memcached 命令启动 memcache 服务并实现 memcache 主备结构,其中-x 为对方即主 memcache 的 IP,-X 为本地启动的用数据同步的端口:

#1、server 1 相关操作:
[root@s5 ~]# /usr/local/repcached/bin/memcached -d -m 2048 -p 11211 -u root -c 2048 -x 
172.18.200.106 -X 16000
#2、server 2 相关操作:
[root@s6 src]# /usr/local/repcached/bin/memcached -d -m 2048 -p 11211 -u root -c 2048 -x 
172.18.200.105 -X 16000
#3、连接到 memcache 验证数据:
#(1)shell 命令: 
[root@s6 src]# telnet 172.18.200.106 11211
[root@s6 src]# telnet 172.18.200.105 11211
#(2)python 脚本: 
#!/usr/bin/env python
#coding:utf-8
#Author:Zhang ShiJie
import memcache
m = memcache.Client(['172.18.200.106:11211'], debug=True)
for i in range(100):
	m.set("key%d" % i,"v%d" % i)
	ret = m.get('key%d' % i)
	print ret
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值