memcached的根本利用 [复制链接]
发表于 2025-11-15 19:12:06 | 显示全部楼层 |阅读模式
memcached是一种基于键值对的内存数据库,一样平常应用于缓存数据,进步数据访问速率,减轻后端数据库压力。
安装

这里以Ubuntu为例,其他体系安装方法请看官方文档
  1. sudo apt-get update
  2. sudo apt-get install memcached
复制代码
启动

  1. memcached -d
复制代码
查察资助

  1. memcached -h
复制代码

netcat(nc)网络哀求

查察设置

  1. $ echo "stats settings" | nc localhost 11211
  2. STAT maxbytes 67108864
  3. STAT maxconns 1024
  4. STAT tcpport 11211
  5. ...
复制代码
查察值

  1. $ echo "get runoob" | nc localhost 11211
  2. VALUE runoob 0 5
  3. value
  4. END
复制代码
telnet毗连

  1. telnet 127.0.0.1 11211
复制代码
按Ctrl + ]组合键退出。
在telnet>下令行里,输入quit。
查察全部slab

  1. $stats items
  2. STAT items:1:number 2
复制代码
这里items有2个,编号是1。
查察编号为1的slab的全部key:

  1. $stats cachedump 1 0
  2. ITEM runoob [5 b; 0 s]
  3. ITEM peter [11 b; 0 s]
复制代码
这里cachedump读取slab_id为1的slab,0体现数量不限定,雷同sql的limit。
add新增

参数分析:
<command name>set/add/replace<key>查找关键字<flags>客户机利用它存储关于键值对的额外信息<exptime>该数据的存活时间,0体现永久<bytes>存储字节数<data block>存储的数据块(可直接明确为key-value布局中的value)
  1. $add id 1 0 4
  2. 1234
  3. STORED
复制代码
set设置

  1. $set id 1 0 4
  2. 5678
  3. STORED
复制代码
replace更换

  1. $replace id 1 0 4
  2. 2345
  3. STORED
复制代码
delete删除

  1. $delete id
  2. DELETED
复制代码
get查察value

  1. $add id 1 0 4
  2. aaaa
  3. STORED
  4. $get id
  5. VALUE id 1 4
  6. aaaa
  7. END
复制代码
这里id是key,aaaa是值,1体现flag标志,4体现数据长度。
gets

  1. gets id
  2. VALUE id 1 4 14
  3. aaaa
  4. END
复制代码
gets比get多一个参数,用来查抄数据是否发生厘革。
cas

cas即checked and set的意思,只有当末了一个参数和gets所获取的参数匹配时才气存储,否则返回“EXISTS”。
  1. $add id 100 0 5
  2. abcde
  3. STORED
  4. $gets id
  5. VALUE id 100 5 17
  6. abcde
  7. END
  8. $cas id 100 0 5 17
  9. bbbbb
  10. STORED
  11. $gets id
  12. VALUE id 100 5 18
  13. bbbbb
  14. END
复制代码
append 反面追加

  1. get id
  2. VALUE id 100 5
  3. bbbbb
  4. END
  5. append id 100 0 5
  6. ccccc
  7. STORED
  8. get id
  9. VALUE id 100 10
  10. bbbbbccccc
  11. END
复制代码
prepend 前面追加

  1. get id
  2. VALUE id 100 10
  3. bbbbbccccc
  4. END
  5. prepend id 100 0 10
  6. dddddddddd
  7. STORED
  8. get id
  9. VALUE id 100 20
  10. ddddddddddbbbbbccccc
  11. END
复制代码
清空数据

  1. $flush_all
  2. OK
  3. get id
  4. END
复制代码
查察运行状态

  1. $stats
  2. STAT pid 2711     //进程id
  3. STAT uptime 2453  //总的运行时间,单位描述
  4. STAT time 1344856333  //当前时间
  5. STAT version 1.5.22 //版本
  6. STAT pointer_size 32    //服务器指针位数,一般32位操作系统是32
  7. STAT rusage_user 0.002999  //进程的累计用户时间
  8. STAT rusage_system 1.277805  //进程的累计系统事件
  9. STAT curr_connections 1  //当前连接数
  10. STAT total_connections 11  //服务器启动后,总连接数
  11. STAT connection_structures 11  //连接结构的数量
  12. STAT cmd_get 17   //总获取次数
  13. STAT cmd_set 1  //总写入次数
  14. STAT cmd_flush 1   //总的的清空次数
  15. STAT get_hits 1  //总的命中次数
  16. STAT get_misses 7   //获取没有命中次数
  17. STAT delete_misses //删除没有命中次数
  18. STAT delete_hits 4   //删除命中次数
  19. STAT incr_misses //递增操作没有命中次数
  20. STAT incr_hits //递增操作命中次数
  21. STAT decr_misses //递减操作没有命中的次数
  22. STAT decr_hits //递减操作命中的次数
  23. STAT cas_misses //cas设置没有命中次数
  24. STAT cas_hits //cas命中次数
  25. STAT cas_badval //cas操作找到key,但版本过期,没有设置成功
  26. STAT bytes_read 455    //总共获取数据量
  27. STAT bytes_written 1175  //总共写入数据量
  28. STAT limit_maxbytes 1048576  //最大允许使用内存,单位字节
  29. STAT accepting_conns 1   
  30. STAT listen_disabled_num 0
  31. STAT threads 5   //当前线程数
  32. STAT conn_yields 0
  33. STAT bytes 56      //已用缓存空间
  34. STAT curr_items 1  //当前缓存的keyvalue数
  35. STAT total_items 7 //总共缓存的keyvalue数,包括过期删除的
  36. STAT evictions //通过删除keyvalue,释放内存次数
  37. END
复制代码
查察STAT slabs信息

  1. $stats slabs
  2. STAT 1:chunk_size 96
  3. STAT 1:chunks_per_page 10922
  4. STAT 1:total_pages 1
  5. STAT 1:total_chunks 10922
  6. STAT 1:used_chunks 4
  7. STAT 1:free_chunks 10918
  8. STAT 1:free_chunks_end 0
  9. STAT 1:get_hits 25
  10. STAT 1:cmd_set 30
  11. STAT 1:delete_hits 4
  12. STAT 1:incr_hits 0
  13. STAT 1:decr_hits 0
  14. STAT 1:cas_hits 3
  15. STAT 1:cas_badval 0
  16. STAT 1:touch_hits 0
  17. STAT active_slabs 1
  18. STAT total_malloced 1048576
  19. END
复制代码
Python读写memcache

  1. from pymemcache.client import base
  2. client = base.Client(server='127.0.0.1')
  3. client.set('runoob', 'value')
  4. value = client.get('runoob')
  5. print(value)
复制代码
memcached-tool 导出数据

  1. $memcached-tool 127.0.0.1:11211 dump > /tmp/1.txt
  2. Dumping memcache contents
  3.   Number of buckets: 1
  4.   Number of items  : 2
  5. Dumping bucket 1 - 2 total items
  6. $cat /tmp/1.txt   // 导出的数据是带有时间戳的,这个时间戳就是该条数据的过期时间
  7. add name 0 1551489491 3  // 如果当前系统时间超过了时间戳,那么是导入不进去的
  8. Tom
  9. add age 0 1551489491 2
  10. 18
复制代码
相干链接

https://docs.memcached.org/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表