国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沁阳市| 涪陵区| 合肥市| 大田县| 大丰市| 阳谷县| 遵义市| 屏山县| 蒙阴县| 闸北区| 新田县| 宣威市| 安顺市| 浠水县| 运城市| 手机| 信丰县| 依兰县| 阿合奇县| 梓潼县| 密云县| 娄烦县| 罗田县| 黄龙县| 瑞安市| 九龙城区| 富锦市| 崇阳县| 通化市| 大安市| 邢台县| 阿合奇县| 鹤山市| 新巴尔虎右旗| 安陆市| 无为县| 大冶市| 雅安市| 麻栗坡县| 游戏| 南宫市|