小林林 發表於 2023-9-15 00:00:00

telnet连接操作memcache服务器详解

<p>
        memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/usr/local/memcached</p>
<p>
        <strong>1、启动memcache</strong></p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code69398">
        <br>
        # /usr/local/memcached/bin/memcached -d -m 512  -u root -l 192.168.119.70 -p 12000 -c 512 -P /usr/local/memcached/memcached.pid </div>
<p>
        <br>
        启动参数详解<br>
         -d:以守护进程方式启动。如果该参数没有指定,当按ctrl+c命令结束,memcache自动关闭<br>
         -m:分配给memcache使用的最大内存数 单位是m,默认是64m<br>
         -u: 指定运行memcache的用户<br>
         -l: 指定监听的ip地址<br>
         -p: 指定监听的tcp端口号,可以通过-u指定udp端口.默认是11211<br>
         -c: 最大并发连接数<br>
         -P: 报错进程id的文件<br>
         memcache 启动之后,我们就可以通过telnet连接memcache,对其进行简单操作管理。</p>
<p>
         </p>
<p>
        <strong>2、telnet连接memcache</strong></p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code61112">
        <br>
        # telnet 192.168.119.70 12000  <br>
        Trying 192.168.119.70... <br>
        Connected to 192.168.119.70 (192.168.119.70). <br>
        Escape character is '^]'.  </div>
<p>
        <br>
        连接成功之后,即可对memcache进行操作管理了,常用的命令有:</p>
<p>
         </p>
<p>
        <strong>Ⅰ、添加修改</strong></p>
<p>
                命令格式:&lt;command&gt; &lt;key&gt; &lt;flags&gt; &lt;exptime&gt; &lt;bytes&gt;\r\n&lt;data block&gt;\r\n</p>
<p>
               &lt;command&gt;:add, set或 replace</p>
<p>
               &lt;key&gt; :缓存的名字</p>
<p>
               &lt;flag&gt;:16位无符号整数,和key要存储的数据一起存储,并在程序get缓存时,返回。</p>
<p>
              &lt;exptime&gt;:过去时间,0 表示永远不过期,如果非零,表示unix时间或距此秒数</p>
<p>
               &lt;bytes&gt;:存储数据的字节数</p>
<p>
                \r\n: 表示换行回车</p>
<p>
                命令结果:</p>
<p>
                        STORED :表示成功</p>
<p>
                        NOT_STORED : 表示失败</p>
<p>
        a)、添加缓存</p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code39085">
        <br>
        add id 1 0 4 <br>
        1234 <br>
        STORED </div>
<p>
         </p>
<p>
          如果key已经存在,则会添加失败。</p>
<p>
        b)、修改缓存</p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code78606">
        <br>
        replace id 1 0 4 <br>
        3456 <br>
        STORED </div>
<p>
        <br>
             key存在时,成功;不存在时,失败。</p>
<p>
         </p>
<p>
        c)、设置缓存</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code60044">
        <br>
        set id 1 0 4 <br>
        2345 <br>
        STORED </div>
<p>
         </p>
<p>
        key不存在时,添加【add】;已存在时,替换【replace】。</p>
<p>
        <strong>Ⅱ、读取</strong></p>
<p>
               命令格式:get &lt;key&gt;+\r\n</p>
<p>
               &lt;key&gt;+:表示一个或多个key,多个key时,用空格隔开</p>
<p>
        a)、读取单个key的缓存</p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code42290">
        <br>
        get id <br>
        VALUE id 1 4 <br>
        1234 <br>
        END </div>
<p>
         </p>
<p>
        b)、读取多个key的缓存</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code68993">
        <br>
        get id name <br>
        VALUE id 1 4 <br>
        3456 <br>
        VALUE name 1 3 <br>
        jim <br>
        END </div>
<p>
         </p>
<p>
        <strong>Ⅲ、删除</strong></p>
<p>
        命令格式:delete &lt;key&gt; \r\n</p>
<p>
        &lt;key&gt;:要删除的key</p>
<p>
        删除id</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code88883">
        <br>
        delete id  <br>
        DELETED </div>
