动态查看对Memcache的使用

Web项目提升访问性能,使用Memcache做缓存是一种比较通用的方案,这篇文章记录了:动态查看应用如何使用Memcache。
这里使用的Django项目做例子。关于Django如何连接Memcache请查阅官方文档。下面开始:

  1. “显式”运行Memcache:
    memcached -vv -u root -m 256m
    如果你使用的是root用户,则一定要加上 -u root选项。
    命令执行后会得到如下输出:
    slab class   1: chunk size        96 perslab   10922
    slab class   2: chunk size       120 perslab    8738
    slab class   3: chunk size       152 perslab    6898
    slab class   4: chunk size       192 perslab    5461
    slab class   5: chunk size       240 perslab    4369
    slab class   6: chunk size       304 perslab    3449
    slab class   7: chunk size       384 perslab    2730
    slab class   8: chunk size       480 perslab    2184
    slab class   9: chunk size       600 perslab    1747
    slab class  10: chunk size       752 perslab    1394
    slab class  11: chunk size       944 perslab    1110
    slab class  12: chunk size      1184 perslab     885
    slab class  13: chunk size      1480 perslab     708
    slab class  14: chunk size      1856 perslab     564
    slab class  15: chunk size      2320 perslab     451
    slab class  16: chunk size      2904 perslab     361
    slab class  17: chunk size      3632 perslab     288
    slab class  18: chunk size      4544 perslab     230
    slab class  19: chunk size      5680 perslab     184
    slab class  20: chunk size      7104 perslab     147
    slab class  21: chunk size      8880 perslab     118
    slab class  22: chunk size     11104 perslab      94
    slab class  23: chunk size     13880 perslab      75
    slab class  24: chunk size     17352 perslab      60
    slab class  25: chunk size     21696 perslab      48
    slab class  26: chunk size     27120 perslab      38
    slab class  27: chunk size     33904 perslab      30
    slab class  28: chunk size     42384 perslab      24
    slab class  29: chunk size     52984 perslab      19
    slab class  30: chunk size     66232 perslab      15
    slab class  31: chunk size     82792 perslab      12
    slab class  32: chunk size    103496 perslab      10
    slab class  33: chunk size    129376 perslab       8
    slab class  34: chunk size    161720 perslab       6
    slab class  35: chunk size    202152 perslab       5
    slab class  36: chunk size    252696 perslab       4
    slab class  37: chunk size    315872 perslab       3
    slab class  38: chunk size    394840 perslab       2
    slab class  39: chunk size    493552 perslab       2
    slab class  40: chunk size    616944 perslab       1
    slab class  41: chunk size    771184 perslab       1
    slab class  42: chunk size   1048576 perslab       1
    <26 server listening (auto-negotiate)
    <27 server listening (auto-negotiate)
    <28 send buffer was 212992, now 268435456
    <29 send buffer was 212992, now 268435456
    <28 server listening (udp)
    <28 server listening (udp)
    <29 server listening (udp)
    <28 server listening (udp)
    <29 server listening (udp)
    <29 server listening (udp)
    <28 server listening (udp)
    <29 server listening (udp)
  1. 访问应用,这里是刷新下页面
    Memcache的输出:

    <30 new auto-negotiating client connection
    30: Client using the ascii protocol
    <30 get :1:views.decorators.cache.cache_header..9d09a91f1b32ac17d49837bcbbef9427.zh-cn.Asia/Shanghai
    >30 END
    <30 set :1:views.decorators.cache.cache_header..9d09a91f1b32ac17d49837bcbbef9427.zh-cn.Asia/Shanghai 1 900 6
    >30 STORED
    <30 set :1:views.decorators.cache.cache_page..GET.9d09a91f1b32ac17d49837bcbbef9427.d41d8cd98f00b204e9800998ecf8427e.zh-cn.Asia/Shanghai 1 900 66649
    >30 STORED
    <30 connection closed.

    可以看到应用尝试获取某条缓存,没有找到,便将该key-value存下来,还有缓存多长时间,存储大小等参数。

  2. 再次刷新页面
    Memcache输出:

    <30 new auto-negotiating client connection
    30: Client using the ascii protocol
    <30 get :1:views.decorators.cache.cache_header..9d09a91f1b32ac17d49837bcbbef9427.zh-cn.Asia/Shanghai
    >30 sending key :1:views.decorators.cache.cache_header..9d09a91f1b32ac17d49837bcbbef9427.zh-cn.Asia/Shanghai
    >30 END
    <30 get :1:views.decorators.cache.cache_page..GET.9d09a91f1b32ac17d49837bcbbef9427.d41d8cd98f00b204e9800998ecf8427e.zh-cn.Asia/Shanghai
    >30 sending key :1:views.decorators.cache.cache_page..GET.9d09a91f1b32ac17d49837bcbbef9427.d41d8cd98f00b204e9800998ecf8427e.zh-cn.Asia/Shanghai
    >30 END
    <30 connection closed.

    取了两次,都拿到了。

  3. 查看Memcache中缓存数据的详细信息

    telnet 127.0.0.1 11211
    stats items
    STAT items:4:number 1
    STAT items:4:age 1056
    STAT items:4:evicted 0
    STAT items:4:evicted_nonzero 0
    STAT items:4:evicted_time 0
    STAT items:4:outofmemory 0
    STAT items:4:tailrepairs 0
    STAT items:4:reclaimed 0
    STAT items:4:expired_unfetched 0
    STAT items:4:evicted_unfetched 0
    STAT items:31:number 1
    STAT items:31:age 1056
    STAT items:31:evicted 0
    STAT items:31:evicted_nonzero 0
    STAT items:31:evicted_time 0
    STAT items:31:outofmemory 0
    STAT items:31:tailrepairs 0
    STAT items:31:reclaimed 0
    STAT items:31:expired_unfetched 0
    STAT items:31:evicted_unfetched 0
    END

    查看具体item:

    stats cachedump 4 0
    ITEM :1:views.decorators.cache.cache_header..9d09a91f1b32ac17d49837bcbbef9427.zh-cn.Asia/Shanghai [6 b; 1405480402 s]
    END

    这便是刚才保存的数据。
    获取某条缓存

    get :1:views.decorators.cache.cache_page..GET.d1537bd0b66a4289001629ac2e06e742.d41d8cd98f00b204e9800998ecf8427e.zh-cn.Asia/Shanghai


    VALUE :1:views.decorators.cache.cache_page..GET.d1537bd0b66a4289001629ac2e06e742.d41d8cd98f00b204e9800998ecf8427e.zh-cn.Asia/Shanghai 1 16816
    ccopy_reg
    reconstructor
    p1
    (cdjango.template.response
    TemplateResponse
    p2
    c
    builtin
    object
    p3
    NtRp4
    (dp5
    S'cookies'
    p6
    g1
    (cdjango.http
    SimpleCookie
    p7
    c
    builtin
    dict
    p8
    (dtRp9
    sS'
    headers'
    p10
    (dp11
    S'last-modified'
    p12
    (S'Last-Modified'
    p13
    S'Wed, 16 Jul 2014 03:20:44 GMT'
    tp14
    sS'expires'
    p15
    (S'Expires'
    p16
    S'Wed, 16 Jul 2014 03:35:44 GMT'
    tp17
    sS'content-type'
    p18
    (S'Content-Type'
    p19
    S'text/html; charset=utf-8'
    tp20
    sS'cache-control'
    p21
    (S'Cache-Control'
    p22
    S'max-age=900'
    tp23
    ssS'is_rendered'
    p24
    I01
    sS'
    base_content_is_iter'
    p25
    I00
    sS'charset'
    p26
    S'utf-8'
    p27
    sS'
    container'
    p28
    (lp29
    g1
    (cdjango.utils.safestring
    SafeUnicode
    p30
    cbuiltin
    unicode
    p31
    V\u000a\u000a\u000a \u000a \u000a \u4f7f\u7528\u72b6\u51b5\u6982\u89c8 - EC-CLOUD\u000a \u000a\u000a\u000a\u000a \u000a \u000a\u000a \u000a\u000a \u000a\u000a \u000a \u000a\u000a \u000a \u000a \u000a
    \u000a \u000a
    \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a
    \u000a \u000a \u000a \u4e3b\u673a\u000a \u000a \u000a \u000a \u5b58\u50a8\u000a \u000a \u000a \u000a \u684c\u9762\u000a \u000a \u000a
    \u6b22\u8fce, admin
    \u000a \u000a
    \u000a \u6d88\u606f\u000a
    0
    \u000a
      \u000a
    • \u000a \u544a\u8b66\u65e5\u5fd7\u000a \u000a
    • \u000a
    • \u000a \u6d41\u7a0b\u6d88\u606f\u000a \u000a
    • \u000a
    \u000a
    \u000a \u000a \u000a \u9000\u51fa\u000a \u000a
    \u000a \u000a
    \u000a\u000a\u000a \u000a
    \u000a\u000a
    \u000a\u000a
    \u000a \u000a \u000a\u000a \u000a\u000a \u000a
    \u000a
    \u000a
    \u000a \u000a \u000a\u000a\u000a \u000a \u7ba1\u7406\u5458\u000a \u000a\u000a\u000a \u000a \u000a \u000a
    \u000a \u000a
    \u000a
    \u000a \u7cfb\u7edf\u8d44\u6e90\u6982\u51b5\u000a
    \u000a \u000a
    \u000a
    \u000a
    \u000a
    \u000a\u000a
    \u000a
    \u000a
    \u000a\u000a
    \u000a \u000a
    \u000a \u000a
    \u000a
    \u000a
    \u000a
    \u000a\u000a
    \u000a\u000a
    \u000a \u000a
    \u000a
    \u000a \u62d3\u6251\u7ed3\u6784 - \u4e3b\u673a\u89c6\u56fe\u000a
    \u000a
    \u000a
    \u000a
    \u000a
    \u000a \u000a
    \u000a
    \u000a \u544a\u8b66\u000a
    \u000a
    \u000a\u000a
    \u000a \u000a \u000a\u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a \u000a
    \u000a
    \u000a \u000a
    \u000a\u000a\u000a
    \u000a\u000a
    \u6ca1\u6709\u663e\u793a\u9879\u3002
    \u000a \u663e\u793a 0 \u4e2a\u6761\u76ee\u000a \u000a
    \u000a\u000a \u000a \u000a
    \u000a\u000a
    \u000a
    \u000a\u000a
    \u000a
    \u000a
    \u000a \u000a \u000a
    \u000a \u000a \u000a
    \u000a \u000a
    \u000a
    \u000a
    \u000a
    \u000a \u000a \u000a
    \u000a \u000a \u000a
    \u000a \u000a
    \u000a
    \u000a
    \u000a
    \u000a
    \u000a
    \u000a
    \u000a \u000a \u000a
    \u000a \u000a
    \u000a \u000a \u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a \u000a
    \u000a \u000a\u000a
    tRp32
    asb.

    可以看到被存储的页面。

你可能感兴趣的:(django,memcache)