Memcached 查找命令

本文详细介绍了Memcached的get、sets、delete、incr和decr命令,包括它们的语法、参数说明和使用实例,展示了如何在Memcached中存储、检索和管理缓存数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Memcached get 命令

Memcached get 命令获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空。

语法:

get 命令的基本语法格式如下:

get key

多个 key 使用空格隔开,如下:

get key1 key2 key3

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。

实例

在以下实例中,我们使用 runoob 作为 key,过期时间设置为 900 秒。

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END

Memcached gets 命令

Memcached gets 命令获取带有 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空。

语法:

gets 命令的基本语法格式如下:

gets key

多个 key 使用空格隔开,如下:

gets key1 key2 key3

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。

实例

在以下实例中,我们使用 runoob 作为 key,过期时间设置为 900 秒。

set runoob 0 900 9
memcached
STORED
gets runoob
VALUE runoob 0 9 1
memcached
END

Memcached delete 命令

Memcached delete 命令用于删除已存在的 key(键)。

语法:

delete 命令的基本语法格式如下:

delete key [noreply]

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。
  • noreply(可选): 该参数告知服务器不需要返回数据

实例

在以下实例中,我们使用 runoob 作为 key,过期时间设置为 900 秒。之后我们使用 delete 命令删除该 key。

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
delete runoob
DELETED
get runoob
END
delete runoob
NOT_FOUND

输出

输出信息说明:

  • DELETED:删除成功。
  • ERROR:语法错误或删除失败。
  • NOT_FOUND:key 不存在。

Memcached incr 与 decr 命令

Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。

incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。

如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR


incr 命令

语法:

incr 命令的基本语法格式如下:

incr key increment_value

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。
  • increment_value: 增加的数值。

实例

在以下实例中,我们使用 visitors 作为 key,初始值为 10,之后进行加 5 操作。

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END

输出

输出信息说明:

  • NOT_FOUND:key 不存在。
  • CLIENT_ERROR:自增值不是对象。
  • ERROR其他错误,如语法错误等。

decr 命令

decr 命令的基本语法格式如下:

decr key decrement_value

参数说明如下:

  • key:键值 key-value 结构中的 key,用于查找缓存值。
  • decrement_value: 减少的数值。

实例

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
decr visitors 5
5
get visitors
VALUE visitors 0 1
5
END

在以下实例中,我们使用 visitors 作为 key,初始值为 10,之后进行减 5 操作。

输出

输出信息说明:

  • NOT_FOUND:key 不存在。
  • CLIENT_ERROR:自增值不是对象。
  • ERROR其他错误,如语法错误等。

