国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

javaWeb中使用Redis緩存實例解析

2024-07-13 10:15:51
字體:
來源:轉載
供稿:網友

直接進入主題:

一: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緩存實例解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 任丘市| 和静县| 上杭县| 西吉县| 家居| 灵寿县| 乐业县| 无为县| 乐都县| 花垣县| 石泉县| 宁阳县| 醴陵市| 红河县| 玉龙| 视频| 邓州市| 辽源市| 扎赉特旗| 安吉县| 玛纳斯县| 朔州市| 甘肃省| 漳州市| 蓬溪县| 永清县| 霍州市| 嘉善县| 遂川县| 南召县| 文成县| 湖北省| 连州市| 商丘市| 嘉善县| 陕西省| 肃宁县| 锡林浩特市| 沁阳市| 柘城县| 天长市|