Memcached介绍(二)—安装部署

第1章 Memcached服务安装

1.1 安装Memcached服务端

1.1.1 系统安装环境

[root@m01 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@m01 ~]# uname -r
2.6.32-696.el6.x86_64

1.1.2 安装依赖程序

[root@m01 ~]# yum install -y libevent libevent-devel nc

1.1.3 yum安装低版本Memcached

[root@m01 ~]# yum install -y memcached

1.1.4 编译安装高版本Memcached

[root@m01 ~]# cd /server/tools/
[root@m01 tools]# tar xf memcached-1.5.2.tar.gz
[root@m01 tools]# cd memcached-1.5.2
[root@m01 memcached-1.5.2]# ./configure
[root@m01 memcached-1.5.2]# make && make install

1.2 Memcached服务的基本管理

1.2.1 启动Memcached

[root@m01 ~]# which memcached
/usr/local/bin/memcached
[root@m01 ~]# memcached -m 16m -p 11211 -d -u root -c 1024
[root@m01 ~]# ps -ef | grep [m]emcache
root       3676      1  0 11:28          00:00:00 memcached -m 16m -p 11211 -d -u root -c 1024
[root@m01 ~]# netstat -lntup | grep memcached
tcp        0      0 0.0.0.0:11211    0.0.0.0:*    LISTEN      3676/memcached     
tcp        0      0 :::11211         :::*         LISTEN      3676/memcached     
udp        0      0 0.0.0.0:11211    0.0.0.0:*                3676/memcached     
udp        0      0 :::11211         :::*                     3676/memcached

1.2.2 启动多个Memcached实例

[root@m01 ~]# memcached -m 16m -p 11212 -d -u root -c 1024
[root@m01 ~]# ps -ef | grep [m]emcache
root       3676      1  0 11:28          00:00:00 memcached -m 16m -p 11211 -d -u root -c 1024
root       3699      1  0 11:31          00:00:00 memcached -m 16m -p 11212 -d -u root -c 1024
[root@m01 ~]# netstat -lntup | grep memcached
tcp        0      0 0.0.0.0:11211    0.0.0.0:*   LISTEN      3676/memcached      
tcp        0      0 0.0.0.0:11212    0.0.0.0:*   LISTEN      3699/memcached     
tcp        0      0 :::11211         :::*        LISTEN      3676/memcached     
tcp        0      0 :::11212         :::*        LISTEN      3699/memcached     
udp        0      0 0.0.0.0:11211    0.0.0.0:*               3676/memcached     
udp        0      0 0.0.0.0:11212    0.0.0.0:*               3699/memcached     
udp        0      0 :::11211         :::*                    3676/memcached     
udp        0      0 :::11212         :::*                    3699/memcached

1.2.3 加入开机自启动

[root@m01 ~]# echo 'memcached -m 16m -p 11211 -d -u root -c 1024' >> /etc/rc.local
[root@m01 ~]# echo 'memcached -m 16m -p 11212 -d -u root -c 1024' >> /etc/rc.local
[root@m01 ~]# tail -2 /etc/rc.local
memcached -m 16m -p 11211 -d -u root -c 1024
memcached -m 16m -p 11212 -d -u root -c 1024

1.3 Memcached启动命令相关参数说明

命令参数 说明
进程与连接设置
-d 以守护进程(daemon)方式运行服务
-u 指定运行Memcached的用户,如果当前用户为root,需要使用此参数指定用户
-l 指定Memcached进程监听的服务器IP地址,可以不设置此参数
-p(小写) 指定Memcached服务监听TCP端口号。默认11211
-P(大写) 设置保存Memcached的pid文件($$),保存PID到指定文件
内存相关设置
-m 指定Memcached服务可以魂村数据的最大内存,默认为64MB
-M Memcached服务内存不够时禁止LRU,如果内存满了会报错
-n 为key+value+flags分配的最小内存空间,默认为48字节
-f chunk size增长因子,默认为1.25
-L 启用大内存页,可以降低内存浪费,改进性能
并发连接设置
-c 最大的并发连接数,默认是1024
-t 线程数默认4,由于Memcached采用的是NIO,所以太多线程作用不大
-R 每个event最大请求数,默认是20
-C 禁用CAS(可以禁用版本计数,减少开销)
调试参数
-v 打印较少的errors/warnings
-vv 打印非常多调试信息和错误输出到控制台,也打印客户端命令及响应
-vvv 打印极多的调试信息和错误输出,也打印内部状态转变

