Linux下 MemCache 部署以及介绍 ;

一 、 MemCache  简介  ;

memcached  是一款开源的、高性能的纯内存缓存服务软件,mem  是内存的意思 ,cache 是缓存的意思 , d 是 daemon 的意思

memcache 是项目的名字,诞生于 2003 年,memcached 服务分为 客户端和服务端两部分,C/S 架构 ;

缓存数据库包含  ; memcache  redis ,它们的 数据是存储在内存中,而内存的速度远远快于磁盘加快网页响应速度 ;

NOSQL 数据库;not  only SQL  ( 非关系型数据库 ) ;

memcache缓存数据库的并发 ; --->> 10w   

memcache的缺点就是内存的缺点 ---->> 断点数据丢失 

企业中常用的memcache 架构 : MySQL + memcache   (互补一下 )

这里说一下 Redis 优点 ;

Redis 工作区域在内存,但是会定时的将内存的数据保存到磁盘中 。

 

二 、MemCache 原理以及优点 ;

      再启动 memcache 的时候 ,需要指定内存大小,根据指定的内存大小会被分配一个内存空间,当我们读取数据库的各类业务数据后,数据会同时放入到memcache 缓存中,当用户下一次请求同样的数据时,程序直接去memcache 缓存中取数据,直接返回给用户 。

优点 :

① 、 对于用户而言,用户访问网页更快了,体验好

② 、对于网站来说,数据库的压力降低了,只有当内存没有数据的时候才会去请求数据库,第一次写入数据是会请求数据库。  

      因为 memcached 是直接从内存读取数据的很快 ,而MySQL是从磁盘取数据的,上面也说了内存的响应速度比磁盘快很多 。
      还有就是一般公司会有 “预热” 就是先把MySQL 中的数据放到 memcache 中  。

③ 、提升了网站的并发访问,减少服务器数量 ;

 

三 、MySQL + MemCache 工作场景 ;

数据读取流程 ;

步骤① 、memcache 中没有发现用户需要的数据,程序只能到MySQL中读取,优先会把数据返回给用户,其次会将这个数据缓存到                                memcache中 。

步骤② 、程序会优先判断这个数据是否存在 memcache 中,如果在直接从memcache 中返回给用户,如果不在重复步骤①

 

memcache 可以作为数据库的前端缓存应用 ;

1 , 完整缓存 ;

     例如京东的商品分类,就可以事先放到 memcache 中 , 然后在对外提供数据的访问,这个叫 “ 预热 ” 就是先把数据放到memcache中提供用户访问,所以数据库的压力就降低了 。

2 ,热点缓存 ;

热点缓存一般是指由用户更新商品,列如淘宝卖家,卖家新增商品后需要保证数据中和缓存中的数据一致  ;

 

完整缓存: 缺点是需要消耗大量的内存空间  ;

热点缓存:将重要的数据缓存到 memcache 中,但是要注意数据一致性的问题 ,需要保证memcache的数据和mysql一致

 

四 、 cookie 与 session  了解  ;

Linux下 MemCache 部署以及介绍 ;_第1张图片

企业案例  ;

Linux下 MemCache 部署以及介绍 ;_第2张图片

 

五 、 部署安装memcache  ;

一  、环境检查 

[root@web01 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@web01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@web01 ~]# getenforce 
Disabled
[root@web01 ~]# /etc/init.d/iptables status
iptables:未运行防火墙。
[root@web01 ~]# ip a
 

[root@web01 ~]# yum -y install memcached            ---->>  使用 yum 安装memcache 

总下载量:69 k
下载软件包:
memcached-1.4.4-5.el6.x86_64.rpm                                                      |  69 kB     00:00     
已安装:
  memcached.x86_64 0:1.4.4-5.el6                                                                             

完毕!

 

5.1 、memcache 基本参数  ;

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

 

5.2 ,memcache 启动的两种方式  ;

Linux下 MemCache 部署以及介绍 ;_第3张图片

[root@web01 ~]# /etc/init.d/memcached start
正在启动 memcached:                                       [确定]
[root@web01 ~]# netstat -lntup | grep memcached
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      1815/memcached      
tcp        0      0 :::11211                    :::*                        LISTEN      1815/memcached      
udp        0      0 0.0.0.0:11211               0.0.0.0:*                               1815/memcached      
udp        0      0 :::11211                    :::*                                    1815/memcached      
[root@web01 ~]# 
 

 

[root@web01 ~]# vim /etc/init.d/memcached   

