redis追加削除Cacheable CachePut

6516 ワード

pomファイル

   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 が されている り がキャッシュに されます.また、クエリー にキャッシュから され、 しない はデータベースへのアクセスが されます.この には に のパラメータがあります:
  • valuecacheNames: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の 、メソッドを び す にデータが されます.