设为首页 收藏本站
查看: 957|回复: 0

[经验分享] 关于memcache 测试

[复制链接]
累计签到:22 天
连续签到:1 天
发表于 2015-11-18 08:13:24 | 显示全部楼层 |阅读模式
我之前一直是听人说,自己没有搞过,这些日子天天看美女图片了。
今天才看了看memcache.所以很希望得到批评。^_^
简单的说下memcache.
在此之前,建议大家读一下这篇文章,很有意思。
http://www.socialtext.net/memcached/index.cgi?this_is_a_story_of_caching
至于原理以及启动的参数我就不多描述了,memcached -h 就有了或者GOOGLE一下一大堆。
我说明一下她的分布式应用。
可以有N多memcached 服务分别装在不同的服务器上。然后按照自己的算法缓存数据库的数据到每个memcached服务器上。
当然MySQL的Federated引擎也可以做为分布式应用。
她俩有以下优缺点:
1. Federated 获取的数据是实时的,而Memcache非实时数据。
2. Memcache 的速度是没得说,因为她完全是放在内存里面进行的,而且不需要SQL解析。Federated 则不行。

唉,只可惜我现在没有条件测试。而且我画的图比较恶心,所以暂时省略掉了。^_______^
1.下面来安装Memcache 服务器端.
所需软件:libevent
下载地址:http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
memcached
下载地址:http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz

编译安装:
1.先编译libevent.
./configure --prefix=/usr/local/libevent;make;make install;
2.再编译memcached.
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --enable-threads
make
make install;

由于之前系统自动安装了libevent.我想挂载我编译的libevent.
[iyunv@localhost x]# cp /usr/local/libevent/lib/libevent-1.4.so.2.1.2
[iyunv@localhost x]# ln -s libevent-1.4.so.2.1.2 libevent-1.4.so.2

再加一个用户.
useradd memcached.(你可以给你的这个用户设置密码等。)
之后就可以启动memcached了。
/usr/local/memcached/bin/memcached -umemcached -d start -m 120MB

2. 搞个PHP的memcache扩展来简单用一下。
由于我的PHP在本机的XP上。所以非常的简单。直接下载DLL,然后修改php.ini.
下载地址:http://pecl4win.php.net/ext.php/php_memcache.dll 根据你的PHP版本下载。

这里是所有的memcache 函数列表。
http://cn2.php.net/manual/en/ref.memcache.php
来做个测试。
先搞个表:
create table t(id char(36) not null primary key, username varchar(20) not null);
插点数据:
insert into t values (uuid(),'Livia'),(uuid(),'Lucy'),(uuid(),'Sivia'),(uuid(),'david');

写个简单脚本测试一下。
<?php
$host = '192.168.1.21:3306';
$user = 'webuser';
$passwd = '123456';
$db = 'test';
$conn = mysql_connect($host,$user,$passwd);
mysql_select_db($db,$conn);
$sql = 'select * from t order by id desc';
$result = mysql_query($sql,$conn);
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){
    $test_key[] = $row;
}
$sql = md5($sql);
$mem = new Memcache;
$mem->connect("192.168.1.21", 11211);
$mem->set($sql,$test_key, MEMCACHE_COMPRESSED, 600);

print_r($mem->get($sql));
?>

看看结果出来了。
C:/>php -f "d:/lamp/web2/phpinfo.php"
Array
(
    [0] => Array
        (
            [id] => d8f1ec2a-c033-11dd-bd1a-002215c94322
            [username] => david
        )

    [1] => Array
        (
            [id] => d8f1eb9e-c033-11dd-bd1a-002215c94322
            [username] => Sivia
        )

    [2] => Array
        (
            [id] => d8f1ea9a-c033-11dd-bd1a-002215c94322
            [username] => Lucy
        )

    [3] => Array
        (
            [id] => d8f1e658-c033-11dd-bd1a-002215c94322
            [username] => Livia
        )

)

3.关于memcache的监控。
本机监控的话,可以直接TELNET上去。
以下命令以及详细用法说明在手册上可以见到。
http://dev.mysql.com/doc/refman/5.1/en/ha-memcached-stats.html

[iyunv@localhost x]# telnet localhost 11211
Trying 192.168.4.41...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 25247
STAT uptime 223
STAT time 1228377146
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.010998
STAT rusage_system 0.029995
STAT curr_items 1
STAT total_items 1
STAT bytes 218
STAT curr_connections 5
STAT total_connections 90
STAT connection_structures 6
STAT cmd_get 1
STAT cmd_set 1
STAT get_hits 1
STAT get_misses 0
STAT evictions 0
STAT bytes_read 853
STAT bytes_written 39101
STAT limit_maxbytes 209715200
STAT threads 4
END
stats items
STAT items:5:number 1
STAT items:5:age 204
STAT items:5:evicted 0
STAT items:5:outofmemory 0
END
stats slabs
STAT 5:chunk_size 232
STAT 5:chunks_per_page 4519
STAT 5:total_pages 1
STAT 5:total_chunks 4519
STAT 5:used_chunks 4519
STAT 5:free_chunks 0
STAT 5:free_chunks_end 4518
STAT active_slabs 1
STAT total_malloced 1048408
END

不过这个好像不是实时的。
实时的话简单的PHP脚本加上WATCH就可以了。

<?php
$mem = new Memcache;
$mem->connect("192.168.4.41", 11211);
print_r($mem->getstats());

// 关于更加详细的可以自己加。
?>


[iyunv@localhost ~]# /usr/local/php/bin/php -f watch_memcache.php
Array
(
    [pid] => 25247
    [uptime] => 708
    [time] => 1228377631
    [version] => 1.2.6
    [pointer_size] => 32
    [rusage_user] => 0.010998
    [rusage_system] => 0.030995
    [curr_items] => 1
    [total_items] => 1
    [bytes] => 218
    [curr_connections] => 5
    [total_connections] => 93
    [connection_structures] => 7
    [cmd_get] => 1
    [cmd_set] => 1
    [get_hits] => 1
    [get_misses] => 0
    [evictions] => 0
    [bytes_read] => 923
    [bytes_written] => 40873
    [limit_maxbytes] => 209715200
    [threads] => 4
)
用WATCH来实时运行它。
[iyunv@localhost ~]# watch "/usr/local/php/bin/php -f watch_memcache.php"



以下是一些非常有用的资源:

FAQ。
http://www.socialtext.net/memcached/index.cgi?faq

memcache 基础教程。
http://www.ccvita.com/259.html

memcache 协议。
http://www.ccvita.com/306.html

Discuz 的 memcache 缓存实现。
http://www.ccvita.com/261.html

Linux Memcache 安装。
http://www.ccvita.com/257.html

windows 下的php libmemcache 扩展安装
http://pecl4win.php.net/list.php

libmemcached.
http://download.tangent.org/libmemcached-0.25.tar.gz             版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140476-1-1.html 上篇帖子: spring中配置memcache 下篇帖子: GAE memcache 的限制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表