当前位置: 首页 > news >正文

centos7里memcached 的安装使用

memcahced 的概述

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。

Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。

Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。

本质上,它是一个简洁的key-value存储系统。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

Memcached 服务端安装、PHP 客户端集成与 Telnet 交互操作

  1. 掌握 CentOS 7 环境下 Memcached 服务端的安装与配置

  2. 学习通过 PHP 扩展连接和操作 Memcached

  3. 熟悉 Telnet 命令行工具与 Memcached 的交互操作

  4. 理解 Memcached 的基本数据操作(存储、查询、追加、删除)

(1)memcached 服务端安装

在centos 7上做,有对应的安装包

1. 安装 Memcached
# 启用EPEL仓库并安装 
sudo yum install -y epel-release 
sudo yum install -y libevent memcached libmemcached
注:libevent 是memcached 的依赖;libmemcached 是memcached 的库和工具
2. 核心配置文件

编辑 /etc/sysconfig/memcached,调整以下参数:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 0.0.0.0 -t 4 -c 2048"

如果想监听特定的IP

可将OPTIONS行修改

例如:

OPTIONS="-l 10.1.1.79 -t 4 -c 2048"

参数解释:

# Memcached 服务配置文件

# 监听的端口号(默认11211)
PORT="11211"

# 运行 memcached 的系统用户(建议使用专用用户)
USER="memcached"

# 最大并发连接数
MAXCONN="1024"

# 缓存大小(内存分配)(单位:MB)
CACHESIZE="64"

# 其他启动选项:
# - -l 0.0.0.0   : 监听所有网络接口
# - -t 4         : 使用4个工作线程
# - -c 2048      : 每个线程的最大连接数
OPTIONS="-l 0.0.0.0 -t 4 -c 2048"

# 其他常用可选参数:
# - -m 64        : 分配的内存大小(MB)(已在CACHESIZE中设置)
# - -U 11211     : UDP监听端口(默认同TCP端口)
# - -s /tmp/memcached.sock : UNIX socket路径
# - -d           : 以守护进程方式运行(systemd服务中不需要)

3. 启动与自启
#相关指令
sudo systemctl start memcached 
sudo systemctl enable memcached 
​
sudo systemctl stop  memcached 
netstat -naptl |grep memcached
#查看对应进程
netstat -naptl |grep memcached

注:netstat 网络指令来源于net-tools ;

#查看版本,是否已存在
netstat --version#若不存在,可进行下载
sudo yum install net-tools   # CentOS 7 或更早版本
4. 防火墙放行
​
sudo firewall-cmd --add-port=11211/tcp --permanent 
sudo firewall-cmd --reload#注意也可以执行以下命令关闭防火墙(centos7中若要关闭防火墙两个都要关,具体使用规则可查看本人其他博客)
systemctl stop firewalld
systemctl stop iptables
5.命令行工具(libmemcached-tools)
命令作用示例
memstat查看服务器状态memstat --servers=127.0.0.1
memcat读取键值memcat --servers=127.0.0.1 key1
memflush清空所有数据memflush --servers=127.0.0.1
6. 验证服务
sudo yum install nmap-ncat -y
echo stats |nc 127.0.0.1 11211 |grep version或者
sudo yum install telnet -y
telnet 127.0.0.1 11211
version
stats
quit

 

 
7.日志管理
# 跟踪实时日志
journalctl -u memcached -f

如果日志报错,可从查看配置文件Memcached是否有错,重启服务,查找并释放被占用的端口,清理历史错误日志等方向排错

若报错如下

报错:4月 24 09:01:30 hn79 memcached[5027]: failed to listen on TCP port 11211: Address already in use
解决:强制终止占用端口的进程
sudo ss -tulnp | grep 11211  # 查看占用进程PID
sudo kill -9 <PID>           # 终止该进程确保Memcached独占端口
sudo systemctl restart memcached报错:4月 24 08:54:47 hn79 memcached[4232]: failed to listen on TCP port 11211: No such file or directory
解决:确保Memcached配置正确
cat /etc/sysconfig/memcached
确保有这样一行
OPTIONS="-l 0.0.0.0"  # 监听所有IP,或改为明确的IP如"-l 127.0.0.1"
验证:
sudo systemctl restart memcached
sudo systemctl status memcached  # 确认状态为active仍然报错可选择清理错误历史日志
sudo journalctl --vacuum-time=1h
再次查看日志
sudo journalctl -u memcached -f

(2)php支持memcached(以PHP为例)

