memcached几个容易被忽略但非常有用的命令

memcached源码分析-----安装、调试以及如何阅读memcached源码 转载请注明出处: 安装:         安装memcached之前要先安装Libevent。现在假定Libevent安装在/usr/local/libevent目录了。         因为memcached安装后不像Libevent那样,有一堆头文件和库文件。安装后的memcached不是用来编程而直接用来运行的。所以不需要在/usr/local目录下专门为memcach 阅读详情

一、CAS和GETS

        Memcached从1.2.4版本新增CAS(Check and Set)协议,用于处理同一个ITEM(key-value)被多个session更新修改时的数据一致性问题。

        假设有两个session(A、B),要同时修改某个key的值x,并且修改的数据是基于原来数据的一个计算的结果。session A和B同时得到了key的值x,session A经过计算后应该更新为y,session B经过计算后也更新为y,但是session B其实期望的是拿到y值,并将其计算为Z后更新。造成这个问题的原因就是缺少一个类似于MySQL的事务,用于数据并发修改的一致性问题。

        CAS命令着眼于解决一定的并发修改问题,引入了乐观锁的概念。在试图修改某个KEY的值之前,先由GETS命令得到某个KEY的值及其版本号,完成数据操作更新数据时,使用CAS谨慎更新,比较版本号是否与本地的版本号一致,否则放弃此次的修改。

        Memcached在默认开启CAS协议后,每个key关联有一个64-bit长度的long型惟一数值,表示该key对应value的版本号。这个数值由Memcached server产生,从1开始,且同一Memcached server不会重复。在两种情况下这个版本数值会加1:

1、新增一个key-value对;

2、对某已有key对应的value值更新成功。删除item版本值不会减小。 

        首先为了获得KEY值的版本号,引入了GETS命令,可以发现GETS命令比GET命令多返回了一个数字,这个数字就是上面我们提到的KEY值的版本号。

        然后是CAS命令,与SET命令类似,只是在最后面多了一个参数,也就是key值得版本号,只有版本号与存储的数据版本号一致时,更新操作才会生效。


set a 0 0 1
x
STORED

gets a
VALUE a 0 1 1  //最后一位就是a的版本号
x
END

set a 0 0 1
y
STORED

gets a
VALUE a 0 1 2    //新增或修改之后,版本号都会增加
y

cas a 0 0 1 1    //cas更新的时候,不同于set操作,最后一位要指定版本号,当本地版本号和服务器版本号相同的时候,更新才会有效
x
EXISTS

cas a 0 0 1 2
y
STORED


二、stats items和stats cachedump

        你曾经是否也有想知道memcached里面都存了哪些数据的需求,你是否也曾经在寻找一个方法能像redis一样可以遍历memcached所有的key

        其实就是应用我们平时经常用到的stats方法。stats方法不仅能获得memcached的一个概况信息,如果加上子命令还可以获得更多的更加详细的信息。如slabs,items等。

        stats items命令,可以获得memcached内item组的相关信息,如分组内item的数量,踢掉次数等。后面运行cachedump命令的时候会用到这个命令的返回信息(item组序号)。

        stats cachedump命令,可以将某个slab中的items全部dump出来,第一个参数就是上面stats items返回的items组号,也就是slab的编号,第二个参数为一次显示多少个item信息,如果为0就显示这个item组的全部items,第二列就是key。


stats items
STAT items:1:number 3
STAT items:1:age 943
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

stats cachedump 1 0
ITEM c [5 b; 1405246917 s]
ITEM b [1 b; 1405246917 s]
ITEM a [1 b; 1405246917 s]
END

        虽然应用这两个命令并不能一次显示全部的key,但是如果我们自己根据stats items的返回值自己做一次迭代,或者仅仅是为了手动做几个item的抽样,那么就能很好的帮助我们了解memcached中数据的情况。


从真题到策略:浙江工业大学计算机转专业机试全解析与备考指南 本文全面解析浙江工业大学计算机转专业机试的考试概况、典型真题和高频考点,提供详细的备考策略和面试准备建议。从机试题目类型到解题技巧,帮助考生高效备考,顺利通过这一竞争激烈的转专业关卡。 阅读详情

