redis追加削除Cacheable CachePut
6516 ワード
pomファイル
JAvaコードcache実装
すべてのvalueの下にあるすべての要素を削除
注意:
org.springframework.boot
spring-boot-starter-data-redis
JAvaコードcache実装
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.http.MediaType;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping("/kapplications")
@CacheConfig(cacheNames = "kapplications")
public class KapplicationController {
@Autowired
private KapplicationService kapplicationService;
@RequestMapping(value = "/id/{id}", method = RequestMethod.GET)
@Cacheable(key = "#id")
public ResultVO GetByID(@PathVariable("id")String id) {
List list= kapplicationService.getByID(id);
List listVO = new ArrayList<>();
for (Kapplication kp:list ) {
listVO.add(new KapplicationVO(kp));
}
return ResultVOUtil.success(listVO);
}
@PutMapping
@CachePut(key ="#kapplication.applicationid")
public ResultVO kapplicationupdate(@Valid @RequestBody Kapplication kapplication)
{
Integer ka = kapplicationService.kapplicationupdate(kapplication);
return ResultVOUtil.success(ka);
}
@DeleteMapping
@CacheEvict(key = "#kapplicaton.applicationid")
public ResultVO Delete(@Valid @RequestBody String applicationid){
kapplicationService.delete(applicationid);
return ResultVOUtil.success(null);
}
}
注意インポートパッケージmport org.springframework.cache.annotation.Cacheable;
すべてのvalueの下にあるすべての要素を削除
@CacheEvict(value="users ", allEntries=true)
ymlプロファイルspring:
redis:
host: 10.99.20.80
database: 2
port: 6379
password: root
timeout: 0
redisDefaultExpiration: 6000
空のときunless解釈を返さない@Cacheable(key = "''+#id", unless="#result == null")
/**
* Spring Expression Language (SpEL) attribute used to veto method caching.
* Unlike {@link #condition()}, this expression is evaluated after the method
* has been called and can therefore refer to the {@code result}. Default is "",
* meaning that caching is never vetoed.
* @since 3.2
*/
注意:
Field or property 'test' cannot be found on object of type
type 'org.springframework.cache.interceptor.CacheExpressionRootObject'
@Cacheable(key = "'rrrr'")
Cache
@CacheConfig
: にクラスで されるいくつかの のキャッシュ を するために されます.ここで@CacheConfig(cacheNames = "users")
:このデータ・アクセス・オブジェクトで されるコンテンツがusersというキャッシュ・オブジェクトに されるように されている 、この を せずに、@Cacheable
がキャッシュ・セットの を することによって することもできます.
-
@Cacheable
:findByName が されている り がキャッシュに されます.また、クエリー にキャッシュから され、 しない はデータベースへのアクセスが されます.この には に のパラメータがあります: -
value
、cacheNames
:2つの のパラメータ(cacheNames
はSpring 4として され、value
の として される)は、キャッシュストレージの を するために される.Spring 4には@CacheConfig
が するため、Spring 3に とされるvalue
の も、 となる .-
key
:キャッシュオブジェクトがMapセットに されているkey は ではなく、デフォルトでは のすべてのパラメータの み わせに ってkey として されます.たとえば、@Cacheable(key = "#p0")
: の のパラメータをキャッシュのkey として する は、SpEL の については、 を してください.-
condition
:キャッシュ の は、 ではなく、SpEL も する があり、 の を たす のみがキャッシュされる. えば、@Cacheable(key = "#p0", condition = "#p0.length() < 3")
は、 のパラメータの さが3 の にのみ、 がキャッシュされることを す.-
unless
:もう つのキャッシュ パラメータは、 ではなく、SpEL を する があります.condition
パラメータと なる は、 が び された に される タイミングであるため、resultを することができる. -
keyGenerator
:keyジェネレータを するために され、 ではありません.カスタムkeyジェネレータを する がある は、org.springframework.cache.interceptor.KeyGenerator
インタフェースを し、このパラメータを して する があります.なお、このパラメータは、key
と する である-
cacheManager
: でないキャッシュマネージャを するために します. は、 ある にのみ する がある.-
cacheResolver
:そのキャッシュ・プロセッサの を するために され、 ではありません.org.springframework.cache.interceptor.CacheResolver
インタフェースで のキャッシュ を し、このパラメータで する があります.
ここで する2つの に えて、 のコア があります.-
@CachePut
: に され、パラメータ に づいてキャッシュされます.@Cacheable
とは なり、 に が び されるので、 にデータの と に されます.そのパラメータは@Cacheable
と しており、 な は、@Cacheable
パラメータに する の を することができる.-
@CacheEvict
: に され、 、キャッシュから するデータを するために に される.@Cacheable
と じパラメータに えて、 という2つのパラメータがあります.-
allEntries
: ではありません.デフォルトはfalseです.trueの 、すべてのデータ が されます.-
beforeInvocation
: ではありません.デフォルトはfalseで、メソッドが び された にデータが されます.trueの 、メソッドを び す にデータが されます.