<p>
         </p>
<p>
        <strong>Ⅳ、清空所有缓存</strong></p>
<p>
        命令格式:flush_all</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code55771">
        <br>
        flush_all <br>
        OK </div>
<p>
         </p>
<p>
        <strong>Ⅴ、查看缓存服务器状态</strong></p>
<p>
        命令:stats</p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code55107">
        <br>
        stats <br>
        STAT pid 2711     //进程id <br>
        STAT uptime 2453  //总的运行时间,单位描述 <br>
        STAT time 1344856333  //当前时间 <br>
        STAT version 1.4.0 //版本 <br>
        STAT pointer_size 32    //服务器指针位数,一般32位操作系统是32 <br>
        STAT rusage_user 0.002999  //进程的累计用户时间  <br>
        STAT rusage_system 1.277805  //进程的累计系统事件 <br>
        STAT curr_connections 1  //当前连接数 <br>
        STAT total_connections 11  //服务器启动后,总连接数 <br>
        STAT connection_structures 11  //连接结构的数量 <br>
        STAT cmd_get 17   //总获取次数 <br>
        STAT cmd_set 1  //总写入次数 <br>
        STAT cmd_flush 1   //总的的清空次数 <br>
        STAT get_hits 1  //总的命中次数 <br>
        STAT get_misses 7   //获取没有命中次数 <br>
        STAT delete_misses //删除没有命中次数 <br>
        STAT delete_hits 4   //删除命中次数 <br>
        STAT incr_misses //递增操作没有命中次数  <br>
        STAT incr_hits //递增操作命中次数 <br>
        STAT decr_misses //递减操作没有命中的次数 <br>
        STAT decr_hits //递减操作命中的次数 <br>
        STAT cas_misses //cas设置没有命中次数 <br>
        STAT cas_hits //cas命中次数 <br>
        STAT cas_badval //cas操作找到key,但版本过期,没有设置成功 <br>
        STAT bytes_read 455    //总共获取数据量 <br>
        STAT bytes_written 1175  //总共写入数据量 <br>
        STAT limit_maxbytes 1048576  //最大允许使用内存,单位字节 <br>
        STAT accepting_conns 1     <br>
        STAT listen_disabled_num 0 <br>
        STAT threads 5   //当前线程数 <br>
        STAT conn_yields 0 <br>
        STAT bytes 56      //已用缓存空间 <br>
        STAT curr_items 1  //当前缓存的keyvalue数 <br>
        STAT total_items 7 //总共缓存的keyvalue数,包括过期删除的 <br>
        STAT evictions //通过删除keyvalue,释放内存次数 <br>
        END </div>
<p>
         </p>
<p>
        <strong>Ⅵ、打印版本</strong></p>
<p>
        命令:version</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code30540">
        <br>
        version <br>
        VERSION 1.4.0 </div>
<p>
         </p>
<p>
        <strong>Ⅶ、打印内存信息</strong></p>
<p>
        命令:stats slabs</p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code4242">
        <br>
        stats slabs <br>
        STAT 1:chunk_size 80 <br>
        STAT 1:chunks_per_page 13107 <br>
        STAT 1:total_pages 1 <br>
        STAT 1:total_chunks 13107 <br>
        STAT 1:used_chunks 1 <br>
        STAT 1:free_chunks 1 <br>
        STAT 1:free_chunks_end 13105 <br>
        STAT 1:get_hits 10 <br>
        STAT 1:cmd_set 10 <br>
        STAT 1:delete_hits 4 <br>
        STAT 1:incr_hits 0 <br>
        STAT 1:decr_hits 0 <br>
        STAT 1:cas_hits 0 <br>
        STAT 1:cas_badval 0 <br>
        STAT active_slabs 1 <br>
        STAT total_malloced 1048560 <br>
        END </div>
<p>
        <br><strong>3、退出telnet </strong></p>
<p>
         </p>
<p>
         </p>
<div class="codetitle">
        <span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code56580">
        <br>
        quit </div>
<p>
         </p>
<p>
        完!</p>
頁: [1]
查看完整版本: telnet连接操作memcache服务器详解