• (转)Memcached用法--参数和命令详解


    Memcached用法--参数和命令详解

    1. memcached 参数说明:

    # memcached -h
    

    1.1 memcached 的参数

    常用参数

    -p <num> 监听的TCP端口号,默认是11211;(port)
    -l <addr> 监听的主机地址,默认是INADDR_ANY,即所有地址,<addr>可以是host:port的形式,如果没有指定port,则使用-p或者-U的值;可以指定多个地址,以逗号分隔或者多次使用-l参数;尽量不要使用默认值,有安全隐患。(listen)
    -d 以守护进程运行 (daemon)
    -u <username> 指定进程的所有者(只有以root用户执行时才可以使用该参数)(username)
    -m <num> 用于存储数据的最大内存,单位是MB,默认是64MB;(memory)
    -c <num> 最大并发连接数,默认是1024;
    -vv 显示更详细的信息(还显示客户端的命令和响应)
    -vvv 显示最详细的信息(还显示内部的状态转变)
    -h 显示帮助信息
    -P <file> 将PID保存到<file>中,仅和-d参数一起使用;
    -f <factor> chunk的增幅因子,默认是1.25,不同的slab class,slab page大小相同,但是chunk大小不等,chunk的大小根据这个增幅因子增长;(factor)
    -n <bytes> 为key+value+flags分配的最小内存,单位bytes,默认是48;chunk数据结构本身要占据48字节,所以实际大小是n+48;
    -t <num> 使用多少个线程,默认是4;(thread)
    -I 设置slab page的大小,即设置可以保存的item的最大值,默认1MB,最小是1K,最大值128M;
    

    其它参数

    -U <num> 监听的UDP端口号,默认是11211,0表示关闭UDP监听;(UDP)
    -s <file> 要监听的UNIX socket路径(禁用网络支持)(socket)
    -a <mask> UNIX socket的访问掩码(access mask),八进制表示,默认是0700. (mask)
    -r 文件数量的最大值 (rlimit)
    -M 内存耗尽时返回错误,而不是通过LRU淘汰内容;
    -k 锁定所有页内存;允许被锁定的内存是有限制的,超过限制可能会失败。
    -v 显示启动信息(错误和警告信息)(verbose)
    -i 显示memcached和libevent的licence信息
    -L 一次申请大的内存页(如果可以);增大内存页的大小,可以提高性能;
    -D <char> 指定key前缀与ID的分隔符,用于stats信息显示,默认是冒号:,如果使用了该参数,则stats收集自动启用了,否则,需要发送命令“stats detail on”命令来启动stats的收集。
    -R 每一个事件(event)的最大请求数,限制最大请求数可以防止线程饥饿,默认是20;
    -C 禁用CAS;
    -b 设置backlog队列限制,默认1024;
    -B 指定绑定协议,ascii,binary或者auto,其中auto是默认值;
    

    1.2 repcached的参数:

    -x <ip_addr> peer主机的主机名或者ip地址;
    -X peer主机的TCP端口,即主从同步端口,共同的监听端口
    

    1.3 常用的参数组合

    # memcached -d -m -p 11212 -u nobody -l 127.0.0.1 -x 127.0.0.1 -X 11222 -P /tmp/localhost_slave.pid -vv
    

    2. 基本命令与操作

    2.1 存储的命令

    主要有:set,add,replace,append,prepend,cas;格式为:

    command key flag expiration_time bytes
    value
    

    key表示键,flag表示key/value的额外信息,expiration_time表示过期时间,单位为秒,0表示永不过期,bytes表示值所占的字节数,必须完全匹配,value表示key对应的值,总是出现在第二行。

    set命令表示存储一个key/value对,如果该key已存在,则更新对应的value值;如果成功,返回STORED。

    set file_path 0 0 5
    /opt/
    <29 rep file_path 0 0 5 12
    REP>29 STORED
    STORED
    

    add命令也表示增加key/value,如果key/value已存在,add操作失败;保存成功返回STORED,失败返回NOT_STORED。

    add file_path 0 60 5
    /opt/
    NOT_STORED
    add file_suffix 0 0 2
    js
    <29 rep file_suffix 0 0 2 16
    REP>29 STORED
    STORED
    

    replace命令表示更新key对应的value值,如果key/value不存在,replace操作失败;成功返回STORED,失败返回NOT_STORED;

    replace first 0 0 7
    tianjin
    STORED
    replace second 0 0 8
    shanghai
    NOT_STORED
    

    append表示在key对应的value值后追加数据,key必须已存在,否则操作失败;成功返回STORED,失败返回NOT_STORED;

    append second 0 0 8
    shanghai
    NOT_STORED
    append first 0 0 3
     go
    STORED
    

    prepend在key对应的value值的前面追加数据,key必须已存在,否则操作失败;成功返回STORED,失败返回NOT_STORED;

    prepend second 0 0 2
    hi
    NOT_STORED
    prepend first 0 0 2
    hi
    STORED
    get first
    VALUE first 0 15
    hitianjin go go
    END
    

    cas (check and set):先比较后存储,即原子更新,原理类似于乐观所。每次请求存储某个数据时附带一个cas值,memcached比对这个cas值与当前存储数据的cas值是否相等,如果相等,则更新数据,否则操作失败;当前存储的cas值通过gets命令获取。成功返回STORED,失败返回EXISTS。

    gets first
    VALUE first 0 7 12        // 12表示cas id,可以理解为版本号
    chengdu
    END
    cas first 0 0 8 10        // 10 != 12,cas失败
    shanghai
    EXISTS
    cas first 0 0 8 12        // 12表示gets后没有修改key的值,因此可以set
    shanghai
    STORED
    

    2.2 读取的命令

    get根据key获取value值;可以获取多个key的值;get key | get key1 key2

    get first
    VALUE first 0 8
    shanghai
    END
    
    get first fine
    VALUE first 0 8
    shanghai
    VALUE fine 0 5
    yes!!
    END
    

    gets是与cas一起使用的命令,gets会额外返回一个cas值,可以理解为版本;如果最后一次gets后,该cas值改变了,则cas设置的值不会存储;gets key | gets key1 key2

    gets first
    VALUE first 0 8 13
    shanghai
    END
    set first 0 0 7
    chengdu
    STORED
    cas first 0 0 7 13        // 因为gets后set了,所以cas id改变了,cas失败
    chengdu
    EXISTS
    

    delete命令删除key/value对,一次只能删除一个key/value对;如果要删除的key不存在,操作失败: delete key

    delete first second
    CLIENT_ERROR bad command line format.  Usage: delete <key> [noreply]
    delete first
    DELETED
    

    incr/decr: 如果key的value值表示的是一个64位整数,可以通过incr和decr命令进行数值的增减: incr/decr key num

    set id 0 120 2
    10
    STORED
    incr id 10
    20
    decr id 5
    15
    

    2.3 统计的命令

    stats显示进程及当前状态等信息。

    stats
    STAT pid 1224            // 进程id
    STAT uptime 30385        // 系统运行的事件,单位:秒
    STAT time 1392199633    // 系统当前事件,Unix时间戳表示的时间:2/12/2014 6:25:40 PM
    STAT version 1.4.13            // memcached版本
    STAT libevent 2.0.21-stable    // libevent版本
    STAT pointer_size 64        // 操作系统字大小(64位)
    STAT rusage_user 1.892712    // 进程累计用户时间
    STAT rusage_system 0.996848    // 进程累计系统时间
    STAT curr_connections 8        // 当前打开的连接数
    STAT total_connections 9    // 曾打开的连接总数
    STAT connection_structures 9    // 服务器分配的连接结构数
    STAT reserved_fds 20
    STAT cmd_get 29                // 执行get命令的总数
    STAT cmd_set 29                // 执行set命令的总数
    STAT cmd_flush 2            // 执行flush_all命令的总数
    STAT cmd_touch 0             
    STAT get_hits 14            
    STAT get_misses 15            
    STAT delete_misses 3        
    STAT delete_hits 3
    STAT incr_misses 0
    STAT incr_hits 4
    STAT decr_misses 0
    STAT decr_hits 2
    STAT cas_misses 1
    STAT cas_hits 2
    STAT cas_badval 2
    STAT touch_hits 0
    STAT touch_misses 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 1503
    STAT bytes_written 4125
    STAT limit_maxbytes 134217728
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4                // 线程数
    STAT conn_yields 0
    STAT hash_power_level 16
    STAT hash_bytes 524288
    STAT hash_is_expanding 0
    STAT expired_unfetched 0
    STAT evicted_unfetched 0
    STAT replication MASTER
    STAT repcached_version 2.3.1
    STAT repcached_qi_free 8191
    STAT bytes 217                // 存储的item字节数
    STAT curr_items 3            // 当前item数量
    STAT total_items 25            // item的总数
    STAT evictions 0            // 为获取空间删除的item数量
    STAT reclaimed 2
    END
    

    stats items 显示items的相关信息

    stats items
    STAT items:1:number 3
    STAT items:1:age 1552
    STAT items:1:evicted 0
    STAT items:1:evicted_nonzero 0
    STAT items:1:evicted_time 0
    STAT items:1:outofmemory 0
    STAT items:1:tailrepairs 0
    STAT items:1:reclaimed 2
    STAT items:1:expired_unfetched 0
    STAT items:1:evicted_unfetched 0
    END
    

    stats slabs 显示slab的相关信息

    stats slabs
    STAT 1:chunk_size 96
    STAT 1:chunks_per_page 10922
    STAT 1:total_pages 1
    STAT 1:total_chunks 10922
    STAT 1:used_chunks 3
    STAT 1:free_chunks 0
    STAT 1:free_chunks_end 10919
    STAT 1:mem_requested 217
    STAT 1:get_hits 14
    STAT 1:cmd_set 29
    STAT 1:delete_hits 3
    STAT 1:incr_hits 4
    STAT 1:decr_hits 2
    STAT 1:cas_hits 2
    STAT 1:cas_badval 2
    STAT 1:touch_hits 0
    STAT active_slabs 1
    STAT total_malloced 1048512
    END
    

    stats sizes

    stats sizes
    STAT 96 3
    END
    

    stats cachedump 显示slab中items的信息(该命令在将来可能不再支持):stats cachedump [slab id] [number of items, 0 for all items]

    set city 0 0 7
    tianjin
    STORED
    stats cachedump 1 0
    ITEM city [7 b; 1392169248 s]
    END
    get city
    VALUE city 0 7
    tianjin
    END
    

    flush_all 使cache中的所有items都过期,server不会停止,也不会刷新或者释放内存。

    flush_all
    OK
    get first
    END
    

    参考

  • 相关阅读:
    CentOS安装rz\sz命令
    间隔线美化
    linuxバッチの環境変数の設定
    Base64编码
    百分号编码
    java四月份总结
    win10窗口修改 #强制窗口修改 #任意修改 #窗口
    spacedesk #踩坑 #displayoff
    pip安装出错 #代理网络问题 #anocanda
    Fdroid 开源foss市场 里面很多开源应用程序
  • 原文地址:https://www.cnblogs.com/liujiacai/p/8342540.html
Copyright © 2020-2023  润新知