--->>  这个脚本可以直接启动memcache ,如果想做memcache 多实例的话直接把这个脚本在复制一份变更一下端口即可 。

 

六 ,管理使用memcache ; 

Linux下 MemCache 部署以及介绍 ;_第4张图片

 

memcache 存数据使用   set      查数据库 get    删除  delete  

通过 “ nc ” 写入 ;

[root@web01 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"
set key008 0 0 10
oldboy0987
 

printf  --->> 命令可以识别出换行符 所以就直接换行了 。

set  --->>  设置一个键值 叫   key008     

第二个 0    --->>  表示超时时间,key的超时时间 0  就表示永不超时永不死亡

10  表示   --->> 插入的数据有多少个字符 

 

注 : 生产环境中这些是开发写程序来直接运算的,这里只大概了解每个参数即可 

 ==================================================================================

 

 

[root@web01 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211    
STORED                                       ---->>  表示数据存储成功
[root@web01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211              ---->>    查看数据 
VALUE key008 0 10               
oldboy0987
END
[root@web01 ~]# 

 

[root@web01 ~]# printf "set key009 0 10 9\r\nmemca0987\r\n"|nc 127.0.0.1 11211  
STORED
[root@web01 ~]# printf "get key009\r\n"|nc 127.0.0.1 11211
VALUE key009 0 9
memca0987
END
[root@web01 ~]# 

 

 10  表示 10 秒之后就自动删除 

 

memcache   状态信息  ;

[root@web01 ~]# telnet 10.0.0.8 11211
Trying 10.0.0.8...
Connected to 10.0.0.8.
Escape character is '^]'.
stats
STAT pid 1815
STAT uptime 3848
STAT time 1537111092
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 0.129980
STAT rusage_system 0.107983
STAT curr_connections 10
STAT total_connections 19
STAT connection_structures 11
STAT cmd_get 2
STAT cmd_set 3
STAT cmd_flush 0
STAT get_hits 2
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 214
STAT bytes_written 122
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 162
STAT curr_items 2
STAT total_items 2
STAT evictions 0
END
 

 

监控 memcache 参数  ;

可以监控以下的几项来进行监控 memcache 是否正常  ;

   ① , 监听端口 11211 或者 进程 ;

   ② ,可以模拟用户先 set 后 get,对比get内容是不是 set 的,crond 、nginx 、zabbix  ;

   ③ ,监控命中百分比  ;

   ④ ,也可以监控响应时间以及需要的状态  ;

       可以用 gnuplot    rrdtool  等绘图工具出图 。

 

 

七  、 memcache  客户端安装  ;

[root@web01 ~]#  wget http://pecl.php.net/get/memcache-2.2.5.tgz
[root@web01 ~]# tar zxvf memcache-2.2.5.tgz 

[root@web01 ~]# cd memcache-2.2.5

[root@m01 memcache-2.2.5]# /application/php/bin/phpize         ----->>   告诉php 新装了个模块过来认识一下  
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
[root@m01 memcache-2.2.5]# 

[root@web01 memcache-2.2.5]# ./configure --enable-memcache --with-php-config=/application/php/bin/php-congig --with-zlib-dir

注意 ; 这里是需要 php 作为基础环境的,根据自己配置的 PHP 来安装  ;


[root@web01 memcache-2.2.5]# make && make install       --->> 出现以下结果表示安装成功  ;
Installing shared extensions:     /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/

 

让模块生效,因为默认的是安装完后不生效的 ;

 

[root@m01 memcache-2.2.5]# sed -i '$a extension=memcache.so' /application/php/lib/php.ini 
[root@m01 memcache-2.2.5]# ll /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
总用量 252
-rwxr-xr-x 1 root root 257920 9月   5 05:37 memcache.so   
[root@m01 memcache-2.2.5]# 
 

重启 ;

[root@m01 memcache-2.2.5]# pkill php
[root@m01 memcache-2.2.5]# /application/php/sbin/php-fpm -t
[05-Sep-2018 05:50:46] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful

[root@m01 memcache-2.2.5]# /application/php/sbin/php-fpm
[root@m01 memcache-2.2.5]# /application/php/bin/php -m |grep memcache
memcache
[root@m01 memcache-2.2.5]# 
 

Linux下 MemCache 部署以及介绍 ;_第5张图片

 

Linux下 MemCache 部署以及介绍 ;_第6张图片

 

你可能感兴趣的:(缓存,MemCache)