亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在javaWeb項目中使用Redis進行緩存

發布時間:2021-03-29 17:18:08 來源:億速云 閱讀:306 作者:Leah 欄目:編程語言

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

一: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() { 
    //從緩存中獲取內容 
    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轉換換成字符串 
      String cachString =JsonUtils.toJson(list) ; 
      jedisClientSingleService.hset(ALL_RESOURCES_NO_CONDITION, hashId, cachString) ; 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return list; 
  }

邏輯:先從緩存中取數據,如果緩存中沒有,就去數據庫中取,然后把數據存入緩存,下次查詢時就會從緩存中取。

三:緩存的同步

問題來了,入過你修改或者刪除了數據,下次取的時候,因為緩存中有數據便在緩存中取,這是數據庫的數據與緩存中的數據不一致,便出現差異,這就要緩存同步了。

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

1:刪除緩存,處理數據,把數據放如緩存

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

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

關于怎么在javaWeb項目中使用Redis進行緩存問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沽源县| 乡城县| 中西区| 徐州市| 民勤县| 忻州市| 法库县| 广元市| 聂荣县| 墨竹工卡县| 德令哈市| 五大连池市| 大宁县| 南平市| 潜山县| 招远市| 沙河市| 吴桥县| 西昌市| 东辽县| 韩城市| 怀宁县| 屯留县| 巫溪县| 元氏县| 眉山市| 西贡区| 临沭县| 昆明市| 工布江达县| 铁岭市| 临朐县| 宁陕县| 融水| 平凉市| 读书| 新巴尔虎左旗| 澄迈县| 武隆县| 宜良县| 璧山县|