• php操作redis和memcache过期时间


    php-redis 设置过期时间setTimeOut 命令行expire
    redis过期时间
    redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。
    没有设置过期时间的也就是永久存储

    set:set('key','value')将值 value 关联到 key
    setTimeOut:setTimeout('x', 3);设置过期时间
    setex:setex('key', 3600, 'value')带生存时间的写入值

    这个命令类似于以下两个命令:

    SET key value
    setTimeOut key seconds # 设置生存时间

    不同之处是, SETEX 是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。

    Memcache过期时间
    telnet命令格式
    <command name> <key> <flags> <exptime> <bytes> <data block>

    php命令格式
    add ( string $key , mixed $var [, int $flag [, int $expire ]] )
    $key :将要存储的键值。
    $var :存储的值,字符型和整型会按原值保存,其他类型自动序列化以后保存。
    $flag:是否用MEMCACHE_COMPRESSED来压缩存储的值,true表示压缩,false表示不压缩。
    $expire:存储值的过期时间,如果为0表示永久有效,但也会30后失效,过期时间可以是多少秒后过期,也可以是什么时候过期

    memcache是在内存中的,所以过了有效期,数据当然是不会再有了。
    memcache 的过期数据惰性删除
    当某个值过期后,并没有从内存删除, 因此,stats 统计时, curr_item 有其信息。 当某个新值去占用他的位置时,当成空chunk 来占用。 当get 值时,判断是否过期,如果过期,返回空,并且清空,curr_item 就减少了。即这个过期,只是让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除。这个称为惰性失效。好处是节省了cpu 时间和检测的成本。

    redis 1.有有效期
    也是运行在内存中的,虽然redis可以做持久化,aof或者快照。
    在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。
    redis过期处理机制见http://my.oschina.net/u/1466553/blog/332830,写的很详细了。
    2.永久存储,但是没有做持久化时,关闭的时候数据就会丢失或者


    memcache与redis LRU删除机制
    原理: 当某个单元被请求时,维护一个计数器,通过计数器来判断最近谁最少被使用。 
    注: 即使某个key 是设置的永久有效期,也一样会被踢出来! 即–永久数据被踢现象。

  • 相关阅读:
    POJ2976 Dropping tests 01分数规划
    POJ 2728 Desert King 01分数规划,最优比率生成树
    codeforces 675E Trains and Statistic 线段树+贪心统计
    codeforces 675D Tree Construction set
    UVA 11235Frequent values(RMQ)
    FZU 2105Digits Count(线段树 + 成段更新)
    HDU 4006The kth great number(K大数 +小顶堆)
    UVA 624CD(01背包输出 + 输出路径)
    HDU 1796How many integers can you find(容斥原理)
    HDU 1817Necklace of Beads(置换+Polya计数)
  • 原文地址:https://www.cnblogs.com/sdfgdrg/p/10138928.html
Copyright © 2020-2023  润新知