Redis是一个基于内存的高效非关系型NoSQL数据库,具有高并发,可扩展,快速读写等优点,因此应用较广泛。Redis提供了KEY-value存储,当value为字符串类型时,可以设置key的过期时间,以实现缓存过期自动清理。但是,当多个key同时过期时,是如何触发各个key的过期事件的呢?
Redis过期Key触发机制主要是基于定时任务来实现的。Redis会定期检查key是否过期,并执行相应的动作。具体来说,Redis在启动的时候会开启定时任务,每隔指定的时间(缺省默认毫秒)检查数据库中的所有key过期时间,在key过期时执行过期回调函数,其中过期回调函数会执行以下内容:
1.根据定时任务结束时被检查的键数量,调整首个被检查的键的过期时间,这样可以尽可能的缩短两次触发的时间间隔;
2.检查键的过期时间是否超过当前定时任务的时间间隔,如果已过期,则调用“expiredKey()”函数;
3.删除当前检查的key,并执行回调函数的处理逻辑;
4.根据“expiredKey()”函数的返回值,确定是否需要继续检查其他过期键,如果有,则继续触发回调函数;
5.如果有过期键,则重复 2-4 步,直到结束定时任务。
代码示例:
/**
* key过期回调函数
*/
void expiredKey(char *key){
//处理过期回调逻辑
//删除过期key
deleteKey(key);
//做计数,是否还有要处理的key
haveKey--;
//返回是否需要继续检查
return haveKey;
}
/**
* 定时任务
*/
static void timerTask(void){
//首先调整首个被检查的键的过期时间
check.cur_index = adjustExpiredTime();
//遍历检查过期key
for (i = check.cur_index; i
if (isExpired(key[i])){
//如果有过期key,则调用回调函数
if(expiredKey(key[i]) == true){
//如果iconKey返回true,则已没有要检查的key,跳出循环
break;
}
}
}
}
以上是Redis中过期Key触发机制的实现原理,它能高效的处理多个key的定时触发操作,能有效的降低Redis的内存使用,提高Redis的使用效率。
香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
文章标题:Redis中过期key触发机制研究(redis过期触发)
网页URL:http://www.shufengxianlan.com/qtweb/news46/438246.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联