企业架构LNMP学习笔记43

memcached的使用:

命令行连接和操作:

telnet连接使用:

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

安装telnet进行连接:

企业架构LNMP学习笔记43_第1张图片

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

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

退出使用quit命令。

存储命令:

set

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

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

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

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

语法:

set key flag exptime bytes

value

企业架构LNMP学习笔记43_第2张图片

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

对值进行更换:

企业架构LNMP学习笔记43_第3张图片

get

企业架构LNMP学习笔记43_第4张图片

add命令:

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

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

企业架构LNMP学习笔记43_第5张图片

replace:

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

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

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

append:

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

prepend:

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

企业架构LNMP学习笔记43_第6张图片

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

删除命令:

delete:

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

语法:

delete key

企业架构LNMP学习笔记43_第7张图片

flush all:

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

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

flush_all(time)

企业架构LNMP学习笔记43_第8张图片

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

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

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

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

数据库的数据安全。

查找和计算命令:

get命令:

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

get key1 key2 key3

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

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

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

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

incr key value

decr key value

统计状态命令:

语法:stats

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

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地址。

缓存雪崩:

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

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

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

你可能感兴趣的:(Nginx,架构)