Memcached数据库简单学习与使用

news/2025/2/2 21:43:01 标签: 数据库, memcached, 学习

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.niftyadmin.cn/n/5840325.html

相关文章

Linux网络 HTTP cookie 与 session

Cookie 定义与功能&#xff1a;Cookie是服务器发送到用户浏览器并保存在本地的一小块数据&#xff0c;它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常&#xff0c;它用于告知服务端两个请求是否来自同一浏览器&#xff0c;如保持用户的登录状态、记录…

C++:虚函数与多态性习题2

题目内容&#xff1a; 编写程序&#xff0c;声明抽象基类Shape&#xff0c;由它派生出3个派生类&#xff1a;Circle、Rectangle、Triangle&#xff0c;用虚函数分别计算图形面积&#xff0c;并求它们的和。要求用基类指针数组&#xff0c;使它每一个元素指向一个派生类对象。 …

程序代码篇---Numpyassert迭代器

文章目录 前言第一部分&#xff1a;Numpy1. 创建数组2. 数组索引和切片3. 数组形状操作4. 数组运算5. 数学函数6. 随机数生成7. 数组排序 第二部分&#xff1a;assert基本语法1.condition2.error_message 示例注意事项断言的用途 第三部分&#xff1a;迭代器迭代器协议1.__iter…

力扣257. 二叉树的所有路径(遍历思想解决)

Problem: 257. 二叉树的所有路径 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 利用先序遍历的思想&#xff0c;我门用一个List变量path记录当前先序遍历的节点&#xff0c;当遍历到根节点时&#xff0c;将其添加到另一个List变量res中&…

第四章-SUSE- Rancher-容器高可用与容灾测试-RKE2(容灾测试)

系列文章目录 第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置Mysql&#xff08;主备集群搭建&#xff09;-CSDN博客 第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建&#xff08;外置Mysql&#xff09; 第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-…

1.4 Go 数组

一、数组 1、简介 数组是切片的基础 数组是一个固定长度、由相同类型元素组成的集合。在 Go 语言中&#xff0c;数组的长度是类型的一部分&#xff0c;因此 [5]int 和 [10]int 是两种不同的类型。数组的大小在声明时确定&#xff0c;且不可更改。 简单来说&#xff0c;数组…

XML DOM 获取节点值

nodeValue 属性用于获取节点的文本值。 getAttribute() 方法返回属性的值。 获取元素的值 在 DOM 中&#xff0c;每种成分都是节点。元素节点没有文本值。 元素节点的文本存储在子节点中。该节点称为文本节点。 获取元素文本的方法&#xff0c;就是获取这个子节点&#xff…

概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步

BGP&#xff08;Border Gatreway Protcol&#xff09;边界网关路由协议 BGP基本配置 BGP实战拓扑 外部BGP基础配置 内部BGP邻居 EBGP基本配置 CCNP综合实验拓扑 文章目录 系列文件概述BGP ASBGP 邻居BGP 更新源BGP TTLBGP路由表BGP 同步 概述 当前所使用的计算机网络…