日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
處理處理Redis中Java對象的過期問題(redisjava過期)

Redis是一個開源的鍵值對存儲系統(tǒng),是實現(xiàn)高性能、高可用性和分布式緩存應(yīng)用的數(shù)據(jù)存儲平臺,它可以用于處理存儲Java對象,但是Redis中Java對象存儲存在過期的問題,那如何處理Java對象的過期問題呢?

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、網(wǎng)站定制、營銷型網(wǎng)站小程序制作、微信公眾號開發(fā)、成都網(wǎng)站營銷服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為集裝箱企業(yè)提供源源不斷的流量和訂單咨詢。

1、無自動移除的實現(xiàn)

對于不支持自動移除的,我們可以使用程序定期去檢查緩存內(nèi)的數(shù)據(jù)是否超過了存儲的最大期限,并移除掉這些過期的Java對象,比如類似在每次往緩存寫入數(shù)據(jù)時去檢查一下:

public void saveJavaObject(String key, Object object, long expiration) {

try {

Cache cache = RedisCacheManager.getCache();

Set keySet = cache.keys();

for (String k : keySet) {

long TTL = cache.getExpire(k);

if (ttl == -2) { //原本沒有設(shè)置過期時間

continue;

}

if (ttl

cache.evict(k);

System.out.println(“Evict object for key: ” + k);

}

}

cache.put(key, object, expiration);

} catch (Exception e) {

e.printStackTrace();

}

}

2、利用Lua腳本原子地檢查并刪除過期的對象

我們也可以使用Lua腳本可以在原子級別去實現(xiàn)同時刪除過期的Java對象,類似的可以在每次向緩存寫入數(shù)據(jù)時使用:

private static final String EXPRIE_JAVA_OBJECT_SCRIPT = “l(fā)ocal keys = redis.call(‘keys’, ARGV[1])” +

“if #keys > 0 then ” +

“for i,k in pairs(keys) do ” +

“l(fā)ocal ttl= redis.call(‘ttl’,k) ” +

“if ttl == -2 then ” +

“continue;” +

“end ” +

“if ttl

“redis.call(‘del’,k); ” +

“end ” +

“end; ” +

“end; ” +

“redis.call(‘set’,KEYS[1],ARGV[2],’PX’,ARGV[3]) ” +

“return 1;”;

public void expireJavaObject(String key, Object object, long expiration){

try {

Cache cache = RedisCacheManager.getCache();

Jedis jedis = (Jedis) cache.getNativeCache();

jedis.evalsha(jedis.scriptLoad(EXPRIE_JAVA_OBJECT_SCRIPT),1, key, object, expiration);

}catch (Exception e){

e.printStackTrace();

}

}

上面的代碼中實現(xiàn)的是一個原子操作,即:在插入Redis之前先掃描Redis緩存里的數(shù)據(jù),去除過期的Java對象,再將新的Java對象插入緩存中。

通過以上兩種方案,我們可以管理并處理Redis中Java對象的過期問題,從而達到在緩存系統(tǒng)中安全有效地存儲和管理Java對象。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


當前名稱:處理處理Redis中Java對象的過期問題(redisjava過期)
鏈接地址:http://www.5511xx.com/article/dhgscjc.html