怎么在javaWeb項(xiàng)目中使用Redis進(jìn)行緩存

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

閩清網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

一: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ù),如果緩存中沒(méi)有,就去數(shù)據(jù)庫(kù)中取,然后把數(shù)據(jù)存入緩存,下次查詢時(shí)就會(huì)從緩存中取。

三:緩存的同步

問(wèn)題來(lái)了,入過(guò)你修改或者刪除了數(shù)據(jù),下次取的時(shí)候,因?yàn)榫彺嬷杏袛?shù)據(jù)便在緩存中取,這是數(shù)據(jù)庫(kù)的數(shù)據(jù)與緩存中的數(shù)據(jù)不一致,便出現(xiàn)差異,這就要緩存同步了。

其實(shí)很簡(jiǎn)單,就是在修改,刪除(如果添加也需要的話),執(zhí)行下面操作:

1:刪除緩存,處理數(shù)據(jù),把數(shù)據(jù)放如緩存

2:刪除緩存,處理數(shù)據(jù)(等查詢數(shù)據(jù)的時(shí)候會(huì)把數(shù)據(jù)放入緩存,兩種情況只是寫緩存時(shí)間的區(qū)別)

try { 
      jedisClientSingleService.hdel(ALL_RESOURCES_NO_CONDITION, hashId); 
    } catch (Exception e) { 
      e.printStackTrace(); 
    }

關(guān)于怎么在javaWeb項(xiàng)目中使用Redis進(jìn)行緩存問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站題目:怎么在javaWeb項(xiàng)目中使用Redis進(jìn)行緩存
分享鏈接:http://muchs.cn/article4/ieggoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、用戶體驗(yàn)、網(wǎng)站內(nèi)鏈、網(wǎng)站排名動(dòng)態(tài)網(wǎng)站、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司