链接成功!Hello Memcached[root@gyh gtest]# 如何去执行这个步骤

以下是执行 PHP 连接 Memcached 的完整步骤指南,包含详细操作和验证方法:


1. 安装 PHP Memcached 扩展

# 安装EPEL源和PHP扩展
sudo yum install -y epel-release
sudo yum install -y php-pecl-memcached php php-cli# 验证扩展是否加载
php -m | grep memcached  # 应输出"memcached"

2. 创建测试脚本

cat > test.php <<'EOF'
<?php 
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);  # 改为你的Memcached服务器IPecho "连接状态: " . ($memcached->getStats() ? "成功" : "失败") . "\n";// 存储数据
$memcached->set('key', 'Hello Memcached', 3600);// 读取数据
echo "获取数据: " . $memcached->get('key') . "\n";// 删除数据
$memcached->delete('key');// 清空所有缓存(慎用)
// $memcached->flush();
?>
EOF

3. 执行测试脚本

php test.php
预期输出:
连接状态: 成功
获取数据: Hello Memcached

 

(3)  Memcached Telnet 交互练习示例

分步练习操作
(按顺序执行以下命令,# 后为注释)
telnet 127.0.0.1 11211          # 连接到Memcached操作1:存储键值对
set name 0 0 3                  # 存储键为name的值,flag=0, 过期时间=0, 长度=3
hen                             # 输入值内容(3字节)
预期响应:STORED操作2:追加数据
append name 0 0 2               # 向name追加数据,长度=2
11                              # 追加内容(2字节)
预期响应:STORED操作3:查询数据
get name                        # 获取name的值
预期响应:
VALUE name 0 5
hen11                           # 合并后的值
END操作4:存储新键
set age 0 0 3                   # 存储键age
021                             # 输入值
预期响应:STORED操作5:批量查询
get name age                    # 同时获取name和age
预期响应:
VALUE name 0 5
hen11
VALUE age 0 3
021
END操作6:删除数据
delete age                      # 删除键age
预期响应:DELETED操作7:验证删除
get age                         # 再次查询age
预期响应:END(表示不存在)退出Telnet
quit                            # 断开连接

实验总结

本次实验完整实现了 Memcached 服务端的安装配置、PHP 客户端集成及命令行交互操作,验证了其作为高性能内存缓存系统的核心功能。关键收获包括:

  1. 配置灵活性:通过 OPTIONS 参数可灵活控制线程数、连接数和监听范围。

  2. 跨语言支持:PHP 扩展提供了便捷的 API,适合 Web 应用集成。

  3. 协议简洁性:Telnet 交互模式直观展示了 Memcached 的文本协议,便于调试。

 

相关文章:

  • Verilog 语法 (一)
  • 第七章:Contribution Governance
  • 【Pandas】pandas DataFrame dot
  • 【C++QT】Buttons 按钮控件详解
  • 乐聚机器人与地瓜机器人达成战略合作,联合发布Aelos Embodied具身智能
  • flask学习(1)
  • MongoDB Compass可视化工具
  • 常见接口测试常见面试题(JMeter)
  • 在 Ubuntu 环境为 Elasticsearch 引入 `icu_tokenizer
  • 深入理解表单---提交用户与网页交互的重要方式:GET 与 POST 的本质区别与应用实践
  • vue3:十一、主页面布局(修改顶部导航栏样式-右侧:用户信息+退出登录+全屏显示)
  • 突破厚铜PCB阻抗控制难题:多级阻抗实现方法
  • 工厂模式:解耦对象创建与使用的设计模式
  • vue项目,基于echarts的各省份地图展示
  • 解决:springmvc工程 响应时,将实体类对象 转换成json格式数据
  • Windows申请苹果开发者测试证书Uniapp使用
  • 二分小专题
  • [特殊字符] 分布式定时任务调度实战:XXL-JOB工作原理与路由策略详解
  • WGAN+U-Net架构实现图像修复
  • U盘能识别但无法写入数据的原因
  • 专家学者视角下的乡村教育:目标与出路并非“走出大山”
  • 9厘米,25克!最小最轻的无线陆空两栖机器人来了
  • 专访|松重丰:“美食家”不孤独,他在自由地吃饭
  • 为什么要研制大型水陆两栖飞机?AG600总设计师给出答案
  • 张宝亮履新临沂市委书记表态:不断提升在全省全国经济版图中的发展位势
  • 人民日报头版:各地扎实开展学习教育,一体推进学查改