ronething's notes
  • 技术笔记集锦 | Technical Notes Collection
  • Flask 处理 JSON 请求数据指南
  • IntelliJ IDEA 安装和使用 Lombok 教程
  • Mac 解决 "Operation not permitted" 权限问题
  • RESTful API 设计指南与最佳实践 | RESTful API Design Guide and Best Practices
  • Resilio Sync 使用教程与配置指南
  • Ubuntu 系统安装和配置字体教程
  • Linux服务器安全:自动封禁SSH暴力破解攻击IP
  • CentOS 修复 GRUB 引导问题
  • Chrome 浏览器强制刷新不使用缓存的方法
  • Cordova iOS 开发环境搭建与应用构建
  • Linux系统安全配置:如何禁用或管理SELinux | Disable SELinux in Linux
  • Python文件操作指南:如何过滤文件名中的非法字符 | Filter Invalid Filename Characters with Python
  • Github Gist 测试与使用笔记
  • Git新手指南:如何初始化本地仓库并推送到远程服务器 | Git Init and Push to Remote
  • 今日快乐记录与心情分享
  • Linux 基础命令大全
  • Java 中的 List 和 Set 集合类型详解
  • macOS Spotlight完全指南 | Ultimate Guide to macOS Spotlight Search
  • Mac 上编译构建 FFmpeg 的详细步骤
  • 使用 Clang 编译链接 FFmpeg 库的方法
  • macOS VSCode终端字体完全指南:解决Powerline特殊字符显示问题 | VS Code Terminal Fonts on Mac
  • Mac 上图片格式转换工具与方法
  • MacPorts 包管理器安装与使用指南
  • MathJax 数学公式渲染测试与用法
  • Memcached 缓存服务器使用教程
  • MySQL 日期函数使用指南
  • Nginx 端口绑定错误解决方案:80端口被占用问题
  • Nginx上传文件大小限制完全指南 | Nginx Upload File Size Limit
  • Python Slice
  • RaiDrive 云存储映射工具使用教程
  • Rclone: A Comprehensive Guide to Cloud Storage Synchronization
  • reStructuredText 标记语言语法指南
  • Telegram Bot Proxy
  • Ubuntu Apache2 端口修改教程:从默认80端口切换至8888
  • Ubuntu 安装 Deepin 版微信客户端指南
  • Ubuntu 安装配置 Oh My Zsh 终端美化
  • YouTube 视频嵌入测试与教程
Powered by GitBook
On this page
  • 存储命令
  • 查找命令
  • 统计命令

Was this helpful?

Memcached 缓存服务器使用教程

PreviousMathJax 数学公式渲染测试与用法NextMySQL 日期函数使用指南

Last updated 2 months ago

Was this helpful?

memcached 基本使用手册

参考

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

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

特点:

  • 协议简单

  • 基于libevent的事件处理

  • 内置内存存储方式

  • memcached不互相通信的分布式


存储命令

set

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

set key flags exptime bytes [noreply] 
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。

add key flags exptime bytes [noreply]
value

输出信息说明:

  • STORED:保存成功后输出。

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

replace

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

replace key flags exptime bytes [noreply]
value

输出信息说明:

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

append

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

append key flags exptime bytes [noreply]
value

输出信息说明:

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

prepend

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

prepend key flags exptime bytes [noreply]
value

输出信息说明:

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

cas

Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作。

它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下, 才能够将值写入。

检查是通过 cas_token 参数进行的, 这个参数是 Memcach 指定给已经存在的元素的一个唯一的64位值。
cas key flags exptime bytes unique_cas_token [noreply]
value

注意⚠️ 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

gets a
VALUE a 0 4 78
xixi
END

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

delete

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

delete key [noreply]

输出信息说明:

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

incr 与 decr

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

incr key increment_value
decr key decrement_value
  • increment_value: 增加的数值。

  • decrement_value: 减少的数值。