1.4 向Memcached中写入数据并检查

1.4.1 Memcached中的数据形式及与MySQL先关语句对比

MySQL数据库管理 Memcached/Redis管理
MySQL的insert语句 Memcached的set命令
MySQL的select语句 Memcached的get命令
MySQL的delete语句 Memcached的delete命令

1.4.2 向Memcached中写入数据测试

  • 通过printf配合nc向Memcached中写入数据,命令如下:
[root@m01 ~]# printf "set key1 0 0 6\r\noldboy\r\n"|nc 127.0.0.1 11211
STORED      # 出现STORED表示成功添加key1及对应的数据
  • 如果set命令的字节是6,那么后面就要6个字符(字节)。否则插入数据就会不成功。示例:
[root@m01 ~]# printf "set key1 0 0 5\r\noldboy\r\n"|nc 127.0.0.1 11211
CLIENT_ERROR bad data chunk
ERROR
  • 通过printf配合nc从Memcached中读取数据,命令如下:
[root@m01 ~]# printf "get key1\r\n"|nc 127.0.0.1 11211
VALUE key1 0 6
oldboy          # key1对应的值
END
  • 通过printf配合nc从Memcached中删除数据,命令如下:
[root@m01 ~]# printf "delete key1\r\n"|nc 127.0.0.1 11211
DELETED         # DELETED表示删除成功

1.4.3 通过telnet命令写入数据测试

  • 安装telnet工具:
[root@m01 ~]# yum install -y telnet
  • 通过telnet向Memcached中写入数据:
