企业架构LNMP学习笔记43

memcached的使用:

命令行连接和操作:

telnet连接使用:

memcached默认使用启动服务占用tcp 11211端口,可以通过telnet进行连接使用。

安装telnet进行连接:

连接成功,敲击多次,如果看到error,即连接成功。

显示error的原因,没有输入命令,所以memcached服务器提示error。

退出使用quit命令。

存储命令:

set

set命令用于将value数据值存储在指定的key(键)中。

如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

概念有点类似python中的字典,这个还是很好理解的。

正常我们只要记住set就可以了。

语法:

set key flag exptime bytes

value

多一位少一位都不行。该多少个字节就多少个字节。

对值进行更换:

get

add命令:

add命令用于将value值存储在指定的key键中。

如果add的key已经存在,则不会更新数据(过期的key会更新),之前的值仍保持相同,并且您将获得响应NOT_STORED。

replace:

replace命令用于替换已存在的key(键)的value(数据值)。

如果key不存在,则替换失败,并且您将获得响应NOT_STORED。

存在则替换,不存在则啥也不干。

append:

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

prepend:

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

我们正常只要记住set命令就可以了。

删除命令:

delete:

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

语法:

delete key

flush all:

flush_all 命令用于清理缓存中的所有key/value键值对。

该命令提供了一个可选参数time,用于制定的时间后,正常是s,执行清理缓存的操作。

flush_all(time)

flush_all在业务生产环境上千万不能执行这个操作。如果执行,可能会造成所有缓存清空不存在,所有数据请求都直接到了数据库服务器,造成数据库服务器压力瞬间变大。造成数据库宕机。

另外rm -rf 命令,这个里面的f要少加,这个要特别注意的。

另外数据库的drop命令也是要特别注意的。谨慎操作。

这个数据对公司是业务价值的。一定要有备份。不要嫌麻烦。做好服务的备份,保护数据库的安全。

数据库的数据安全。

查找和计算命令:

get命令:

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

bash 复制代码
get key1 key2 key3

语法:incr(相加)/decr(相减)

计数器:每做一次操作+1

incr和decr命令用于对已存在的key键的数字值进行自增或自减操作。

incr和decr命令操作的数据必须是十进制的32位无符号整数。

bash 复制代码
incr key value

decr key value

统计状态命令:

语法:stats

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

bash 复制代码
stats
STAT pid 4051
STAT uptime 9979
STAT time 1694689746
STAT version 1.6.21
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.813517
STAT rusage_system 0.542345
STAT max_connections 1024
STAT curr_connections 2
STAT total_connections 4
STAT rejected_connections 0
STAT connection_structures 3
STAT response_obj_oom 0
STAT response_obj_count 1
STAT response_obj_bytes 32768
STAT read_buf_count 4
STAT read_buf_bytes 65536
STAT read_buf_bytes_free 16384
STAT read_buf_oom 0
STAT reserved_fds 20
STAT cmd_get 22
STAT cmd_set 16
STAT cmd_flush 2
STAT cmd_touch 0
STAT cmd_meta 0
STAT get_hits 16
STAT get_misses 6
STAT get_expired 0
STAT get_flushed 0
STAT delete_misses 0
STAT delete_hits 1
STAT incr_misses 1
STAT incr_hits 5
STAT decr_misses 0
STAT decr_hits 3
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT store_too_large 0
STAT store_no_memory 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 881
STAT bytes_written 1128
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 18
STAT lru_maintainer_juggles 19937
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 log_watchers 0
STAT unexpected_napi_ids 0
STAT round_robin_fallback 0
STAT bytes 129
STAT curr_items 2
STAT total_items 13
STAT slab_global_page_pool 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evicted_active 0
STAT evictions 0
STAT reclaimed 3
STAT crawler_reclaimed 0
STAT crawler_items_checked 29
STAT lrutail_reflocked 4
STAT moves_to_cold 17
STAT moves_to_warm 4
STAT moves_within_lru 0
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
END

stats参数参考:

pid: memcache服务器进程ID

uptime:服务器已运行秒数

time:服务器当前Unix时间戳

启动时间: time-uptime

version:memcached版本

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:已过期的数据条目来存储新数据的数目

**缓存命中率:**命中数(get获取到数据)/ 获取次数(get的次数)

get_hits/cmd_get, 如果命中率低,业务代码缓存有问题,命中率为0,说明缓存没有起到作用。

缓存预热。

命中率越高,说明我们的缓存做的越好。

缓存穿透:

访问的数据,数据库都不存在的数据,每次都不能够生成缓存,每次请求都直接访问数据库,穿透了缓存,缓存没有起到作用。数据库压力没有得到缓解。

解决方案:数据库查不到的,也做一个空缓存。

一般情况是受到攻击了。直接把对方的IP封掉。deny IP地址。

缓存雪崩:

缓存具有失效时间,如果缓存失效时间都是一样,本来应该请求缓存,但是因为缓存失效了,全部请求到了数据库,数据库压力剧增,可能造成数据库宕机,进而造成系统奔溃。

解决方案:设置缓存的失效时间均匀分布。

最终目的是降低数据库压力。

相关推荐
Lee川14 小时前
深度拆解:基于面向对象思维的“就地编辑”组件全模块解析
javascript·架构
勤劳打代码14 小时前
Flutter 架构日记 — 状态管理
flutter·架构·前端框架
子兮曰20 小时前
后端字段又改了?我撸了一个 BFF 数据适配器,从此再也不怕接口“屎山”!
前端·javascript·架构
卓卓不是桌桌1 天前
如何优雅地处理 iframe 跨域通信?这是我的开源方案
javascript·架构
Qlly1 天前
DDD 架构为什么适合 MCP Server 开发?
人工智能·后端·架构
用户881586910912 天前
AI Agent 协作系统架构设计与实践
架构
鹏北海2 天前
Qiankun 微前端实战踩坑历程
前端·架构
货拉拉技术2 天前
货拉拉海豚平台-大模型推理加速工程化实践
人工智能·后端·架构
RoyLin2 天前
libkrun 深度解析:架构设计、模块实现与 Windows WHPX 后端
架构
CoovallyAIHub3 天前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github