1. 程式人生 > >【redis】Springboot redis快取註解說明

【redis】Springboot redis快取註解說明

1.首先我們在啟動類上加上註解@EnableCaching開啟快取

@EnableCaching  //開啟快取
public class SpringDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringDemoApplication.class, args);
    }
}

2.然後我們可以在所需要的方法上加上@Cachable註解進行快取,該註解有以下可選項

cacheNames = "product"   //快取名

key = "固定值" 或  key = "#sellerid"(可變化的值)  //redis快取中的key

condition = "#sellerid.length > 10"   //裡面填寫表示式,true表示進行快取,false表示不進行快取

unless = "#result.getCode() != 0"   //和以上相反,當為false時進行快取,否則不進行快取

@GetMapping("/list")
    @Cacheable(cacheNames = "product",key = "#sellerid",condition = "#sellerid.length() > 2",unless = "#result.getCode() != 0")
    public ResultVO list(@RequestParam(value = "sellerid", required = false) String sellerid){
        ResultVO resultVO = new ResultVO();
        resultVO.setCode(0);
        resultVO.setMsg("成功");
        ProductVO productVO = new ProductVO();
        ProductInfoVO productInfoVO = new ProductInfoVO();
        productVO.setProductInfoVOList(Arrays.asList(productInfoVO));

        productVO.setCategoryName("粥");
        productVO.setCategoryType(1);
        productInfoVO.setProductId("1001");
        productInfoVO.setProductName("皮蛋粥");
        productInfoVO.setProductPrice(new BigDecimal(1.2));
        productInfoVO.setProductDescription("好吃的皮蛋粥");
        productInfoVO.setProductIcon("https://ss0.baidu.com/73F1bjeh1BF3odCf/it/u=1335713607,299352424&fm=85&s=8D386E974EF26E8427A341710300E07A");



        resultVO.setData(Arrays.asList(productVO));
        return resultVO;
    }

[email protected] 刪除快取  

allEntries = false  清空product裡面的所有制

allEntries = true  預設值,刪除key對應的值

/**
     * 儲存/更新
     * @param form
     * @param bindingResult
     * @param map
     * @return
     */
    @PostMapping("/save")
    @CacheEvict(cacheNames = "product",key = "123",allEntries = true)
    public ModelAndView save(@Valid ProductForm form,
                             BindingResult bindingResult,
                             Map<String,Object> map){
        if (bindingResult.hasErrors()){
            map.put("msg",bindingResult.getFieldError().getDefaultMessage());
            map.put("url","/seller/product/error");
            return new ModelAndView("common/error",map);
        }
        try{
            ProductInfo productInfo = new ProductInfo();
            if (!StringUtils.isEmpty(form.getProductId())){
                productInfo = productService.findOne(form.getProductId());
            }else{
                form.setProductId(KeyUtils.getUniqueKey());
            }
            BeanUtils.copyProperties(form,productInfo);
            productService.save(productInfo);
        }catch (SellException e){
            map.put("msg",e.getMessage());
            map.put("url","/seller/product/index");
            return new ModelAndView("common/error",map);
        }
        map.put("url","/seller/product/list");
        return new ModelAndView("common/success",map);
    }

4. @CachePut

每次執行都會執行方法,無論快取裡是否有值,同時使用新的返回值的替換快取中的值。這裡不同於@Cacheable:@Cacheable如果快取沒有值,從則執行方法並快取資料,如果快取有值,則從快取中獲取值

[email protected]

@CacheConfig: 類級別的註解:如果我們在此註解中定義cacheNames,則此類中的所有方法上 @Cacheable的cacheNames預設都是此值。當然@Cacheable也可以重定義cacheNames的值

相關推薦

redisSpringboot redis快取註解說明

1.首先我們在啟動類上加上註解@EnableCaching開啟快取 @EnableCaching //開啟快取 public class SpringDemoApplication { public static void main(String[] args)

RedisSpringBoot整合Redis分散式鎖以及Redis快取

整合Redis 首先在pom.xml中加入需要的redis依賴和快取依賴 <!-- 引入redis依賴 --> <dependency>     <groupId>org.springframework.boot</grou

RedisSpringBoot 整合 Redis

1、pom依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache<

Azure Redis 快取 Azure Cache For Redis使用Redis自帶redis-benchmark.exe命令測試Azure Redis的效能

問題描述 關於Azure Redis的效能問題,在官方文件中,可以檢視到不同層級Redis的最大連線數,每秒處理請求的效能。 基本快取和標準快取 C0 (250 MB) 快取 - 最多支援 256 個連線 C1 (1 GB) 快取 - 最多支援 1,000 個連線 C2 (2.5 GB) 快取 - 最

Azure Redis 快取 Azure Cache For RedisAzure Redis由低級別(C)升級到高級別(P)的步驟和注意事項, 及對使用者現有應用的潛在影響,是否需要停機時間視窗,以及這個時間視窗需要多少的預估問題

