国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

基于內存和 Redis 的兩級 Java 緩存框架

開發 前端
第一級緩存使用內存(同時支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第二級緩存使用 Redis(推薦)/Memcached 。由于大量的緩存讀取會導致 L2 的網絡成為整個系統的瓶頸,因此 L1 的目標是降低對 L2 的讀取次數。

環境:SpringBoot2.7.12 + j2cache2.8.5

1. 簡介

J2Cache 是 OSChina 目前正在使用的兩級緩存框架(要求至少 Java 8)。第一級緩存使用內存(同時支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第二級緩存使用 Redis(推薦)/Memcached 。由于大量的緩存讀取會導致 L2 的網絡成為整個系統的瓶頸,因此 L1 的目標是降低對 L2 的讀取次數。該緩存框架主要用于集群環境中。單機也可使用,用于避免應用重啟導致的緩存冷啟動后對后端業務的沖擊。

數據讀取

  • 讀取順序 -> L1 -> L2 -> DB
  • 數據更新
    從數據庫中讀取最新數據,依次更新 L1 -> L2 ,發送廣播清除某個緩存信息
    接收到廣播(手工清除緩存 & 一級緩存自動失效),從 L1 中清除指定的緩存信息

2. 實戰案例

2.1 依賴管理

<dependency>
  <groupId>net.oschina.j2cache</groupId>
  <artifactId>j2cache-core</artifactId>
  <version>2.8.5-release</version>
</dependency>
<dependency>
  <groupId>net.oschina.j2cache</groupId>
  <artifactId>j2cache-spring-boot2-starter</artifactId>
  <version>2.8.0-release</version>
</dependency>

2.2 配置

redis:
  # 地址, 多個地址使用‘,’逗號分割
  hosts: localhost:6379
  # 數據庫索引
  database: 11
  # 密碼
  password: xxxooo
  # 連接超時時間
  timeout: 10s
  # 連接池中的最小空閑連接
  min-idle: 0
  # 連接池中的最大空閑連接
  max-idle: 8
  # 連接池的最大數據庫連接數
  max-active: 8
  # #連接池最大阻塞等待時間(使用負值表示沒有限制)
  max-wait: -1ms
---
j2cache:
  openSpringCache: true
  # 緩存中不存在時,運行緩存空對象
  allowNullValues: true
  redisClient: lettuce
  l2CacheOpen: true
  # 一級緩存使用caffeine
  L1:
    provider_class: caffeine
  L2:
    #使用springRedis替換二級緩存
    provider_class: net.oschina.j2cache.cache.support.redis.SpringRedisProvider
    config_section: redis
  #使用springRedis進行廣播通知緩失效
  broadcast: net.oschina.j2cache.cache.support.redis.SpringRedisPubSubPolicy
# 上面配置的一級緩存為caffeine, 那么這里對一級緩存的配置就必須以這個caffeine開頭  
caffeine:
  # 配置一級,二級緩存的region,有效時間
  region.xj: 10000, 120s
---
spring:
  cache:
    # 一級緩存使用caffeine
    type: caffeine

2.3 核心操作類

@Service
public class UserService {


  private final UserRepository userRepository ;
  public UserService(UserRepository userRepository) {
    this.userRepository = userRepository ;
  }
  @Transactional
  public User save(User user) {
    return this.userRepository.saveAndFlush(user) ;
  }
  @Cacheable(value = {"xj"}, key = "#id")
  public User get(Long id) {
    return this.userRepository.findById(id).orElse(null) ;
  }
  @Transactional
  @CacheEvict(value = {"xj"}, key = "#id")
  public void remove(Long id) {
    this.userRepository.deleteById(id) ;
  }
}

以上是基本的操作,非常簡單。

2.4 Controller接口

@RestController
@RequestMapping("/users")
public class UserController {


  private final UserService userService ;
  // 通過CacheChannel操作j2cache緩存方法
  private final CacheChannel cacheChannel;
  
  public UserController(UserService userService, CacheChannel cacheChannel) {
    this.userService = userService ;
    this.cacheChannel = cacheChannel ; 
  }
  
  @GetMapping("/save")
  public User save() {
    User user = new User() ;
    int num = new Random().nextInt(80);
    user.setAge(num) ;
    user.setName("姓名 - " + num) ;
    user.setSex(num >= 50 ? "男" : "女") ;
    return this.userService.save(user) ;
  }
  
  @GetMapping("/{id}")
  public Object get(@PathVariable("id") Long id) {
    // 從指定的region,指定的key獲取數據,如果一級,二級緩存中不存在,則通過第三個參數Function手動獲取
    // 如果緩存中不存在時,同時配置了允許緩存空對象,則會緩存一個空對象到緩存中
    return this.cacheChannel.get("xj", id.toString(), key -> this.userService.get(id) , true) ;
  }
  
  @GetMapping("/delete/{id}")
  public Object remove(@PathVariable("id") Long id) {
    this.userService.remove(id) ;
    return "success" ;
  }
  
}

2.5 測試

先通過save接口添加數據

圖片圖片

查詢id=2的數據

圖片圖片

level=3 表示本次數據緩存中不存在,從數據庫中獲取的。刷新頁面

圖片圖片

level=2,本次數據從二級緩存redis中獲取。再次刷新頁面

圖片圖片

level=1,本次數據從一級緩存caffeine中獲取。后續再怎么刷新只要緩存沒有過期都將從一級緩存中獲取。

測試不存在的數據

圖片圖片

從數據庫中查詢不存在的數據。

圖片圖片

緩存了空對象。

測試刪除數據

圖片圖片

緩存中會立即清除

圖片圖片

以上是本篇文章的全部內容,希望對你有幫助。

完畢?。?!

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2019-07-10 15:41:50

RedisJava緩存

2022-03-31 13:58:37

分布式SpringRedis

2022-12-16 12:16:21

2022-04-15 11:26:14

緩存功能

2022-03-18 13:59:46

緩存RedisCaffeine

2023-02-26 11:15:42

緩存循環依賴

2017-05-15 11:50:47

江西政務云

2017-05-12 15:01:11

政務云江西云計算

2019-07-04 15:13:16

分布式緩存Redis

2017-04-11 09:30:46

互聯網

2022-04-28 13:58:41

Redis6客戶端服務端

2024-12-03 14:38:07

CaffeineRedis二級緩存

2019-10-11 08:41:18

JavaMemcached數據庫

2018-05-05 14:44:19

工作管理崗位

2021-06-02 06:49:18

Redis緩存設計.

2024-11-11 17:12:22

2009-06-30 14:08:00

Hibernate緩存

2012-12-17 14:54:55

算法緩存Java

2022-05-27 09:25:12

攜程酒店本地緩存查詢服務

2020-12-21 06:20:34

內存優化跨端
點贊
收藏

51CTO技術棧公眾號

日本免费一区二区三区等视频| 亚洲小说欧美激情另类| 一区二区三区四区免费观看| 韩国一区二区三区| 少妇人妻大乳在线视频| 国产精品免费av| 在线看的av| 欧美一区二区三区公司| 欧美大胆成人| 久久久久久久久综合| 欧美日韩久久精品| 麻豆一区区三区四区产品精品蜜桃| 精东粉嫩av免费一区二区三区| www国产黄色| 无吗不卡中文字幕| 91九色国产在线播放| 久久999免费视频| 亚洲午夜精品一区 二区 三区| 亚洲国产精品久久久久婷婷老年| av亚洲精华国产精华精华| 1024在线视频| 亚洲第一黄色网| 日韩成人一级| 日产精品高清视频免费| 久久久久久亚洲综合影院红桃| 天堂v视频永久在线播放| 亚洲精品一区二区三区四区高清| 麻豆一二三区精品蜜桃| 91在线短视频| 99久免费精品视频在线观看 | 久久噜噜噜精品国产亚洲综合| 日韩一区二区中文| 老汉色影院首页| 亚洲精品日韩一| 成人三级高清视频在线看| 欧美中文在线视频| 日本欧美在线观看| 国产主播福利| 亚洲精品中文字幕有码专区| 欧美老女人另类| www.在线观看av| 欧美午夜电影在线播放| 在线播放一区二区精品视频| 欧美视频1区| 亚洲一区在线免费观看| 欧美专区福利免费| 国产91一区二区三区| 国产清纯在线一区二区www| 欧美日本一道| 国产成人一区二区| 国产成人精品免费一区二区| 成人午夜电影在线观看| 欧美精品精品精品精品免费| 蜜臀av性久久久久蜜臀aⅴ | 日韩欧美专区在线| 精品久久久亚洲| 成人免费a级片| 欧美妇女性影城| 亚洲综合小说图片| 少妇av一区二区三区无码| 91麻豆精品91久久久久同性| 国产免费av一区二区三区| 国产91在线亚洲| 欧美日韩一区 二区 三区 久久精品| 国产精品日韩精品在线播放| 一区二区三区偷拍| 欧美三级乱人伦电影| 成人国产精品一级毛片视频| 成人性生生活性生交12| 精品性高朝久久久久久久| 亚洲特色特黄| 中文字幕在线视频不卡| 91国产高清在线| 91麻豆高清视频| 国模一区二区| 国产奶头好大揉着好爽视频| 欧美一级精品在线| 亚洲国产精品第一区二区| 久久综合色播| 91精品国产乱码久久久久久久久 | 理论片播放午夜国外| 欧美成人久久久| 成人av在线资源网| 国产日韩电影| 四虎永久免费网站| 亚洲毛片一区二区| 亚洲综合自拍| yw.139尤物在线精品视频| 国产成人精品最新| 国产精品 欧美精品| 欧美国产一级| 色噜噜狠狠狠综合欧洲色8| 国产精品日韩在线一区| 国产欧美精品xxxx另类| 欧美成人在线网站| 国产成一区二区| 97久久伊人激情网| 欧美激情伊人电影| 欧美日韩亚洲激情| 99久久国产综合精品女不卡| 久久精品国产99国产| 日本欧美在线看| 男人的天堂久久| 黄污网站在线观看| 久久久久久久激情| 涩涩涩999| 成人欧美一区二区| 国产精品日韩欧美| 国产精品久久久| 国产一级精品在线| 成人欧美亚洲| 91九色国产在线| 欧美午夜片欧美片在线观看| 日韩在线黄色| 激情视频免费| 国产精品高潮呻吟视频| 亚洲精品一区二区三区四区五区| 国产成人综合亚洲| 亚洲人成亚洲人成在线观看| 精品国产乱码久久久久久樱花| 免费人成在线观看视频播放| 日韩一区二区av| 国产婷婷一区二区| 亚洲精品蜜桃乱晃| 日韩专区一区二区| 精品国产_亚洲人成在线| 精品国产电影一区二区| 国产成人午夜99999| 96视频在线观看欧美| 97视频免费| 国产精品久久国产三级国电话系列 | 欧美日韩小视频| 久久亚洲美女| 日韩免费电影| 亚洲另类第一页| 超碰97在线资源| 亚洲欧美综合精品久久成人| 91麻豆.com| 少妇精品久久久一区二区| 麻豆av电影在线观看| 天天做天天爱天天高潮| 午夜精品免费视频| 欧美日本高清视频在线观看| av影院午夜一区| 欧美激情理论| 乱馆动漫1~6集在线观看| 成人免费xx| 日本不卡高清视频一区| 欧美高清视频免费观看| 欧美综合天天夜夜久久| 九九九久久久精品| 思热99re视热频这里只精品| 久久综合之合合综合久久| 北条麻妃av高潮尖叫在线观看| www 成人av com| www.日韩av.com| 午夜精品一区二区三区电影天堂| 免费高清不卡av| 妖精视频一区二区三区| 草草视频在线观看| 一区二区三区区四区播放视频在线观看 | 性欧美孕妇孕交| 国产四区在线观看| 国产成人精品久久亚洲高清不卡| 91精品国产日韩91久久久久久| 久久久99免费| 欧美a级理论片| 成人在线丰满少妇av| 97成人超碰| 98在线视频| 国内av免费| 久久久性生活视频| 久久久水蜜桃| 国产精品wwww| 中文国产成人精品| 欧美精品一级二级| 亚洲欧美日韩久久精品| 成人av在线资源网站| 一本一本久久| 国产亚洲一区二区三区不卡| av免费在线一区| 免费a级人成a大片在线观看| av成人网在线| 黄色成人在线看| 亚洲欧洲国产精品久久| 成人免费福利在线| 国外视频精品毛片| 少妇高潮 亚洲精品| 亚洲第一视频网站| 欧美体内谢she精2性欧美| 中文字幕中文字幕中文字幕亚洲无线| 国产揄拍国内精品对白| 久久精品91| 好吊一区二区三区| 日韩欧美中文| 色天下一区二区三区| 国产95亚洲| 色综合一区二区日本韩国亚洲| 欧产日产国产精品视频| 三级网站视频在在线播放|