国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Cache的介紹以及怎么使用(redis)

這篇具有很好參考價值的文章主要介紹了Spring Cache的介紹以及怎么使用(redis)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Spring Cache

1、Spring Cache介紹

  • Spring Cache是一個框架,實現了基于注解的緩存功能,只需要簡單地加一個注解,就能實現緩存功能.
  • Spring Cache提供了一層抽象,底層可以切換不同的cache實現。具體就是通過CacheManager接口來統(tǒng)一不同的緩存技術。CacheManager是Spring提供的各種緩存技術抽象接口。

針對不同的緩存技術需要實現不同的CacheManager:

CacheManager 描述
EhCacheCacHManager 使用EhCache作為緩存技術
GuavaCacheManager 使用Google的GuavaCache作為緩存技術
RedisCacheManager 使用Redis作為緩存技術

2、Spring Cache常用注解

注解 說明
@EnableCaching 開啟緩存注解功能
@Cacheable 在方法執(zhí)行前spring先查看緩存中是否有數據,如果有數據,則直接返回緩存數據;若沒有數據,調用方法并將方法返回值放到緩存中
@CachePut 將方法的返回值放到緩存中
@cacheEvict 將一條或多條數據從緩存中刪除

在spring boot項目中,使用緩存技術只需在項目中導入相關緩存技術的依賴包,并在啟動類上使用@EnableCaching開啟緩存支持即可。

例如,使用Redis作為緩存技術,只需要導入Spring data Redis的maven坐標即可。

  • 我們在使用簡單的緩存技術的時候不用單獨映入相應的依賴,使用spring-boot-starter-web這個包即可,但是要使用redis作為緩存就需要額外的引入依賴:

           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-cache</artifactId>
            </dependency>
    
2.1、EnableCaching注解

在啟動類上加上注解@EnableCaching

2.2、CachePut注解
@Autowired
private CacheManager cacheManager;

@Autowired
private UserService userService;

/**
 *  CachePut:將方法的返回值放入緩存
 *  value:緩存名稱  每個緩存可以有多個key
 *  key:緩存的key  #result.id:動態(tài)生成keyName進行緩存
 *
 *
 */
@CachePut(value = "userCache",key="#result.id")
//    @CachePut(value = "userCache",key="#user.name")  //將user->name作為緩存名
//    @CachePut(value = "userCache",key="#user.id")   //將user->id作為緩存名
@PostMapping
public User save(User user){
    userService.save(user);
    return user;
}

key值參數引用(SpEL動態(tài)獲取)的說明:

Spring Cache的介紹以及怎么使用(redis),Redis,spring,redis,spring boot

該注解在沒有緩存配置(如redis)的時候,會將數據緩存在ConcurrentMap里面,但是此緩存操作不具有持久化的儲存,在服務重啟之后會數據丟失。解決方法是使用Redis等緩存中間件。

2.3、CacheEvict注解
  • DELETE
/**
 *  CacheEvict:清理指定緩存
 *  value:緩存名稱  每個緩存可以有多個key
 *  key:緩存的key  #result.id:動態(tài)生成keyName進行緩存
 */
@CacheEvict(value = "userCache",key = "#id")
//@CacheEvict(value = "userCache",key = "#p0")
//@CacheEvict(value = "userCache",key = "#root.args[0]")
// 上述三種方式都是相同的效果,動態(tài)獲取id的參數作為緩存的唯一標識
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id){
    userService.removeById(id); 
}
  • UPDATE
@CacheEvict(value = "userCache",key = "#user.id")
//@CacheEvict(value = "userCache",key = "#p0.id")
//@CacheEvict(value = "userCache",key = "#root.args[0].id")
//@CacheEvict(value = "userCache",key = "#result.id")
@PutMapping
public User update(User user){
    userService.updateById(user);
    return user;
}
2.4、Cacheable注解
    /**
     * Cacheable:在方法執(zhí)行前spring先查看緩存中是否有數據,
     * 如果有數據,則直接返回緩存數據;若沒有數據,調用方法并將方法返回值放到緩存中;
     * value:緩存名稱  每個緩存可以有多個key
     * key:緩存的key  #result.id:動態(tài)生成keyName進行緩存
     * condition:滿足條件就進行緩存,無法使用#result
     * unless:滿足條件就不進行緩存,可以使用#result-->看源碼注解
     */ 
    @Cacheable(value = "userCache", key = "#id", condition = "#unless == null")
    @GetMapping("/{id}")
    public User getById(@PathVariable Long id) {
        User user = userService.getById(id);
        return user;
    }

在方法執(zhí)行前spring先查看緩存中是否有數據,如果有數據,則直接返回緩存數據;若沒有數據,調用方法并將方法返回值放到緩存中。

@Cacheable(value = "userCache", key = "#user.id+'_'+#user.name")
//多個變量的拼接
@GetMapping("/list")
public List<User> list(User user) {
    LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(user.getId() != null, User::getId, user.getId());
    queryWrapper.eq(user.getName() != null, User::getName, user.getName());
    List<User> list = userService.list(queryWrapper);
    return list;
}

3、Spring Cache使用方式–redis

