zoukankan      html  css  js  c++  java
  • Memcached

    -p <num> 监听的TCP端口 (缺省: 11211)
    -d 以守护进程方式运行Memcached
    -u <username> 运行Memcached的账户,非root用户
    -m <num> 最大的内存使用, 单位是MB,缺省是 64 MB
    -c <num> 软连接数量, 缺省是 1024
    -v 输出警告和错误信息
    -vv 打印客户端的请求和返回信息
    -h 打印帮助信息
    -i 打印memcached和libevent的版权信息

    memcached.exe -m 32 -vv -p 11211

    memcached已经打开,并监听11211端口,
    因此,任何能满足端口通信的工具,
    都可以连接memcahced

    我们利用telnet来连接

    telnet localhost 11211

    连接后 ctrl+] ,然后回车, 打开回显功能
    输入stats 回车, 即可查看memcached运行状态.

    增: add
    命令格式:
    add key flag expiretime bytes
    data

    查: get
    命令格式:
    get key

    改: replace
    命令格式:
    replace key flag expiretime bytes
    data

    删: delete key [time]
    time参数是指使key失效并在time秒内不允许用此key

    增改: set
    命令格式:
    set key flag expiretime bytes
    data
    add表示如果服务器没有保存该关键字的情况下,存储该数据;
    replace表示在服务器已经拥有该关键字的情况下,替
    换原有内容。
    set表示存储该数据;--无则存,有则改

    全删: flush_all [time]
    time参数是指是所有缓存失效,并在time秒内限制使用删除的key

    incr/decr  增加减少值的大小,32位无符号0~4294967295

    应用场景------秒杀功能,
    一个人下单,要牵涉数据库读取,写入订单,更改库存,及事务要求, 对于传统型数据库来说,
    压力是巨大的.
    可以利用 memcached 的 incr/decr 功能, 在内存存储 count 库存量, 秒杀 1000 台
    每人抢单主要在内存操作,速度非常快,
    抢到 count<=1000 的号人,得一个订单号,再去另一个页面慢慢支付

    统计命令: stats
    把 memcached 当前的运行信息统计出来
    stats

    stat pid 2296 进程号
    stat uptime 4237 持续运行时间
    stat time 1370054990
    stat version 1.2.6
    stat pointer_size 32
    stat curr_items 4 当前存储的键个数
    stat total_items 13
    stat bytes 236
    stat curr_connections 3
    stat total_connections 4
    stat connection_structures 4
    stat cmd_get 20
    stat cmd_set 16
    stat get_hits 13
    stat get_misses 7 // 这 2 个参数 可以算出命中率
    stat evictions 0
    stat bytes_read 764
    stat bytes_written 618
    stat limit_maxbytes 67108864
    stat threads 1
    end
    缓存有一个重要的概念: 命中率.
    命中率是指: (查询到数据的次数/查询总数)*100%
    如上, 13/(13+7) = 60+% , 的命中率.
    

      

    key是什么?
    key是缓存名,
    memcached的一个重要特点就是key-value缓存,
    即键值对缓存.

    每个缓存有一个独特的名字和存储空间.
    key是操作数据的唯一标识

    问:key能取多长
    答:key可以250个字节以内,(不能有空格和控制字符)
    注:在新版开发计划中提到key可能会扩充到65535个字节

    flag有什么用?
    flag是"标志"的意思,可以用此参数来标志内容的类型.

    场景案例:
    memcached存储的数据形式只能是字符串.
    那么如果要存储 'hello' 和 array('hello','world'); 怎么办?

    对于字符串,直接存5个字符即可, 对于array,则需要序列化.

    问:取出数据时,又如何处理呢?
    字符串,取回直接用, 数组,则需要反序列化成数组.

    如何知道,取出的是一段"裸字符串",还是"数组序列化后的字符串"?
    答:flag!

    标志flag的范围
    0-2^16-1
    问:expire以什么为单位?
    答:秒为单位

    问:expire的秒数代表什么?
    答:如果expire<=30*24*60*60,则代表自当前时间的偏移
    即有效期在 time()+expire以内.

    如果expire > 30 * 24 * 60 * 60 ,则直接代表时间戳.
    即,在1970年+expire秒以内有效.

    3.6 memcached 的过期数据惰性删除
    1: 当某个值过期后,并没有从内存删除, 因此,stats 统计时, curr_item 有其信息
    2: 当某个新值去占用他的位置时,当成空 chunk 来占用.
    3: 当 get 值时,判断是否过期,如果过期,返回空,并且清空, curr_item 就减少了.
    即--这个过期,只是让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除.
    这个称为 lazy expiration, 惰性失效.
    好处--- 节省了 cpu 时间和检测的成本
    3.7: memcached 的 此处用的 lru 删除机制.
    如果以 122byte 大小的 chunk 举例, 122 的 chunk 都满了, 又有新的值(长度为 120)要加入, 要
    挤掉谁?
    memcached 此处用的 lru 删除机制.
    (操作系统的内存管理,常用 fifo,lru 删除)
    lru: least recently used 最近最少使用
    fifo: first in ,first out
    原理: 当某个单元被请求时,维护一个计数器,通过计数器来判断最近谁最少被使用.
    就把谁 t 出.
    注: 即使某个 key 是设置的永久有效期,也一样会被踢出来!
    即--永久数据被踢现象

  • 相关阅读:
    python 获取Excel 的内容
    python 获取文件Excel 的行数与列数
    python 读取Excel 取出表头(列名)
    DRF的视图组件
    Redis
    Git的故事
    DRF的JWT用户认证
    DRF的三大认证组件
    DRF的序列化组件
    DRF的请求响应组件
  • 原文地址:https://www.cnblogs.com/microtiger/p/8042891.html
Copyright © 2011-2022 走看看