Memcached数据库简单学习与使用

ops/2025/2/2 9:34:15/

Memcached 是一款高性能的分布式内存缓存系统,通常用于加速动态Web应用程序,通过减少数据库的负载来提升性能。Memcached的基本原理很简单:它通过将数据存储在内存中,减少数据库的访问频率,从而提高应用程序的响应速度。


一、Memcached的工作原理

作为一个缓存系统,Memcached主要完成以下任务:

  1. 数据存储与检索:Memcached将数据存储在内存中,支持多种数据类型,如字符串、整数、JSON对象等。这样,Web应用可以快速从缓存中获取常用数据,从而减少对数据库的频繁访问。

  2. 键值对存储:数据以键值对的形式存储,使用键可以迅速检索与之对应的值。这种设计特别适用于缓存频繁访问的数据。

  3. 过期策略:Memcached允许为存储的数据设置过期时间。数据在超时后会自动清除,防止内存占用过多。

尽管Memcached在提升性能方面表现优异,但其本身并没有提供默认的身份验证或加密机制,因此如果没有严格的安全配置,它容易成为攻击者的目标。

二、Memcached的默认配置与安全风险

  1. 默认端口:Memcached默认监听11211端口。如果未修改配置,该端口将直接暴露。

  2. 无身份验证:Memcached缺乏内建的身份验证机制,任何可以访问服务的用户均可进行数据存储和读取操作。

  3. 无加密:Memcached的通信是明文的,数据在传输过程中缺乏加密保护,容易遭到嗅探与篡改。

  4. 暴露端口:许多Memcached服务未进行安全配置,导致其暴露在公网,攻击者可以直接连接并执行命令,甚至获取敏感信息。

这些默认配置带来了明显的安全风险,尤其是敏感数据泄露、服务滥用等问题。为了避免这些问题,必须在部署Memcached时进行严格的安全配置。

三、常用Memcached命令

连接Memcached服务

可以使用 telnetnc 等工具连接到Memcached服务:

telnet <target-ip> 11211

nc <target-ip> 11211

连接后,Memcached将进入交互模式,允许执行各种操作。

查看Memcached状态:stats

使用 stats 命令可以查看Memcached的运行状态,帮助测试人员了解内存使用情况、命中率、存储项数等重要信息。

stats

返回示例

STAT pid 1234
STAT uptime 1234567
STAT time 1615284097
STAT version 1.6.9
STAT pointer_size 64
STAT rusage_user 20.13
STAT rusage_system 15.89
STAT curr_items 1123
STAT total_items 14567
STAT bytes 10485760
STAT evictions 0
STAT cmd_get 2034
STAT cmd_set 15432
...

关键字段

  • curr_items:当前缓存中的项目数。
  • total_items:Memcached启动以来总共存储的项目数。
  • bytes:Memcached当前使用的内存总量。
  • evictions:被驱逐的缓存项数(缓存溢出时会发生)。
  • cmd_getcmd_set:获取和设置操作的次数。

获取缓存项分布:stats items

stats items 命令列出了Memcached中所有存储的“桶”(slabs)及其缓存项数量和年龄。Memcached使用不同大小的内存块(“桶”)来存储缓存项。

stats items

返回示例

STAT items:1:number 128
STAT items:1:age 235
STAT items:2:number 324
STAT items:2:age 160
STAT items:3:number 56
STAT items:3:age 87

解释

  • items:<slab-class>:number:每个“桶”中的项数,slab-class表示内存块类型。
  • items:<slab-class>:age:每个“桶”中的缓存项存活时间。

查看特定桶的缓存项:stats cachedump

stats cachedump 命令允许查看某个桶中的所有缓存项。需要提供 slab-class 和要列出的项数限制。

stats cachedump <slab-class> <limit>

例如,查看第一个桶中的所有项:

stats cachedump 1 100

返回示例

ITEM session_12345 [55 b; 1615284097 s]
ITEM user_67890 [102 b; 1615284098 s]
ITEM api_key_xyz123 [200 b; 1615284099 s]
...

获取指定键的数据:get <key>