在Spring Boot項目中使用Spring Cache的操作步驟(使用redis緩存技術):

  • 1、導入maven坐標
    spring-boot-starter-data-redis、spring-boot-starter-cache
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2、配置application.yml

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456
    database: 0
  cache:
    redis:
      time-to-live: 1800000 #設置緩存過期時間,可選

3、在啟動類上加入@EnableCaching注解,開啟緩存注解功能
4、在Controller的方法上加入@Cacheable、@CacheEvict等注解,進行緩存操作

Demo項目源碼:SpringCache-Demo文章來源地址http://www.zghlxwxcb.cn/news/detail-676404.html

到了這里,關于Spring Cache的介紹以及怎么使用(redis)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring項目使用Redis限制用戶登錄失敗的次數以及暫時鎖定用戶登錄權限

    Spring項目使用Redis限制用戶登錄失敗的次數以及暫時鎖定用戶登錄權限

    前兩天被面試到這個問題,最初回答的不是很合理,登錄次數這方面記錄還一直往數據庫上面想,后來感覺在數據庫中加一個登錄日志表,來查詢一段時間內用戶登錄的次數,現在看來,自己還是太年輕了,做個登錄限制肯定是為了防止數據庫高并發(fā),加一個表來記錄登錄日

    2024年02月12日
    瀏覽(27)
  • spring boot集成redis,以及配置database不生效問題

    備注:記錄一次spring-boot + redis 配置redis.database后,仍然使用db0默認庫的情況。 完成以上配置,即redis已經正常集成進入項目。 完成以上配置,即可正常使用了 ??????如果是單獨僅集成redis,database 配置是肯定生效的,因為沒有影響,這里記錄一個遇到的情景: ??????即

    2024年01月19日
    瀏覽(98)
  • redis(9):spring里面使用redis

    1 創(chuàng)建一個mave項目 自行創(chuàng)建一個maven項目 2 修改pom.xml

    2024年02月16日
    瀏覽(14)
  • Spring Boot 使用 Redis

    Spring Boot 使用 Redis

    Java Java Java Java Java Java 4,亂碼的問題 自定義序列化工具 為什么要自定話應該序列化工具,因為他自己提供的不是很好,所以我們要自己定義一個,這樣的話可以把java對象轉化成json和字節(jié)碼存入Redis 里,反序列化就是把json和字節(jié)碼轉化為java對象,泛型指定為? Object.class ?表

    2024年04月08日
    瀏覽(23)
  • Spring Boot中使用Redis

    Spring Boot中使用Redis

    目錄 1.依賴 2.依賴關系 3.配置 4.RedisTemplate 5.基礎操作 6.事務 maven依賴如下,需要說明的是,spring-boot-starter-data-redis里默認是使用lettuce作為redis客戶端的驅動,但是lettuce其實用的比較少,我們常用的還是jedis作為客戶端的驅動,所以這里排除掉lettuce,引入jedis: spring data redi

    2023年04月11日
    瀏覽(27)
  • Spring Data Redis的使用

    Spring Data Redis的使用

    解決方法為在Redis-x64-3.2.100目錄下打開兩個cmd窗口,分別輸入 命令redis-server.exe redis.windows.conf 和 命令redis-cli ,即可成功連接。 ? 首先在maven的pom文件中引入 Spring Data Redis 模塊,代碼如下。 然后,在springboot的配置文件中寫入redis配置,代碼如下。 然后,處理keys的序列化問題

    2024年02月09日
    瀏覽(28)
  • Spring Boot 中使用 Redis

    redis 安裝、配置,啟動:(此處以云服務器上進行說明) 1. 添加 pom 2. 添加配置 3. 導入 redis 工具類 PS:redis 工具類對常用操作進行了封裝,可自行研究食用。 4. 測試

    2023年04月14日
    瀏覽(32)
  • 常用的緩存工具有ehcache、memcache和redis,這里介紹spring中ehcache的配置。

    常用的緩存工具有ehcache、memcache和redis,這里介紹spring中ehcache的配置。

    常用的緩存工具有ehcache、memcache和redis,這里介紹spring中ehcache的配置。 1.在pom添加依賴: 2.在applicationContext.xml添加命名空間: 3.在applicationContext.xml中配置ehcache: 4.創(chuàng)建ehcache的配置文件ehcache-setting.xml: 這里我們配置了自定義緩存cacheTest,10秒過期。 cache元素的屬性: name:緩

    2024年02月16日
    瀏覽(27)
  • spring boot中redis的使用

    首先,需要在 pom.xml 文件中添加Redis依賴: 這個依賴包含了Spring?Data?Redis,以及Jedis和Lettuce這兩種Redis客戶端的實現。 在SpringBoot項目中,可以通過在 application.properties 或 application.yml 文件中配置Redis連接信息。以下是一個示例: 其中, host 和 port 分別是Redis服務器的地址和端

    2024年02月09日
    瀏覽(20)
  • Spring Cache 介紹

    Spring Cache 是 Spring 提供的的緩存解決方案,它并非是一個具體的緩存實現,而是和 JSR107 類似的一套緩存規(guī)范,基于注解并與 Spring 的無縫集成。本文主要介紹其基本概念及簡單使用。 Spring Cache 是 Spring 提供的一種緩存抽象機制,用于簡化應用中的緩存操作。它通過將方法的

    2024年04月22日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包