相关推荐

RK3308B开发板WiFi+蓝牙一体模组RTL8821CS驱动移植保姆级教程(含DTS配置与避坑点)

本文提供RK3308B开发板RTL8821CS WiFi+蓝牙模组驱动移植的完整教程,涵盖SDK环境配置、DTS设备树设置、内核编译优化及功能验证全流程。重点解析引脚复用冲突、电源管理等关键配置,并给出常见错误解决方案,帮助开发者快速实现双模通信功能。

weixin_42531163的博客 398

提取Windows用户密钥文件cachedump

提取Windows用户密钥文件cachedump Windows系统将用户信息和密钥存储在系统存档文件(System hive)和安全存档(Security hive)中。只要提取这些内容,就可以...

322

西瓜书第二章——模型评估与选择(十折交叉验证/查准查全F1)

第二章——模型评估与选择

xsddys的博客 953

Linux系统之cache_dump详解

cache_dump 是一个用于从设备或文件中提取缓存元数据并将其以 XML 格式输出到标准输出的工具。该工具主要用于分析和后处理由 device-mapper 缓存目标创建的二进制缓存元数据。提取的 XML 格式元数据可以通过 cache_restore 工具重新加载到元数据设备或文件中。

weixin_56303229的博客 668

DeepSeek的训练与优化流程

DeepSeek的训练体系不仅追求极致的计算效率,更注重将物理规律、人类知识、安全伦理深度融入训练过程,其"效率-安全-可解释性"三角平衡的设计理念,为行业提供了重要参考范式。

m0_56896669的博客 1437

OC5021B 100V宽电压输入 LED车灯/大功率照明 DC降压型恒流驱动器

适用于LED大功率汽车大灯/大功率照明 OC5021B 100V宽电压输入 5A电流设计 DC-DC降压型恒流驱动IC

Handsome63841990的博客 2417

内存取证-volatility工具的使用 (史上更全教程,更全命令)

内存取证-volatility工具的使用 (史上更全教程,更全命令) 安装步骤 命令解析 工具插件分析 例题讲解

路baby的博客 12万+

SSH 远程登录报错:kex_exchange_identification: Connection closed.....

不知道为啥会出现这样的情形,最近这段时间登录都是正常的,不知道哪里抽风了,就提示这个。错误信息 kex_exchange_identification: Connection closed by remote host 出现在尝试使用 SSH 连接到远程服务器过程中,表明在密钥交换阶段的一开始,远程主机就关闭了连接。服务器的sshd_config文件中配置错误,可能是不允许的加密算法、修订文件中的语法错误,或者未正确指定用于SSH的HostKey。如果当前已有太多活动连接,新的连接尝试可能会被拒绝。

飞越蓝天的专栏 8297

cachedump

CacheDump will create a CacheDump NT Service to get SYSTEM right and make his stuff on the registry. Then, it will retrieve the LSA Cipher Key to decrypt (rc4/hmac_md5 GloubiBoulga) cache entries valu...

weixin_34387284的博客 262

opencv 双目摄像头拍照(分别左右镜头拍照)

准备一个usb线的双目同步摄像头: 运行环境是vc2015,opencv3.1。 将左右两个摄像头拍到的图片分别保存起来。 1)适用条件 双目同步摄像头(两个镜头,共用一个设备ID) 使用语言:C++ 、opencv库 摄像头 分辨率2560*960 或以上。 源程序: #include"stdafx.h" #include<iostream&g...

黎国溥 1万+

Google Earth Engine 实现图像随机森林分类_遥感分类全流程详解

本文将通过一段完整的GEE代码,逐步讲解如何利用Sentinel-2影像和随机森林算法,实现地表覆盖分类。代码包含等关键步骤,适合遥感入门学习!

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 916

Memcache分组和同步机制的实现

memcached全面剖析–4. memcached的分布式算法 memcached的分布式 正如第1次中介绍的那样, memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。服务器端仅包括 第2次、 第3次 前坂介绍的内存存储功能,其实现非常简单。至

729

【Apache Paimon】-- 13 -- 利用 paimon-flink-action 同步 mysql 表数据

