代碼:
@Override @Cacheable(value = CACHE_NAME, key = "'CartItemkey_'+#uId") public List<String> getCartId(Long uId) {//CartItemkey_1 String key = "CartItemkey_"+uId; try { List<String> keyStr = (List<String>) redisCache.get(key, List.class); logger.info("===========================redis 調用==="); return keyStr; } catch (Exception e) { e.printStackTrace(); } return null; }
出現的原因就:
在第一次調用時候什么都沒查到時候 返回 null
其實null 也是一種數據 ,
這時候就被緩存起來了,key:null
所以在你再次調用時候,默認緩存中是有值得,不過這個值是null而已
解決辦法:
@Override @Cacheable(value = CACHE_NAME, key = "'CartItemkey_'+#uId", unless="#result == null") public List<String> getCartId(Long uId) {//CartItemkey_1 String key = "CartItemkey_"+uId; try { List<String> keyStr = (List<String>) redisCache.get(key, List.class); logger.info("===========================redis 調用==="); return keyStr; } catch (Exception e) { e.printStackTrace(); } return null; }