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

[经验分享] 用memcached缓存mysql数据

[复制链接]

尚未签到

发表于 2018-9-28 08:53:30 | 显示全部楼层 |阅读模式
  Memcached是一个分布式的内存对象缓存系统,通常用于动态Web应用以减轻数据库负载。
Memcached是基于一个存储键对的hashmap,当表格满了以后,就使用LRU(最近最小使用)算法机制替换掉。Memcached使用了libevent来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表,因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1). 下面具体说明在centos环境下安装memcached并结合mysql,php来测试Memcache的缓存机制1、安装memcached wget http://skadns.googlecode.com/files/libevent-1.4.8-stable.tar.gzwget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz tar xf libevent-1.4.8-stable.tar.gzcd libevent-1.4.8-stable./configuremake && make installln -sv /usr/local/lib/libevent* /usr/lib/ tar xf  memcached-1.4.15.tar.gzcd memcached-1.4.15./configuremake && make install 尝试启动memcached,启动方法[root@www ~]#memcached -d -unobody -m50 -p11211 -P /tmp/memcached.pid说明:-d 以独立方式运行-u 以什么用户启动-m 占用内存大小(默认是100)-p 监听端口号-P 指定pid位置不报信息就ok,netstat -tnlp查看一下 DSC0000.png 2、为php安装memcached扩展(我是用的是php5.4.4)[root@www ~]#wget http://pecl.php.net/get/memcache-2.2.5.tgz[root@www ~]#tar zxvf memcache-2.2.5.tgz [root@www ~]#cd memcache-2.2.5/ [root@www ~]#/usr/local/php/bin/phpize [root@www ~]#./configure --with-php-config=/usr/local/php/bin/php-config [root@www ~]#make [root@www ~]#make install在配置文件中添加memcache扩展,命令如下 sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/"\nextension = "memcache.so"#' /usr/local/php/etc/php.ini  3、确定已经安装好了mysql数据库,如果没有的话,直接使用yum install mysql-server。 准备测试表mysql>CREATE DATABASE 'lee';mysql>CREATE TABLE `lee1` (  `id` int(7) NOT NULL AUTO_INCREMENT,  `name` char(8) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;插入数据,格式如下:mysql>INSERT INTO `lee1` VALUES (1,'tom'),(2,'jim'),(3,'abc'),(4,'cde'),(5,'fgh'),(6,'test'),(7,'test01'),(8,'test02'),(9,'test03');查看是否有数据 DSC0001.png 4、测试ok下面就是测试的工作了,这里有个php脚本,用于测试memcache是否缓存数据成功需要为这个脚本添加一个只读的数据库用户,命令格式mysql>grant select on lee.* to memcache@"%">mysql>flush privileges;mysql>\q 测试脚本内容如下: 访问页面测试 DSC0002.png 如果出现mysql表示memcached中没有内容,需要memcached从数据库中取得再刷新页面 DSC0003.png 如果有memcached标志表示这次的数据是从memcached中取得的 也可以通过 telnet 192.168.0.128 11211 使用memcached命令来分析是否有内容memcached有个缓存时间默认是1分钟,过了一分钟后,memcached需要重新从数据库中取得数据我们也可以手动删除,这时手动刷新网页,数据是会再次被缓存的
DSC0004.png



运维网声明 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-603062-1-1.html 上篇帖子: mysql常用的三种备份方法 下篇帖子: linux apache php mysql-ELWIN
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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