[root@m01 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set user01 0 0 7        # 写入数据
oldgirl
STORED
get user01              # 浏览数据
VALUE user01 0 7
oldgirl
END
delete user01           # 删除数据
DELETED
quit
Connection closed by foreign host.

1.5 操作Memcached相关命令的语法

1.5.1 基本语法

set       key1    0        0        5   \r\n   oldboy  \r\n
<command name> <key> <flags> <exptime> <bytes>\r\n<datablock>\r\n<status>\r\n

1.5.2 相关命令的详细说明

命令 说明
command name set:强制进行写入数据,会覆盖老数据

add:只有对应数据不存在时才添加数据

repalce:只有数据存在时进行替换数据

append:往后追加数据:append <key> datablock <status>

prepend:往前追加数据:prepend <key> datablock <status>

cas:按版本号更改

key 普通字符串,要求小于250个字符,不包含空格和控制字符
flags 客户端用来标识数据格式的数值,如json、xml、压缩等
exptime 存活时间s ,0为永远,小于30天,60×60×24×30为秒数,大于30天为unixtime
bytes byte字节数,不包含\r\n,根据长度截取存/取的字符串,可以是0,即存空串
datablock 文本行,以\r\n结尾,当然可以包含\r或\n
status STORED/NOT_STORED/EXISTS/NOT_FOUND

ERROR/CLIENT_ERROR/SERVER_ERROR服务器端会关闭连接以修复

1.6 关闭Memcached

[root@m01 ~]# pkill memcached
或
[root@m01 ~]# killall memcached

1.7 企业场景中如何配置Memcached

在企业实际中作中,一般是开发人员提出需求,说要部署一个Memcached数据缓存。运维人员在接到这个不太确定的需求后,需要和开发人员深入沟通,进而确定要将内存指定为多大,或者和开发人员商量如何根据具体业务来指定内存缓存的大小。此外还要确定业务的重要性,进而决定是否采取负载均衡、分布式缓存集群等架构,最后确定使用多大的并发连接数等。

对于运维人员部署Memcached一般就是安装Memcached服务器端,把服务启动起来,做好监控,配好开机启动基本就完成了,客户端的PHP程序环境一般在安装LNMP环境时都会提前安装Memcached客户端插件,Java程序环境下,开发人员会用第三方JAR包直接连接Memcached服务。

第2章 安装Memcached客户端

2.1 Memcached缓存PHP扩展插件安装

[root@web01 ~]# cd /server/tools/
[root@web01 tools]# tar xf memcache-2.2.7.tgz
[root@web01 tools]# cd memcache-2.2.7
[root@web01 memcache-2.2.7]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
[root@web01 memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
[root@web01 memcache-2.2.7]# make && make install

2.2 配置Memcache客户端

[root@web01 ~]# echo 'extension = memcache.so' >> /usr/local/php/lib/php.ini
[root@web01 ~]# tail -1 /usr/local/php/lib/php.ini
extension = memcache.so

2.3 重启php fpm服务

[root@web01 ~]# /usr/local/php/sbin/php-fpm -t      # 检查php-fpm服务
[07-Oct-2017 13:47:12] NOTICE: configuration file /usr/local/php-5.5.32/etc/php-fpm.conf test is successful
[root@web01 ~]# pkill php-fpm
[root@web01 ~]# /usr/local/php/sbin/php-fpm

图片[1]|Memcached介绍(二)—安装部署|leon的博客

2.4 生成测试页面

cat >>/usr/local/nginx/html/wordpress/mc.php<<'EOF'     # 此处使用'EOF',否则$后的变量会被解析
< php
    $memcache = new Memcache;
    $memcache->connect('10.0.0.61', 11211) or die ("Could not connect");
    $memcache->set('key20171017', 'oldboy0326');
    $get_value = $memcache->get('key20171017');
    echo $get_value;
 >
EOF

图片[2]|Memcached介绍(二)—安装部署|leon的博客

第3章 安装部署memadmin

3.1 安装memadmin

提示:安装memadmin网站的服务器必须要先安装memcached的客户端。

3.1.1 安装memadmin的web程序

[root@m01 ~]# cd /server/tools/
[root@m01 tools]# tar xf memadmin-1.0.12.tar.gz
[root@m01 tools]# mv memadmin /usr/local/nginx/html/

3.1.2 编辑nginx的web配置文件

[root@m01 ~]# vim /usr/local/nginx/conf/nginx.conf
# 添加如下server模块
 25     server {
 26         listen       8000;
 27         server_name  localhost;
 28         location / {
 29             root   html/memadmin;
 30             index  index.php index.html index.htm;
 31         }
 32         location ~* .*\.(php|php5) $ {
 33             root html/memadmin;
 34             fastcgi_pass  127.0.0.1:9000;
 35             fastcgi_index index.php;
 36             include fastcgi.conf;
 37         }
 38     }

3.1.3 重启nginx

[root@m01 ~]# nginx -t
nginx: the configuration file /usr/local/nginx-1.12.1/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.12.1/conf/nginx.conf test is successful
[root@m01 ~]# nginx -s reload

3.2 测试memadmin网站

图片[3]|Memcached介绍(二)—安装部署|leon的博客

图片[4]|Memcached介绍(二)—安装部署|leon的博客

图片[5]|Memcached介绍(二)—安装部署|leon的博客

3.3 Zabbix监控Memcached服务方式

  • 监听port或进程
  • 可以模拟用户先set后get,比对get内容是不是set的。crond nagios zabbix
  • 监控命中百分比
  • 监控响应时间及需要的状态
温馨提示:本文最后更新于2022-12-20 20:57:54,已超过491天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/246.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享