怎么在javaWeb項目中使用Redis進行緩存?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一:serviceImpl定義:
@Service
public class JedisClientSingleService implements JedisClient {
@Autowired
private JedisPool jedisPool;
@Override
public String get(String key) {
Jedis jedis = jedisPool.getResource();
String string = jedis.get(key);
jedis.close();
return string;
}
@Override
public String set(String key, String value) {
Jedis jedis = jedisPool.getResource();
String string = jedis.set(key, value);
jedis.close();
return string;
}
@Override
public String hget(String hkey, String key) {
Jedis jedis = jedisPool.getResource();
String string = jedis.hget(hkey, key);
jedis.close();
return string;
}
@Override
public long hset(String hkey, String key, String value) {
Jedis jedis = jedisPool.getResource();
long result = jedis.hset(hkey, key, value);
jedis.close();
return result;
}
@Override
public long incr(String key) {
Jedis jedis = jedisPool.getResource();
long result = jedis.incr(key);
jedis.close();
return result;
}
@Override
public long expire(String key, int second) {
Jedis jedis = jedisPool.getResource();
long result = jedis.expire(key, second);
jedis.close();
return result;
}
@Override
public long ttl(String key) {
Jedis jedis = jedisPool.getResource();
long result = jedis.ttl(key);
jedis.close();
return result;
}
@Override
public long del(String key) {
Jedis jedis = jedisPool.getResource();
long result = jedis.del(key);
jedis.close();
return result;
}
@Override
public long hdel(String hkey, String key) {
Jedis jedis = jedisPool.getResource();
long result = jedis.hdel(hkey, key);
jedis.close();
return result;
}二:添加緩存出(一般寫在service是層中):
public List<RoleResource> getTreeGrid() {
//從緩存中獲取內(nèi)容
try {
String cachString = jedisClientSingleService.hget(ALL_RESOURCES_NO_CONDITION, hashId);
if(!StringUtils.isBlank(cachString)){
List<RoleResource> list = JsonUtils.jsonStrToList(cachString, RoleResource.class) ;
return list ;
}
} catch (Exception e) {
e.printStackTrace();
}
List<RoleResource> list =sessionFactory.openSession().selectList("cn.sys.auth.entity.ResourcesMapper.getTreeGrid");
//將緩存中添加緩存
try {
//redsi只存字符串,把list轉(zhuǎn)換換成字符串
String cachString =JsonUtils.toJson(list) ;
jedisClientSingleService.hset(ALL_RESOURCES_NO_CONDITION, hashId, cachString) ;
} catch (Exception e) {
e.printStackTrace();
}
return list;
}邏輯:先從緩存中取數(shù)據(jù),如果緩存中沒有,就去數(shù)據(jù)庫中取,然后把數(shù)據(jù)存入緩存,下次查詢時就會從緩存中取。
三:緩存的同步
問題來了,入過你修改或者刪除了數(shù)據(jù),下次取的時候,因為緩存中有數(shù)據(jù)便在緩存中取,這是數(shù)據(jù)庫的數(shù)據(jù)與緩存中的數(shù)據(jù)不一致,便出現(xiàn)差異,這就要緩存同步了。
其實很簡單,就是在修改,刪除(如果添加也需要的話),執(zhí)行下面操作:
1:刪除緩存,處理數(shù)據(jù),把數(shù)據(jù)放如緩存
2:刪除緩存,處理數(shù)據(jù)(等查詢數(shù)據(jù)的時候會把數(shù)據(jù)放入緩存,兩種情況只是寫緩存時間的區(qū)別)
try {
jedisClientSingleService.hdel(ALL_RESOURCES_NO_CONDITION, hashId);
} catch (Exception e) {
e.printStackTrace();
}關(guān)于怎么在javaWeb項目中使用Redis進行緩存問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
網(wǎng)站標題:怎么在javaWeb項目中使用Redis進行緩存-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article22/iipjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、域名注冊、響應(yīng)式網(wǎng)站、網(wǎng)站排名、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容