在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式(1)人工通知(比如常规的使用邮件),然后运维人员手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hive 的外部表和内部表 schema那么现在,有了 Paimon ,我们可以利用其特性,自动识别并同步 DDL 这些变化,并同步至 hive 的 paimon 格式表中。

欢迎来到我的博客,一起探索代码里的世界! 1250

memcached几个easy被忽略但很实用的命令

一、CAS和GETS         Memcached从1.2.4版本号新增CAS(Check and Set)协议,用于处理同一个ITEM(key-value)被多个session更新改动时的数据一致性问题。         如果有两个session(A、B)。要同一时候改动某个key的值x,而且改动的数据是基于原来数据的一个计算的结果。session A和B同一时候得到了ke...

weixin_34319111的博客 95

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

PyTorch torch.nn.attention 版本兼容性避坑指南

Scaled Dot Product Attention(SDPA)是现代Transformer模型的核心算子,其在PyTorch中通过torch.nn.attention模块提供标准化接口。该模块自2.0版本引入,经历从实验性支持、CUDA强依赖、到2.1稳定API、2.2后端可插拔、再到2.3参数类型升级的演进过程。技术价值在于统一调度FlashAttention、cuDNN与Math内核,实现硬件自适应加速;典型应用场景包括Hugging Face模型微调、多头注意力替换、因果掩码优化及大模型训练加速

weixin_34127717的博客 111

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Memcached常用命令及使用说明

一、存储命令 存储命令的格式: 1 2 <command name> <data block> 参数说明如下: set/add/replace 查找关键字 客户机使用它存储关于键值对的额外信息

芝麻软件工作室的专栏 1591

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Memcached append 命令

Memcached append 命令详解 append 是 Memcached 中用于在已有键值末尾追加数据的原子操作命令。该命令仅在 key 已存在时生效,且不会改变原值的 flags 和过期时间。语法为 append key flags exptime bytes [noreply]\r\nvalue\r\n,返回 STORED(成功)或 NOT_STORED(key 不存在)。 典型应用场景包括: 实时日志收集(多服务追加到同一 key) 构建大对象(分片写入) 简单消息队列(FIFO 结构) 聊天

m0_57545130的博客 561

Memcached prepend 命令

Memcached的prepend命令详解:用于在已有值开头插入数据,适用于日志倒序、队列头部插入等场景。语法为prepend <key> <flags> <exptime> <bytes> [noreply],需注意key必须存在且总大小不超过1MB。与append命令不同,prepend在开头插入数据。典型应用包括构建倒序日志、优先级队列和分片上传大文件。使用时建议先初始化空值,控制单key大小,添加分隔符,并定期归档数据。常见错误包括key不存在和超限问

m0_57545130的博客 546

memcached协议

memcached协议 旧版:http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt 新版:https://github.com/memcached/memcached/blob/master/doc/protocol.txt 一、协议         memcached的客户端使用TCP连接同memcach

caihaijiang的专栏 7106

memcached 命令简单介绍

原文参考 :http://elf8848.iteye.com/blog/2093463   一、协议         memcached的客户端使用TCP连接同memcached进行交互,memcached服务器监听指定的端口(默认端口是11211)。Client连接到memcached服务器,发送指令,获取数据,然后关闭连接。         通常没有必要发送任何命令来关闭某个会话。客...

xuyunti的博客 146

Memcached介绍及简单的使用

Memcached介绍及简单的使用

2542

Memcached Session Manager性能优化:10个提升会话处理效率的技巧

Memcached Session Manager(MSM)是一款优秀的Tomcat会话管理器,它将会话数据存储在Memcached或Redis中,为高可用、可扩展和容错的Web应用提供了强大支持。🎯 通过合理的性能优化配置,您可以显著提升会话处理的效率和系统响应速度。本文将分享10个实用的性能优化技巧,帮助您充分发挥MSM的潜力。 ## 1. 启用异步会话备份提升响应速度 ⚡ MSM支持同

gitblog_00517的博客 1105
上一篇: python的一个编解码错误
下一篇: memcached源码探秘(一)—— hash_table
Ethan_熠森张
博客等级 码龄18年 124粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值