Chinaunix首页 | 论坛 | 博客
  • 博客访问: 496003
  • 博文数量: 112
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-20 07:22
个人简介

一步一个脚印

文章分类

全部博文(112)

文章存档

2019年(2)

2017年(2)

2016年(2)

2015年(6)

2014年(35)

2013年(65)

分类: LINUX

2014-03-28 11:32:06

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时间不一致,使用绝对时间很容易导致缓存过期。
所以使用相对时间是比较安全的做法。
阅读(866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~