`
sunlightcs
  • 浏览: 73103 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

MemCached过期时间的设置

阅读更多

过期时间有两种格式:
1. 相对时间:多长时间,给出过期的时间长度
2. 绝对时间:到期时间,给出过期的最后期限
 
服务端的处理
时间处理源代码【memcached.c】如下:
#define REALTIME_MAXDELTA 60*60*24*30                     // 定义30天的秒数
static rel_time_t realtime(const time_t exptime) {
       if (exptime == 0) return 0;
       if (exptime > REALTIME_MAXDELTA) {                       // 超过30天,是绝对时间
              if (exptime <= process_started)                         // 小于进程启动日期
                      return (rel_time_t)1;                                  //
              return (rel_time_t)(exptime - process_started);   // 返回进程启动之后的时间差
       } else {                                                                   // 不超过30天,是相对时间
              return (rel_time_t)(exptime + current_time);       // exptime + (tvsec - process_started)
       }
}
 
相对时间时,返回的值是:服务器当前时间之后的exptime - process_started秒
绝对时间时,返回的值是:服务器当前时间之后的(exptime -服务器当前时间) - process_started秒
 
可以看到,如果Client和Server时间不一致,使用绝对时间很容易导致缓存过期。
所以使用相对时间是比较安全的做法。

1
2
分享到:
评论

相关推荐

    Java 配置Memcached 应用详解

    Java 配置Memcached 应用详解

    Laravel开发-laravel-memcached-plus

    Laravel开发-laravel-memcached-plus 扩展了内置的Laravel5缓存Memcached驱动程序,增加了对持久连接、SASL和Memcached选项的支持。

    Memcached-Session-Manager多tomcat实现session共享配置

    包含对于Memcached-Session-Manager配置的五种Tomcat集群session共享机制和策略 jar包及文档

    Memcached get 命令

    Memcached get 命令 Memcached get 命令获取存储在 key(键) 中的 value(数据值...在以下实例中,我们使用 runoob 作为 key,过期时间设置为 900 秒。 set runoob 0 900 9 memcached STORED get runoob VALUE runoob 0

    Memcached delete 命令

    Memcached delete 命令 Memcached delete 命令...在以下实例中,我们使用 runoob 作为 key,过期时间设置为 900 秒。之后我们使用 delete 命令删除该 key。 set runoob 0 900 9 memcached STORED get runoob VALUE r

    CachedServer.java

    解决 memcached 设置到期时间不生效的问题 server client 时间不一致,导致客户端设置的到期时间会延迟 使用相对时间 不要使用绝对时间

    深入理解redis_memcached失效原理(小结)

    本质就是redis缓存过期嘛,让它凌晨12点失效就好了。 但是问题发生了,它就是没失效…深究其原因,竟是由于零界点没处理好的锅,服务器时间与request时间是有些许时间差的,key的expire到了一定数量处理也是需要...

    php中用memcached实现页面防刷新功能

    3、设置set()时指定过期时间为60s,这样就统计一分钟的访问次数。 于是写了个函数放在项目的初始化文件中调用,函数内容如下: function requestCount(){ $patharr = pathinfo($_SERVER['PHP_SELF

    Java面试宝典(数据库篇).docx

    (4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除 2. redis相比memcached有哪些优势? (1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 (2) redis的...

    go-cache:Go的内存键:值存储缓存(类似于Memcached)库,适用于单机应用程序

    它的主要优点是,它本质上是具有到期时间的线程安全的map[string]interface{} ,因此不需要通过网络序列化或传输其内容。 可以在给定的持续时间内或永久存储任何对象,并且可以由多个goroutine安全地使用高速缓存...

    nagiosplugins:Nagios插件要么是从头开始构建的,要么是由我们改进的

    define command{ command_name check_memcached command_line $USER1$/check_memcached -H $HOSTADDRESS$}check_domain 检查域名的到期时间。 我们将其作为带有专用于域的特殊主机模板的check_command来使用。 ...

    Redis面试专题30道.zip

    1、什么是 Redis?简述它的优缺点? 2、Redis 相比 memcached 有哪些优势? 3、Redis 支持哪几种数据...28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的?

    PHP缓存集成库phpFastCache用法

    分享给大家供大家参考。...可通过简单的API来定义缓存的有效时间。 复制代码 代码如下:&lt;?php // In your config file include(“phpfastcache/phpfastcache.php”); phpFastCache::setup(“storage”,”

    CodeIgniter启用缓存和清除缓存的方法

    CI支持每个页面单独缓存,而且可以设置缓存更新时间。当一个网页第一次被加载的时候,缓存文件将被保存到application/cache文件夹。下次访问的时候,系统就会直接读取缓存文件,然后返回给用户的浏览器。如果缓存...

    python字典DICT类型合并详解

    就不能想asp.net中那样存值,然后设置过期时间以便验证?我原本是想在python中找个与asp.net中的cache差不多功能的库,结果,缓存那块python好像就是redis和memcached,mongodb之类的,有倒是有一两个,但是在项目里...

    Redis面试题50道(含答案)_.pdf

    28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的? 31、Redis 回收使用的是什么算法? 32、Redis 如何做大量数据插入? 33、为什么要做 Redis 分区? ...

    提高redis缓存命中率的方法

    缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据。...在memcached中,运行state命令可以查看memcached服务的状态信息,其中cmd_get表示总的get次数,get_hits表示get的总命中次数,命中率 = get_hits/cmd_ge

    50ZF:从DDMCloud分叉的武林支付系统(ThinkPHP3.2.2内核,仿MCRMB)

    也十分感谢这段时间支持武林支付的用户,这个程序,让我学到了很多,也让我明白了很多。本程序有完整的细分体系,支持为单用户设置特殊细分。也有提现体系和程序日志。支持直接上传到SAE使用,但要开启Memcached作者...

    Java论坛系统巡云轻论坛

    9.前台会员详细页显示角色到期时间。10.后台管理会员详细页显示角色。11.修复前台话题富文本编缉器隐藏标签栏内容,第一次显示时不受后台'话题编辑器设置'项控制。12.修复发表话题验证码框错位。13.员工发贴显示官方...

    i-cache:最简单的内存缓存,以纯 json 结构存储和获取对象

    lifetime :数字(可选)密钥应在多长时间后到期,以seconds callback :函数(可选) iCache . set ( 'hi' , 'Hello World' ) ; iCache.get 按键获取。 key : String键 callback :函数(可选) var value = ...

Global site tag (gtag.js) - Google Analytics