• 企业架构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不存在,则返回空。

    get key1 key2 key3

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

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

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

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

    1. incr key value
    2. decr key value

    统计状态命令:

    语法:stats

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

    1. stats
    2. STAT pid 4051
    3. STAT uptime 9979
    4. STAT time 1694689746
    5. STAT version 1.6.21
    6. STAT libevent 2.0.21-stable
    7. STAT pointer_size 64
    8. STAT rusage_user 0.813517
    9. STAT rusage_system 0.542345
    10. STAT max_connections 1024
    11. STAT curr_connections 2
    12. STAT total_connections 4
    13. STAT rejected_connections 0
    14. STAT connection_structures 3
    15. STAT response_obj_oom 0
    16. STAT response_obj_count 1
    17. STAT response_obj_bytes 32768
    18. STAT read_buf_count 4
    19. STAT read_buf_bytes 65536
    20. STAT read_buf_bytes_free 16384
    21. STAT read_buf_oom 0
    22. STAT reserved_fds 20
    23. STAT cmd_get 22
    24. STAT cmd_set 16
    25. STAT cmd_flush 2
    26. STAT cmd_touch 0
    27. STAT cmd_meta 0
    28. STAT get_hits 16
    29. STAT get_misses 6
    30. STAT get_expired 0
    31. STAT get_flushed 0
    32. STAT delete_misses 0
    33. STAT delete_hits 1
    34. STAT incr_misses 1
    35. STAT incr_hits 5
    36. STAT decr_misses 0
    37. STAT decr_hits 3
    38. STAT cas_misses 0
    39. STAT cas_hits 0
    40. STAT cas_badval 0
    41. STAT touch_hits 0
    42. STAT touch_misses 0
    43. STAT store_too_large 0
    44. STAT store_no_memory 0
    45. STAT auth_cmds 0
    46. STAT auth_errors 0
    47. STAT bytes_read 881
    48. STAT bytes_written 1128
    49. STAT limit_maxbytes 67108864
    50. STAT accepting_conns 1
    51. STAT listen_disabled_num 0
    52. STAT time_in_listen_disabled_us 0
    53. STAT threads 4
    54. STAT conn_yields 0
    55. STAT hash_power_level 16
    56. STAT hash_bytes 524288
    57. STAT hash_is_expanding 0
    58. STAT slab_reassign_rescues 0
    59. STAT slab_reassign_chunk_rescues 0
    60. STAT slab_reassign_evictions_nomem 0
    61. STAT slab_reassign_inline_reclaim 0
    62. STAT slab_reassign_busy_items 0
    63. STAT slab_reassign_busy_deletes 0
    64. STAT slab_reassign_running 0
    65. STAT slabs_moved 0
    66. STAT lru_crawler_running 0
    67. STAT lru_crawler_starts 18
    68. STAT lru_maintainer_juggles 19937
    69. STAT malloc_fails 0
    70. STAT log_worker_dropped 0
    71. STAT log_worker_written 0
    72. STAT log_watcher_skipped 0
    73. STAT log_watcher_sent 0
    74. STAT log_watchers 0
    75. STAT unexpected_napi_ids 0
    76. STAT round_robin_fallback 0
    77. STAT bytes 129
    78. STAT curr_items 2
    79. STAT total_items 13
    80. STAT slab_global_page_pool 0
    81. STAT expired_unfetched 0
    82. STAT evicted_unfetched 0
    83. STAT evicted_active 0
    84. STAT evictions 0
    85. STAT reclaimed 3
    86. STAT crawler_reclaimed 0
    87. STAT crawler_items_checked 29
    88. STAT lrutail_reflocked 4
    89. STAT moves_to_cold 17
    90. STAT moves_to_warm 4
    91. STAT moves_within_lru 0
    92. STAT direct_reclaims 0
    93. STAT lru_bumps_dropped 0
    94. 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地址。

    缓存雪崩:

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

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

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

  • 相关阅读:
    关系型数据库和非关系型数据库之间的区别
    JAVA代码实现十大经典排序算法
    ChatGPT在生态保护和可持续发展中的潜在作用如何?
    蛋白类产品改性 荧光标记;偶连抗体多肽或者聚合物或其他小分子偶连蛋白文章介绍
    如何有效进行回顾会议(上)?
    重装系统会影响到电脑的正常使用吗
    废水含镍如何处理
    【JS笔记】JS中的BOM对象及其常见的BOM相关操作
    juc之常用4大并发工具类 (四)
    爆肝!92.3万字笔记让你彻底吃透分布式中的Spring Cloud微服务
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/132880216