<think>好的,用户的问题是关于Memcached在使用netstat命令时找不到连接信息,需要排查原因或找到替代方法。首先,我得回想一下Memcached的基本配置和常见问题。 首先,用户可能没有正确启动Memcached服务。比如,启动时可能没有指定正确的端口或IP地址。根据引用[1],启动命令中使用了-p 11211参数,所以默认端口是11211。如果用户启动时没有指定端口,或者指定了其他端口,netstat查不到对应的端口就会有问题。另外,检查是否以守护进程模式启动(-d参数),但如果没有正确运行,服务可能没起来。 其次,防火墙或安全组设置可能阻止了端口的访问。即使Memcached在运行,如果防火墙屏蔽了11211端口,外部无法连接,netstat可能显示不了相关连接。需要检查iptables或者firewalld的设置。 然后,Memcached可能绑定到了本地回环地址(127.0.0.1),这样只有本机可以连接,外部无法访问。这时候netstat会显示0.0.0.0:11211还是127.0.0.1:11211呢?如果启动时没有指定-l参数绑定到所有接口,可能默认是监听所有接口,但有时候配置问题可能导致绑定到本地,需要确认启动参数是否有-l选项或者配置文件中是否设置。 另外,用户可能在使用netstat命令时没有正确的参数。比如,是否使用了正确的协议(TCP/UDP),因为Memcached默认同时监听TCP和UDP端口。引用[1]中的netstat输出显示了tcp、tcp6、udp、udp6,所以用户需要使用-atu参数来查看所有连接。如果用户只用了-t或-u,可能会遗漏部分信息。 如果服务确实在运行但netstat无法显示,可能需要检查进程是否存活。使用ps或pgrep命令查看Memcached进程是否存在,如引用[3]中的ps -ef | grep 11211。如果进程不存在,说明服务没启动成功,需要重新启动并检查日志。 还有可能Memcached配置了SASL认证,导致未认证的连接无法建立,但这种情况可能比较少见,需要检查是否启用了认证机制。 如果上述方法都无效,可能需要替代方案,比如使用telnet或nc命令测试端口连通性。引用[2]中提到使用telnet连接11211端口,如果连接后出现error,说明服务正常运行。或者使用nc命令发送stats命令查看状态,如引用[1]中的mon_mc.sh脚本可能使用了nc来检查服务状态。 总结下来,可能的排查步骤包括:确认服务是否运行、检查端口绑定和监听情况、查看防火墙设置、验证netstat命令参数是否正确,以及使用替代工具进行测试。需要一步步引导用户检查每个环节,找出具体原因。</think>针对Memcached服务无法通过$netstat$命令查找到网络连接信息的问题,以下是逐步排查方案: --- ### **一、确认服务运行状态** 1. **检查Memcached进程** ```bash ps -ef | grep memcached ``` 观察输出是否包含类似`memcached -m 16m -p 11211 -d -u root`的进程信息[^3]。若无,说明服务未启动,需重新启动: ```bash memcached -m 16m -p 11211 -d -u root -c 8192 ``` 2. **验证服务端口监听** 使用更精准的命令过滤: ```bash lsof -i :11211 ``` 若输出为空,表明服务未正确绑定端口,需检查启动参数(如`-p 11211`是否遗漏)。 --- ### **二、排查网络配置问题** 1. **检查绑定地址** - 若Memcached启动参数包含`-l 127.0.0.1`,则仅允许本地连接,此时远程客户端无法建立连接。应改为`-l 0.0.0.0`以监听所有接口。 - 确认启动命令示例: ```bash memcached -m 16m -p 11211 -d -u root -l 0.0.0.0 ``` 2. **防火墙与安全组规则** - 检查防火墙是否开放11211端口: ```bash iptables -L -n | grep 11211 ``` - 临时关闭防火墙测试: ```bash systemctl stop firewalld # CentOS ufw disable # Ubuntu ``` --- ### **三、优化netstat命令使用** 1. **指定协议类型** Memcached默认同时监听TCP和UDP端口,需添加`-u`参数查看UDP连接: ```bash netstat -antup | grep 11211 ``` 2. **使用ss命令替代** ```bash ss -tuln | grep 11211 ``` `ss`命令比`netstat`更高效,支持显示更详细的套接字信息。 --- ### **四、替代验证方法** 1. **telnet/nc工具测试** ```bash telnet 127.0.0.1 11211 # 输入stats查看状态[^2] ``` 或使用`nc`发送命令: ```bash echo "stats" | nc 127.0.0.1 11211 ``` 2. **监控脚本验证** 参考引用[1]中的脚本,通过返回内容判断服务状态: ```bash sh mon_mc.sh 127.0.0.1 11211 ``` --- ### **五、日志与调试信息** 1. **启用详细日志** 启动时添加`-vv`参数输出调试信息: ```bash memcached -m 16m -p 11211 -d -u root -vv ``` 观察日志是否提示端口占用或权限错误。 2. **检查系统日志** ```bash journalctl -u memcached | tail -n 50 ``` --- ### **典型原因总结** | 原因 | 现象 | 解决方案 | |---------------------|-------------------------------|------------------------------| | 服务未启动 | 无进程信息 | 重启服务并检查参数 | | 绑定本地地址 | 仅`127.0.0.1:11211`监听 | 修改为`-l 0.0.0.0` | | 防火墙拦截 | 外部无法连接 | 开放端口或关闭防火墙 | | UDP协议未检测 | netstat遗漏UDP连接 | 使用`netstat -anu`或`ss -u` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值