問題描述 由於Azure Redis的效能在不同級別表現不同,當需要升級/縮放Redis的時候,從使用者的角度: 需要知道有那些步驟? 注意事項? 潛在影響? 停機事件視窗? 升級預估時間?   解決方案 從使用的步驟出發,升級的步驟為: 1)Azure門戶頁面操作 選擇縮放(Scale)目

redis基於redis實現分布式並發鎖

val 內容 等待隊列 過多 具體實現 exec ret abs con 基於redis實現分布式並發鎖(註解實現) 說明   前提, 應用服務是分布式或多服務, 而這些"多"有共同的"redis";   GitHub: https:

scrapyscrapy-redis 全國建築市場基本信息采集

redis callback ids super call connect info turn 一個 簡介 環境: python3.6    scrapy 1.5 使用scrapy-redis 開發的分布式采集demo。一次簡單的例子,供初學者參考(覺得有更好的方式

Docker學習筆記安裝Redis

art port 再次 dock 使用 contain bash Go red 項目中使用到Redis,平常都是別人搭建的,今天試著在Google Cloud Platform 上搭建一個學習環境。 1.使用 docker pull redis 從docker hub中下載

Spring—AOP之AspectJ註解方式實現聲式事務管理

source xml配置 blog org 僅支持 選擇 imp 獨立 col 前言 這回來說下註解方式的聲明式事務管理。 正文 Demo 1、引入相關的jar包這裏寫圖片描述 2、引入AOP約束<beans xmlns:xsi="http://www.w3

Redis深入淺出Redis(三)——在專案中使用Jedis對Redis操作

一、前言       在前幾篇部落格中小編向大家介紹了搭建單機版和叢集版的redis。雖然叢集搭建起來了,但是如何在專案中使用呢?在這篇部落格中,小編向大家介紹Jedis,用Jedis來對Redis進行增加、刪除、設定有效時間等操作。 二、什麼是Jedis?

搭建redis cluster叢集,JedisCluster帶密碼訪問解決當中各種坑

一.搭建redis單機 本文搭建redis3.0版本,3.0主要增加了redis cluster叢集功能。 1.下載地址:http://download.redis.io/releases/redi

Redis3.Redis與MySQL資料一致性的思考

Redis特性 先列舉一下Redis的特點: 讀寫效能優異 持久化 資料型別豐富 單執行緒 資料自動過期 釋出訂閱 分散式 作為快取使用時,一般有兩種方式更新資料: 1、讀取前,先去讀Redis,如果沒有資料,讀取資料庫,將資料拉入Redis。 2、修改資料時

centos7設定Redis外網可訪問,通過java程式遠端訪問Redis

一、設定Redis外網可訪問 1、開放埠6379 firewall-cmd --zone=public --add-port=6379/tcp --permanent 我這裡的警告資訊是,埠6379已開通。 檢視開放埠:firewall-cmd --zone=public -

搞定RedisRedis 面試題整理

redis單執行緒問題 單執行緒指的是網路請求模組使用了一個執行緒(所以不需考慮併發安全性),即一個執行緒處理所有網路請求,其他模組仍用了多個執行緒。 為什麼說redis能夠快速執行? 絕大部分請求是純粹的記憶體操作(非常快速); 採用單執行緒,避免了不必要的上下文切換和競爭條件

基於Redis Lua指令碼實現的分散式鎖(Java實現)

最近專案中需要用到一個分散式的鎖,考慮到基於會話節點實現的zookeeper鎖效能不夠,於是想使用redis來實現一個分散式的鎖。看了網上的幾個實現方案後,發現都不夠嚴謹。比如這篇:用Redis實現分散式鎖裡面設計的鎖有個最大的問題是鎖的超時值TTL會一直被改寫

實戰scrapy-redis + webdriver 爬取航空網站

引言 今天給大家帶來的是scrapy-redis + webdriver實戰案例。在爬蟲編寫過程中,我們經常會遇到以下的情況,想要用scrapy框架,但是因為網站的原因,還想要用webdriver,那麼要如何實現scrapy + webdriver呢?其實很簡單,大家都知道,在scrapy中,我

Docker學習2執行redis

1、在桌面雙擊【Docker Quickstart Terminal】啟動終端。 2、在終端輸入:docker pull redis,拉去redis映象,預設下載最新版本的redis映象,也可以執行redis映象,如docker pull redis:x.x 3、執行

Redis 03 redis執行、停止、客戶端、多資料庫

目錄 1、redis啟動模式 1.1前端模式啟動   執行 如下程式碼進入redis安裝目錄,然後執行bin目錄下的redis-server開啟redis服務 cd /usr/local/redis./bin/red

Redis6.Redis資料型別 雜湊的基本使用

#!/usr/bin/python #!coding: utf-8 import redis if __name__=="__main__": try: conn=redis

centos7安裝redis

1. 安裝wget工具 yum install wget 如果已經安裝了wget,可以直接跳過當前步驟. 2. 安裝epel(extra package for enterprise