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

[经验分享] memcached缓存数据库

[复制链接]

尚未签到

发表于 2018-12-24 12:04:12 | 显示全部楼层 |阅读模式
memcached缓存数据库
第1章 什么是memcache?
开源软件,用于动态web应用以减轻数据库的负载,通过在内存中缓存数据和对象来减少服务数据库的次数,从而提高网站访问的速度,工作机制是在内存中开辟一块空间,建立一个hash table   memcached自管理这些hash table
第2章 为什么用缓存数据库?
1.      mysql        ---数据存放在磁盘中,io较慢----数据仓库存储选择mysql这种磁盘数据库
2.      memcached   ---数据在内存中,io速度快---高并发,业务量大应选择memcache这种内存数据
第3章 缓存数据库使用场景:
1.      作为数据库的缓存---当mysql承受不了大并发的请求时,可以将数据缓存到内存中
2.      session会话共享---只要登录了一次网站,以后都不需要再次登录了
第4章 cookies和session
网站程序判断用户登录信息,最开始的奇数方法:服务器在你的浏览器中写一个cookies,这个cookies中包含了你的用户名和登录信息,因为cookies是存储在本地浏览器中,所以第三方工具很容易盗取cookies中的隐私信息,这时,session应运而生
4.1 最开始:
cookies=内容(用户名,登录信息)
4.2 改进后:
cookies=session id
  session=用户名,登录信息
一般企业应用是cookies+session
第5章 memcached分部署缓存集群
memcached天生不支持分布式集群,只能通过程序支持分部署存储
5.1 memcached分布式缓存集群的特点:
所有mc服务器内存内容都是不一样的,这些服务器内容加起来接近数据库的容量,比如1t的数据库,一台缓存数据库内存没有那么大,因此分成10台服务器
5.2 普通hash算法:
  动过客户端程序或者mc的负载均衡器上ongoinghash算法,让同一内容都分配到一个mc服务器上,这样的算法对于节点宕机会带来大量的数据流动,容易引起雪崩效应
5.3 一致性hash算法:
  通过生成hash圈,数据都按照顺时针距离最近的服务器进行匹配,可以让节点宕机对节点数据的流动失效降到最低
  
第6章 部署memcached服务:
1.1 安装服务端软件:
  [root@nfs01 ~]# yum -y install memcached
1.1.1 查看memcached配置文件
  [root@nfs01 ~]# cat /etc/sysconfig/memcached
  PORT="11211"           监听端口
  USER="memcached"       指定用户
  MAXCONN="1024"         并发访问数量
  CACHESIZE="64"         划分内存的大小
  OPTIONS=""
1.2 启动memcache服务
  [root@nfs01 ~]# /etc/init.d/memcached  start
  Starting memcached:                                        [  OK  ]
1.3 向缓存数据库写入数据
  [root@nfs01 ~]# printf "set key008 0 0 10\r\noldboy1234\r\n"|nc 127.0.0.1 11211
  STORED                写入数据成功
  key008---数据的name
  0  ---
0    ---超时时间,超过这个时间将不能访问数据
  10  ---表示写入数据的字符数,这里oldboy1234是10个字符数所以为10
1.4 查看数据库中的数据
  [root@nfs01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
  VALUE key008 0 10
  oldboy1234
  END
1.5 删除数据
  [root@nfs01 ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211
  DELETED
  [root@nfs01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
  END
第7章 客户端部署memcache:
2.1 安装memcache
1089  cd memcache-2.2.5
  1090  /application/php/bin/phpize
  1091  ./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
  1092  make && make install
  1093  echo $?
2.1.1 执行完命令后检查目录下存在memcache.so即可
  [root@web01 memcache-2.2.5]# ll /application/php-5.6.32/lib/php/extensions/no-debug-non-zts-20131226/
  total 256
  -rwxr-xr-x 1 root root 260643 Feb 19 21:21 memcache.so
2.1.2 增加php中memcache模块
  [root@web01 memcache-2.2.5]# sed '$a extension=memcache.so'/application/php/lib/php.ini -i.ori
  [root@web01 memcache-2.2.5]# pkill php
  [root@web01 memcache-2.2.5]# /application/php/sbin/php-fpm  -t
  [19-Feb-2018 21:30:59] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
  [root@web01 memcache-2.2.5]# /application/php/sbin/php-fpm
  [root@web01 memcache-2.2.5]# /application/php/sbin/php-fpm -m |grep memcache
  memcache                  检查php是否增加了memcache模块功能
2.2 php代码测试:
2.2.1 在站点目录blog中编写测试文件:
  cat >>/application/nginx/html/blog/mc.php
EOF
2.2.2 测试web页面访问是否正常

1.1.1 在缓存服务器上检查数据是否存在:
  [root@cache01 ~]# printf "get key20180314\r\n"|nc 10.0.0.21 11211
  VALUE key20180314 0 11
  hello,world
  END
第8章 web管理memcached:
  tar xf memadmin-1.0.12.tar.gz -C /application/nginx/html/blog/
  浏览器访问http://blog.etiantian.org/memadmin
  host:选项上填写缓存服务器的ip地址即可

第9章 使memcached缓存 wordpress博文数据:
1.1 把object-cache.php程序文件上传到站点目录中
  cd /application/nginx/html/blog/wp-content/
  rz
  [root@web01 wp-content]# ll
  total 28
  -rw-r--r-- 1 nobody 65534    28 Jan  9  2012 index.php
  -rw-r--r-- 1 root   root  10112 Mar 14 12:05 object-cache.php
1.2 修改文件中的IP地址
  grep 127.0.0.1 object-cache.php
  sed -i 's#127.0.0.1#10.0.0.21#' object-cache.php
1.2.1 登录网站发送一片博文:

1.1.1 登录memcache  web界面进行检查:   缓存博文成功

第10章 memcached  session会话共享:
  方法一:通过程序实现,web01只需要往memcache写session,web02从memcache读取session,当作普通数据读写,更具有通用性
  方法二:通过php的配置文件,php默认将session存储在文件中,修改为存储在memcached中
  sed 's#session.save_handler = files#session.save_handler = memcache#' /application/php/lib/php.ini -i
  sed '$a session.save_path = "tcp://127.0.0.1:11211"' /application/php/lib/php.ini -i
  /application/php/sbin/php-fpm  -t
  pkill  php
  /application/php/sbin/php-fpm
  使用这个功能,需要使用php的session函数




运维网声明 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-655277-1-1.html 上篇帖子: memcache和memcached 下篇帖子: 利用memcached + 三款缓存监控,打造强大的memcached缓存服务器。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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