Memcached 缓存服务器使用教程

memcached 基本使用手册

GITHUB 项目🔗

参考 菜鸟教程

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

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

特点:

  • 协议简单

  • 基于libevent的事件处理

  • 内置内存存储方式

  • memcached不互相通信的分布式


存储命令

set

Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中。如果 set 的 key 已经存在,该命令可以更新 key 所对应的 value

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

  • flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。

  • exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)

  • bytes:在缓存中存储的字节数

  • noreply(可选): 该参数告知服务器不需要返回数据

  • value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)

输出信息说明:

STORED:保存成功后输出。 ERROR:在保存失败后输出。

add

Memcached add 命令用于将 value(数据值) 存储在指定的 key(键) 中。如果 add 的 key 已经存在,则不会更新数据(过期的 key 会更新),之前的值将仍然保持相同,并且您将获得响应 NOT_STORED

输出信息说明:

  • STORED:保存成功后输出。

  • NOT_STORED :在保存失败后输出。

replace

Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值)。如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED

输出信息说明:

STORED:保存成功后输出。 NOT_STORED:执行替换失败后输出。

append

Memcached append 命令用于向已存在 key(键) 的 value(数据值) 后面追加数据 。

输出信息说明:

STORED:保存成功后输出。 NOT_STORED:该键在 Memcached 上不存在。 CLIENT_ERROR:执行错误。

prepend

Memcached prepend 命令用于向已存在 key(键) 的 value(数据值) 前面追加数据 。

输出信息说明:

STORED:保存成功后输出。 NOT_STORED:该键在 Memcached 上不存在。 CLIENT_ERROR:执行错误。

cas

注意⚠️ unique_cas_token 通过 gets 命令获取的一个唯一的64位值。如果没有设置唯一令牌,则 CAS 命令执行错误。

输出信息说明:

STORED:保存成功后输出。 ERROR:保存出错或语法错误。 EXISTS:在最后一次取值后另外一个用户也在更新该数据。 NOT_FOUND:Memcached 服务上不存在该键值。

查找命令

get

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

  • 单个 key get key

  • 多个 key get key1 key2 key3

gets

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

  • 单个 key gets key

  • 多个 key gets key1 key2 key3

在最后一列的数字 78 代表了 key 为 runoob 的 CAS 令牌。

delete

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

输出信息说明:

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

incr 与 decr

Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。(最小只能减小到 0 最大很迷 emm)

  • increment_value: 增加的数值。

  • decrement_value: 减少的数值。

输出信息说明:

NOT_FOUND:key 不存在。 CLIENT_ERROR:自增值不是对象。

ERROR:其他错误,如语法错误等。

统计命令

stats

Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号、连接数等。

stats

  • pid: memcache服务器进程ID

  • uptime:服务器已运行秒数

  • time:服务器当前Unix时间戳

  • version:memcache版本

  • pointer_size:操作系统指针大小

  • rusage_user:进程累计用户时间

  • rusage_system:进程累计系统时间

  • curr_connections:当前连接数量

  • total_connections:Memcached运行以来连接总数

  • connection_structures:Memcached分配的连接结构数量

  • cmd_get:get命令请求次数

  • cmd_set:set命令请求次数

  • cmd_flush:flush命令请求次数

  • get_hits:get命令命中次数

  • get_misses:get命令未命中次数

  • delete_misses:delete命令未命中次数

  • delete_hits:delete命令命中次数

  • incr_misses:incr命令未命中次数

  • incr_hits:incr命令命中次数

  • decr_misses:decr命令未命中次数

  • decr_hits:decr命令命中次数

  • cas_misses:cas命令未命中次数

  • cas_hits:cas命令命中次数

  • cas_badval:使用擦拭次数

  • auth_cmds:认证命令处理的次数

  • auth_errors:认证失败数目

  • bytes_read:读取总字节数

  • bytes_written:发送总字节数

  • limit_maxbytes:分配的内存总大小(字节)

  • accepting_conns:服务器是否达到过最大连接(0/1)

  • listen_disabled_num:失效的监听数

  • threads:当前线程数

  • conn_yields:连接操作主动放弃数目

  • bytes:当前存储占用的字节数

  • curr_items:当前存储的数据总数

  • total_items:启动以来存储的数据总数

  • evictions:LRU释放的对象数目

  • reclaimed:已过期的数据条目来存储新数据的数目

stats items

Memcached stats items 命令用于显示各个 slab 中 item 的数目和存储时长(最后一次访问距离现在的秒数)。

stats slabs

Memcached stats slabs 命令用于显示各个slab的信息,包括chunk的大小、数目、使用情况等。

stats sizes

Memcached stats sizes 命令用于显示所有item的大小和个数。该信息返回两列,第一列是 item 的大小,第二列是 item 的个数。

不过虽然我的版本是 1.5.12

不过也没用。输入stats sizes后出现STAT sizes_status disabled

只好

docker run --name my-memcache -p 11211:11211 -d memcached memcached -m 64 -o track_sizes

flush_all

Memcached flush_all 命令用于清理缓存中的所有 key=>value(键=>值) 对。该命令提供了一个可选参数 time,用于在制定的时间后执行清理缓存操作。

Last updated

Was this helpful?