redis在移动端app、互联网技术及数据库领域,以众多强大的特性而享誉盛名,比如可靠性、高并发性和超高的查询速度等。而另外,Redis还有一个很重要而备受重视的特性:过期清算策略。
有很多情况会致使数据失效,比如僵尸任务、Session结束等。Redis中有一套可配置的过期清算策略,可以帮助你有效清算掉过期数据,避免它们产生的影响。
在Redis中,我们可以定义三种区别的过期清算策略:
1、定时清算:定期运行一次代码,检查数据会不会过期,如果过期则删除该数据。定期清算可以减少Redis主机上运行的事件次数,但是会损失所有过期数据的实时性。
2、惰性清算:在当前数据被读取时先检查该数据会不会过期,如果过期则删除该数据。惰性清算可使过期数据尽早被移除,但是会增加每次读取数据的时间开消。
3、及时清算:在Redis运行的进程中不断的检查数据会不会过期,如果过期则删除该数据。及时清算可以实时地清算掉过期的数据,但是会占用大量的Redis资源。
基于以上特性,我们可以根据实际情况来分配公道的过期清算策略:
a. 如果业务需要对数据实时性有较高要求,则可以采取定时清算的方式,例如每天定期清算一次;
b. 如果读取多于写入,但又有一定数据实时性要求,那末采取惰性清算技术比较适合;
c. 如果只要求少许实时数据,可以斟酌及时清算技术,以保持尽量近的数据实时性。
综上所述,对基于Redis的Java实现的过期清算策略,可以根据业务要求,有效地选择适合的实现方案。
// 例:使用定时任务清算技术
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
public void run() {
// 遍历Redis中的所有key
Set keys = jedis.keys(“*”);
for (String key : keys) {
if(jedis.ttl(key)
// 删除数据
jedis.del(key);
}
}
}
};
timer.schedule(timerTask, 0, 10000); //每10s履行一次
本文来源:https://www.yuntue.com/post/228838.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