get 命令用于检索存储在Memcached中的数据,适用于直接查询某个缓存项的内容。

get <key>

例如,要查看 session_12345 键的内容:

get session_12345

返回示例

VALUE session_12345 0 55
<binary_data>
END

设置新的键值对:set

set 命令用于将键值对存储到Memcached。渗透测试人员可以通过此命令测试Memcached的防篡改能力,或尝试写入恶意数据。

set <key> <flags> <exptime> <bytes> <data>

例如,设置一个新的键:

set session_12345 0 3600 9 hello_world

解释

  • 0:flags,通常为0。
  • 3600:过期时间,单位秒。
  • 9:数据大小,单位字节。
  • hello_world:存储的数据。

清空缓存:flush_all

flush_all 命令可以清空Memcached中的所有数据,这对测试缓存行为或敏感数据存储有一定帮助。

flush_all

http://www.ppmy.cn/ops/154998.html

相关文章

FreeRTOS学习 --- 任务调度

开启任务调度器 作用&#xff1a;用于启动任务调度器&#xff0c;任务调度器启动后&#xff0c; FreeRTOS 便会开始进行任务调度 该函数内部实现&#xff0c;如下&#xff1a; 1、创建空闲任务&#xff08;优先级最低&#xff09; 2、如果使能软件定时器&#xff0c;则创建定…

Java中对消息序列化和反序列化并且加入到Spring消息容器中

--- 参考项目&#xff1a;苍穹外卖。 在对没有Java中的数据序列化时&#xff0c;比如说时间格式&#xff1a; 时间的格式是这种没有格式化的效果&#xff0c;因为在给前端返回数据时&#xff0c;返回的结果并没有序列化。 所以&#xff0c;需要对返回的数据序列化。 首先需…

MySQL UNION 操作详解

MySQL UNION 操作详解 引言 在数据库操作中,UNION 是一个非常重要的概念,它允许我们在一个查询中合并多个 SELECT 语句的结果集。UNION 操作通常用于将来自不同表的数据合并在一起,或者将同一表中的数据按照不同的条件进行合并。本文将详细介绍 MySQL 中的 UNION 操作,包…

【PyTorch】5.张量索引操作

目录 1. 简单行、列索引 2. 列表索引 3. 范围索引 4. 布尔索引 5. 多维索引 个人主页&#xff1a;Icomi 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&#xff0c;为构建和训练神经网络提供了高效且灵活的平台。神经网络作为…

python:洛伦兹变换

洛伦兹变换&#xff08;Lorentz transformations&#xff09;是相对论中的一个重要概念&#xff0c;特别是在讨论时空的变换时非常重要。在四维时空的背景下&#xff0c;洛伦兹变换描述了在不同惯性参考系之间如何变换时间和空间坐标。在狭义相对论中&#xff0c;洛伦兹变换通常…

FFmpeg rtmp推流直播

文章目录 rtmp协议RTMP协议组成RTMP的握手过程RTMP流的创建RTMP消息格式Chunking(Message 分块) rtmp服务器搭建Nginx服务器配置Nginx服务器 librtmp库编译推流 rtmp协议 RTMP&#xff08;Real Time Messaging Protocol&#xff09;是由Adobe公司基于Flash Player播放器对应的…

电脑怎么格式化?格式化详细步骤

格式化是我们在日常使用电脑时可能会用到的一种操作&#xff0c;无论是清理磁盘空间、安装新系统&#xff0c;还是解决磁盘读写错误&#xff0c;都可能需要格式化。不过&#xff0c;对于一些不熟悉电脑操作的用户来说&#xff0c;格式化听起来可能有些复杂。其实&#xff0c;只…

Deepseek技术浅析(二):大语言模型

DeepSeek 作为一家致力于人工智能技术研发的公司&#xff0c;其大语言模型&#xff08;LLM&#xff09;在架构创新、参数规模扩展以及训练方法优化等方面都达到了行业领先水平。 一、基于 Transformer 架构的创新 1.1 基础架构&#xff1a;Transformer 的回顾 Transformer 架…