输出信息说明:

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

# a 为 数字 1
incr a ni
CLIENT_ERROR invalid numeric delta argument
# b 为 字符串 ni
incr b 1
CLIENT_ERROR cannot increment or decrement non-numeric value

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

统计命令

stats

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

stats

stats
STAT pid 1
STAT uptime 9814
STAT time 1546591694
STAT version 1.5.12
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 2.230000
STAT rusage_system 2.430000
STAT max_connections 1024
STAT curr_connections 3
STAT total_connections 37
STAT rejected_connections 0
STAT connection_structures 4
STAT reserved_fds 20
STAT cmd_get 161
STAT cmd_set 102
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 146
STAT get_misses 15
STAT get_expired 2
STAT get_flushed 0
STAT delete_misses 3
STAT delete_hits 14
STAT incr_misses 0
STAT incr_hits 362
STAT decr_misses 0
STAT decr_hits 7
STAT cas_misses 1
STAT cas_hits 20
STAT cas_badval 8
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15811
STAT bytes_written 12838
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT slab_reassign_rescues 0
STAT slab_reassign_chunk_rescues 0
STAT slab_reassign_evictions_nomem 0
STAT slab_reassign_inline_reclaim 0
STAT slab_reassign_busy_items 0
STAT slab_reassign_busy_deletes 0
STAT slab_reassign_running 0
STAT slabs_moved 0
STAT lru_crawler_running 0
STAT lru_crawler_starts 4593
STAT lru_maintainer_juggles 19636
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 218
STAT curr_items 3
STAT total_items 96
STAT slab_global_page_pool 0
STAT expired_unfetched 1
STAT evicted_unfetched 0
STAT evicted_active 0
STAT evictions 0
STAT reclaimed 3
STAT crawler_reclaimed 3
STAT crawler_items_checked 45
STAT lrutail_reflocked 20
STAT moves_to_cold 81
STAT moves_to_warm 25
STAT moves_within_lru 9
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
END
  • 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 items
STAT items:1:number 3
STAT items:1:number_hot 0
STAT items:1:number_warm 0
STAT items:1:number_cold 3
STAT items:1:age_hot 0
STAT items:1:age_warm 0
STAT items:1:age 8621
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 3
STAT items:1:expired_unfetched 1
STAT items:1:evicted_unfetched 0
STAT items:1:evicted_active 0
STAT items:1:crawler_reclaimed 3
STAT items:1:crawler_items_checked 48
STAT items:1:lrutail_reflocked 20
STAT items:1:moves_to_cold 81
STAT items:1:moves_to_warm 25
STAT items:1:moves_within_lru 9
STAT items:1:direct_reclaims 0
STAT items:1:hits_to_hot 67
STAT items:1:hits_to_warm 13
STAT items:1:hits_to_cold 66
STAT items:1:hits_to_temp 0
END

stats slabs

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

stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 3
STAT 1:free_chunks 10919
STAT 1:free_chunks_end 0
STAT 1:mem_requested 218
STAT 1:get_hits 146
STAT 1:cmd_set 102
STAT 1:delete_hits 14
STAT 1:incr_hits 362
STAT 1:decr_hits 7
STAT 1:cas_hits 20
STAT 1:cas_badval 8
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048576
END

stats sizes

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

Memcached 1.4.27 及以后的版本自动开启了 stats sizes 功能 这之前的版本需要在 Memcached 启动时带上 -o track_sizes 则来开启

不过虽然我的版本是 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
OK
set a 0 0 5
nihao
STORED
get a
VALUE a 0 5
nihao
END
stats sizes
STAT 96 1  # item 大小 96, 总共有 1 个key
END

flush_all

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

flush_all [time] [noreply]
set a 0 0 5 
nihao
STORED
get a
VALUE a 0 5
nihao
END
flush_all
OK
get a
END
GITHUB 项目🔗
菜鸟教程