Code:
@Override @Cacheable (value= Cache_name, key ="' Cartitemkey_ ' + #uId") PublicList<string> Getcartid (Long uId) {//cartitemkey_1String key ="Cartitemkey_"+uId; Try{List<String> keystr = (list<string>) rediscache.Get(Key, List.)class); Logger.info ("===========================redis Call = = ="); returnKeystr; } Catch(Exception e) {e.printstacktrace (); } return NULL; }
The reasons for this arise are:
Nothing was found at the time of the first call. Returns null
In fact, NULL is also a kind of data,
It's been cached, Key:null.
So when you call again, the default cache is worth it, but this value is null.
Workaround:
@Override @Cacheable (value= Cache_name, key ="' Cartitemkey_ ' + #uId", unless="#result = = NULL") PublicList<string> Getcartid (Long uId) {//cartitemkey_1String key ="Cartitemkey_"+uId; Try{List<String> keystr = (list<string>) rediscache.Get(Key, List.)class); Logger.info ("===========================redis Call = = ="); returnKeystr; } Catch(Exception e) {e.printstacktrace (); } return NULL; }
Spring Cache Annotations @cacheable The first entry to the calling method and the second not called exception when the cache occurs