没有合适的资源?快使用搜索试试~ 我知道了~
memcachedredis性能测试.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 83 浏览量
2022-07-09
10:54:35
上传
评论
收藏 190KB DOCX 举报
温馨提示
试读
29页
memcachedredis性能测试.docx
资源推荐
资源详情
资源评论
一、Memcached
1.1
、memcached 简介
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web
应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库
的次数,从而提供动态、数据库驱动网站的速度。Memcached 基于一个存储
键/值对的 hashmap。其守护进程(daemon )是用 C 写的,但是客户端可
以用任何语言来编写,并通过 memcached 协议与守护进程通信。但是它并
不提供冗余(例如,复制其 hashmap 条目);当某个服务器 S 停止运行或崩
溃了,所有存放在 S 上的键/值对都将丢失。
Memcached 由 Danga Interactive 开发,其最新版本发布于 2010 年,作者为
Anatoly Vorobey 和 Brad Fitzpatrick。用于提升 LiveJournal . com 访问速度的。
LJ 每秒动态页面访问量几千次,用户 700 万。Memcached 将数据库负载大
幅度降低,更好的分配资源,更快速访问。
1.2
、Memcached 是如何工作的
Memcached 的神奇来自两阶段哈希(two-stage hash)。Memcached 就
像一个巨大的、存储了很多<key,value>对的哈希表。通过 key,可以存储或
查询任意的数据。客户端可以把数据存储在多台 memcached 上。当查询数
据时,客户端首先参考节点列表计算出 key 的哈希值(阶段一哈希),进而
选中一个节点;客户端将请求发送给选中的节点,然后 memcached 节点通
过一个内部的哈希算法(阶段二哈希),查找真正的数据(item)。举个列
子,假设有 3 个客户端 1, 2, 3,3 台 memcached A, B, C:Client 1 想把数
据”tuletech”以 key “foo”存储。Client 1 首先参考节点列表(A, B, C),计算
key “foo”的哈希值,假设memcached B 被选中。接着,Client 1 直接 connect
到 memcached B,通过 key “foo”把数据”tuletech”存储进去。Client 2 使用与
Client 1 相同的客户端库(意味着阶段一的哈希算法相同),也拥有同样的
memcached 列表(A, B, C)。于是,经过相同的哈希计算(阶段一),Client
2 计算出 key “foo”在 memcached B 上,然后它直接请求 memcached B,得到
数据”tuletech”。
1.3
、memcached 提供的操作
Memcached 的客户端 api 接口提供了如下的方法存储和获取缓存数据,
并且这节方法在不同的客户端都是一致的:
get(key):读取数据从缓存中,如果数据存在的话返回值,否则返回
Null,nil,underfined。
Set(key,value [,expiry]):写入缓存数据 value,如果 key 已经存在了就更新 value
值,否则就增加一个新的 key/value 对,如果设定了 expiry 值,超过设定 expiry
时间后键值对就失效,时间单位是秒。
Add(key,value, [,expiry]):添加键值对到缓存如果 key 不存在的话。
Replace(key ,value [,expiry]:替换已经存在的键值对。
Deleted(key [, time]):从缓存中删除键,如果提供一个时间,在这段时间内
这个键是处于阻塞状态。
二、安装部署 Memcached 服务
2.1
、安装 libevent 库
memcached 使用 libevent 库实现网络连接服务,理论上可以处理无限多
的连接,但是它和 Apache 不同,它更多的时候是面向稳定的持续连接的,
所以它实际的并发能力是有限制的。在保守情况下 memcached 的最大同时
连接数为 200,这和Linux 线程能力有关系,这个数值是可以调整的。 关于
libevent 可以参考相关文档。memcachd 有自己的内存分配算法和管理方式,
它和共享内存没有关系,也没有共享内存的限制,通常情况下,每个
memcached 进程可以管理 2GB 的内存空间,如果需要更多的空间,可以增
加进程数。
libevent 下 载 地 址 :
http://down1.chinaunix.net/distfiles/libevent-2.0.16-stable.tar.gz
# wget http://down1.chinaunix.net/distfiles/libevent-2.0.16-stable.tar.gz
然后是正常步骤的解压安装:
# tar zxvf lilbevent-2.0.16-stable.tar.gz
# cd libevent-2.0.16-stable
# ./configure –prefix = /usr/local/libvent-2.0.16-stable
# make
#make install
测试 libevent 是否安装成功:
# ls –al /usr/local/libevent-2.0.16-stable/lib | grep libevent
修改配置文件把 libevent 库加入 ld.so.conf 文件
# nano /etc/ld.so.conf 加入/usr/local/libevent-2.0.16-stable/lib
运行 ldconfig 否则运行 memcached 会报错,提示找不到 so 文件
2.2
、安装 memcached:
memcached 下载地址:
http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
# wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
#tar memcached-1.4.13.tar.gz
# cd memcached-1.4.13
# ./configure
# make &make install
测试是否成功安装 memcached:
2.3
、编译安装 magent 代理:
magent 是一款开源的 memcached 代理服务器软件,magent 是解决
memcached 的单点故障的解决方案;magent 的 hash 算法:magent 采用的是
:Consistent Hashing 原理,Consistent Hashing 如下所示:首先求出memcached
服务器(节点)的哈希值,并将其配置到 0~2
32
的圆(continuum) 上。 然后
用同样的方法求出存储数据的键的哈希值,并映射到圆上。 然后 从数据映射
到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过 2
32
仍然找不到服务器,就会保存到第一台 memcached 服务器上。
编译安装 magent:
# wget http://memagent.googlecode.com/files/magent-0.5.tar.gz
# mkdir magent
# cd magent/
# tar zxvf magent-0.5.tar.gz
# cd magent/
# nano magent.c 加入如下宏定义:
(# ifndef SSIZE_MAX
# define SSIZE MAX 32767
# endif)否则编译会报错:未指定最大值
magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function)
#/sbin/ldconfig
# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
# make
# cp magent /usr/bin/magent
测试 magent 代理服务器是否安装成功:
root@ubuntu:~# magent
please provide -s "ip:port" argument
memcached agent v0.5 Build-Date: Feb 21 2012 16:39:44
Usage:
-h this message
-u uid
-g gid
-p port, default is 11211. (0 to disable tcp support)
-s ip:port, set memcached server ip and port
-b ip:port, set backup memcached server ip and port
-l ip, local bind ip address, default is 0.0.0.0
-n number, set max connections, default is 4096
-D don't go to background
-k use ketama key allocation algorithm
-f file, unix socket path to listen on. default is off
-i number, set max keep alive connections for one memcached server, default
is 20
-v verbose
三、memcached 集群测试
3.1
、测试环境
1. Memcached 提供了很多客户端 api,可供 java,c,c++,python…的客户端
的调用,在这里我们用 python 这门语法优雅功能强大的语言进行此次测试。
首先安装 python lib 库,运行如下命令:
# sudo apt-get install python
自动安装完成后,默认版本为 2.7.2。
测试是否正确安装:
剩余28页未读,继续阅读
资源评论
Cheng-Dashi
- 粉丝: 108
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功