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

尚融寶14-集成redis緩存

這篇具有很好參考價值的文章主要介紹了尚融寶14-集成redis緩存。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

目錄

一、簡介

1、場景

2、RedisTemplate

二、引入Redis

1、項(xiàng)目中集成Redis

2、添加Redis連接配置

3、啟動Redis服務(wù)

三、測試RedisTemplate

1、存值測試

2、Redis配置文件

3、取值測試

四、將數(shù)據(jù)字典存入redis


一、簡介

1、場景

由于數(shù)據(jù)字典的變化不是很頻繁,而且系統(tǒng)對數(shù)據(jù)字典的訪問較頻繁,所以我們有必要把數(shù)據(jù)字典的數(shù)據(jù)存入緩存,減少數(shù)據(jù)庫壓力和提高訪問速度。這里,我們使用Redis作為系統(tǒng)的分布式緩存中間件。

2、RedisTemplate

在Spring Boot項(xiàng)目中中,默認(rèn)集成Spring Data Redis,Spring Data Redis針對Redis提供了非常方便的操作模版RedisTemplate,并且可以進(jìn)行連接池自動管理。

二、引入Redis

1、項(xiàng)目中集成Redis

service-base模塊中添加redis依賴,Spring Boot 2.0以上默認(rèn)通過commons-pool2連接池連接Redis
<!-- spring boot redis緩存引入 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 緩存連接池-->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

<!-- redis 存儲 json序列化 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

2、添加Redis連接配置

service-core?的 application.yml 中添加如下配置

#spring: 
  redis:
    host: 192.168.100.100
    port: 6379
    database: 0
    password: 123456 #默認(rèn)為空
    timeout: 3000ms #最大等待時間,超時則拋出異常,否則請求一直等待
    lettuce:
      pool:
        max-active: 20  #最大連接數(shù),負(fù)值表示沒有限制,默認(rèn)8
        max-wait: -1    #最大阻塞等待時間,負(fù)值表示沒限制,默認(rèn)-1
        max-idle: 8     #最大空閑連接,默認(rèn)8
        min-idle: 0     #最小空閑連接,默認(rèn)0

3、啟動Redis服務(wù)

遠(yuǎn)程連接Linux服務(wù)器,這里本地使用centos虛擬機(jī)上的redis

#啟動服務(wù)
cd /usr/local/redis-5.0.7
bin/redis-server redis.conf

三、測試RedisTemplate

1、存值測試

test中創(chuàng)建測試類RedisTemplateTests

@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTemplateTests {
    @Resource
    private RedisTemplate redisTemplate;
    @Resource
    private DictMapper dictMapper;
    @Test
    public void saveDict(){
        Dict dict = dictMapper.selectById(1);
        //向數(shù)據(jù)庫中存儲string類型的鍵值對, 過期時間5分鐘
        redisTemplate.opsForValue().set("dict", dict, 5, TimeUnit.MINUTES);
    }
}

發(fā)現(xiàn)RedisTemplate默認(rèn)使用了JDK的序列化方式存儲了key和value,可讀性差

尚融寶14-集成redis緩存

?

2、Redis配置文件

service-base?中添加RedisConfig,我們可以在這個配置文件中配置Redis序列化方案

@Configuration
public class RedisConfig {


    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) {

        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        //首先解決key的序列化方式
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringRedisSerializer);

        //解決value的序列化方式
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);

        //序列化時將類的數(shù)據(jù)類型存入json,以便反序列化的時候轉(zhuǎn)換成正確的類型
        ObjectMapper objectMapper = new ObjectMapper();
        //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);

        // 解決jackson2無法反序列化LocalDateTime的問題
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.registerModule(new JavaTimeModule());

        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);


        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }
}

再次測試,key使用了字符串存儲,value使用了json存儲

尚融寶14-集成redis緩存

3、取值測試

@Test
public void getDict(){
    Dict dict = (Dict)redisTemplate.opsForValue().get("dict");
    System.out.println(dict);
}

四、將數(shù)據(jù)字典存入redis

DictServiceImpl

注意:當(dāng)redis服務(wù)器宕機(jī)時,我們不要拋出異常,要正常的執(zhí)行后面的流程,使業(yè)務(wù)可以正常的運(yùn)行

@Resource
private RedisTemplate redisTemplate;

@Override
public List<Dict> listByParentId(Long parentId) {

    //先查詢redis中是否存在數(shù)據(jù)列表
    List<Dict> dictList = null;
    try {
        dictList = (List<Dict>)redisTemplate.opsForValue().get("srb:core:dictList:" + parentId);
        if(dictList != null){
            log.info("從redis中取值");
            return dictList;
        }
    } catch (Exception e) {
        log.error("redis服務(wù)器異常:" + ExceptionUtils.getStackTrace(e));//此處不拋出異常,繼續(xù)執(zhí)行后面的代碼
    }

    log.info("從數(shù)據(jù)庫中取值");
    dictList = baseMapper.selectList(new QueryWrapper<Dict>().eq("parent_id", parentId));
    dictList.forEach(dict -> {
        //如果有子節(jié)點(diǎn),則是非葉子節(jié)點(diǎn)
        boolean hasChildren = this.hasChildren(dict.getId());
        dict.setHasChildren(hasChildren);
    });

    //將數(shù)據(jù)存入redis
    try {
        redisTemplate.opsForValue().set("srb:core:dictList:" + parentId, dictList, 5, TimeUnit.MINUTES);
        log.info("數(shù)據(jù)存入redis");
    } catch (Exception e) {
        log.error("redis服務(wù)器異常:" + ExceptionUtils.getStackTrace(e));//此處不拋出異常,繼續(xù)執(zhí)行后面的代碼
    }
    return dictList;
}

集成redis總結(jié)

(1)導(dǎo)入相關(guān)依賴;

(2)配置redis連接信息;

(3)測試連接,取值測試,存值測試;

(4)根據(jù)自己的需要配置序列化器,否則默認(rèn)使用jdk的序列化器。

redis業(yè)務(wù)總結(jié):

(1)首先查詢redis中有無對應(yīng)的緩存信息,有的話取出直接返回,沒有執(zhí)行(2),如果redis因?yàn)槟撤N原因連接不上比如宕機(jī),此時打印錯誤日志,繼續(xù)查詢數(shù)據(jù)庫;

(2)沒有的話查詢數(shù)據(jù)庫,將數(shù)據(jù)存放進(jìn)redis并返回數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-402440.html

到了這里,關(guān)于尚融寶14-集成redis緩存的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 尚融寶19-Nuxt.js入門

    尚融寶19-Nuxt.js入門

    目錄 一、搜索引擎優(yōu)化 1、什么是SEO 2、搜索引擎工作流程 二、服務(wù)端渲染和客戶端渲染 1、什么是服務(wù)端渲染 2、什么是客戶端渲染 3、兩種方式各有什么優(yōu)缺點(diǎn)?? 三、Nuxt.js 1、Nuxt.js介紹 2、Nuxt.js服務(wù)器端渲染 四、安裝和運(yùn)行 五、頁面、導(dǎo)航和路由 1、頁面 2、導(dǎo)航 3、自

    2023年04月16日
    瀏覽(24)
  • 尚融寶10-Excel數(shù)據(jù)批量導(dǎo)入

    尚融寶10-Excel數(shù)據(jù)批量導(dǎo)入

    目錄 一、數(shù)據(jù)字典 (一)、什么是數(shù)據(jù)字典 (二)、數(shù)據(jù)字典的設(shè)計(jì) 二、Excel數(shù)據(jù)批量導(dǎo)入 (一)后端接口 1、添加依賴 2、創(chuàng)建Excel實(shí)體類 3、創(chuàng)建監(jiān)聽器 4、Mapper層批量插入 5、Service層創(chuàng)建監(jiān)聽器實(shí)例 6、controller層接受客戶端請求 7、添加mapper發(fā)布配置 8、Swagger接口測試

    2023年04月10日
    瀏覽(20)
  • 尚融寶20-實(shí)現(xiàn)用戶注冊和用戶認(rèn)證

    尚融寶20-實(shí)現(xiàn)用戶注冊和用戶認(rèn)證

    目錄 一、需求 二、前端整合發(fā)送驗(yàn)證碼 三、實(shí)現(xiàn)用戶注冊 1、創(chuàng)建VO對象 2、定義常量 3、引入MD5工具類 4、Controller 5、Service 6、前端整合 四、實(shí)現(xiàn)用戶登錄 1、后端整合JWT 2、前端整合 五、校驗(yàn)用戶登錄 1、后端 2、前端 ? 點(diǎn)擊獲取驗(yàn)證碼后先對手機(jī)號進(jìn)行驗(yàn)證是否為空,其

    2023年04月21日
    瀏覽(21)
  • 尚融寶25-投資列表展示以及實(shí)現(xiàn)充值功能

    尚融寶25-投資列表展示以及實(shí)現(xiàn)充值功能

    目錄 一、展示投資列表 (一)需求 (二)后端 (三)前端 二、充值功能 (一)需求 1、需求描述 2、流程 (二)充值 1、后端 2、前端 (三)回調(diào)接口 1、定義回調(diào)接口 2、增加交易流水 (四)接口調(diào)用冪等性 1、接口冪等性原則 2、解決方案 標(biāo)的形成后,客戶可在客戶端

    2024年02月06日
    瀏覽(24)
  • 尚融寶13-后臺管理系統(tǒng)前端架構(gòu)梳理

    尚融寶13-后臺管理系統(tǒng)前端架構(gòu)梳理

    目錄 一、程序入口 (一)入口頁面 index.html (二)?入口js腳本:src/main.js (三)頂層組件:src/App.vue (四)路由:src/router/index.js? 查看源代碼 這正是srb-admin/public/index.html ? ?我們進(jìn)入積分等級列表,查看源代碼會發(fā)現(xiàn)仍然是index.html中的代碼 ?那么它是怎么實(shí)現(xiàn)頁面的不同

    2023年04月11日
    瀏覽(21)
  • redis(14):緩存雪崩、擊穿、穿透及其處理方式

    redis(14):緩存雪崩、擊穿、穿透及其處理方式

    1 Redis 緩存過程 通常后端會采用Mysql等磁盤數(shù)據(jù)庫,可以持久化但是訪問慢,高并發(fā)時性能差,需要設(shè)置Nosql內(nèi)存型數(shù)據(jù)庫緩存:Redis等; Redis 數(shù)據(jù)庫運(yùn)行在 內(nèi)存 中,因此他的查詢速度比 MySql 快的多 。所以我們會把一些用戶經(jīng)常查詢的數(shù)據(jù)放在 Redis 中,當(dāng) Redis 有的時候就直

    2024年01月16日
    瀏覽(16)
  • 【Redis系列】Spring Boot 集成 Redis 實(shí)現(xiàn)緩存功能

    【Redis系列】Spring Boot 集成 Redis 實(shí)現(xiàn)緩存功能

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年04月10日
    瀏覽(95)
  • Redis布隆過濾器的原理和應(yīng)用場景,解決緩存穿透

    Redis布隆過濾器的原理和應(yīng)用場景,解決緩存穿透

    目錄 一、redis 二、布隆過濾器 三、緩存穿透問題 四、布隆過濾器解決緩存穿透 ? Redis(Remote Dictionary Server)是一種開源的內(nèi)存數(shù)據(jù)存儲系統(tǒng),也是一個使用鍵值對(Key-Value)方式的高性能數(shù)據(jù)庫。Redis以其快速、靈活和豐富的數(shù)據(jù)結(jié)構(gòu)而聞名,常用于緩存、隊(duì)列、實(shí)時數(shù)據(jù)

    2024年02月13日
    瀏覽(31)
  • springboot 集成caffeine單體緩存兩種方式及算法簡介 (注解/手動)

    ? ? ? ?Caffeine 是基于 JAVA 8 的高性能緩存庫。并且在 spring5 (springboot 2.x) 后,spring 官方放棄了 Guava,而使用了性能更優(yōu)秀的 Caffeine 作為默認(rèn)緩存組件。 ? ? ? ?Caffeine 因?yàn)槭褂昧? Window-TinyLFU ?緩存淘汰策略,提供了一個 近乎最佳的命中率 。綜合了?LRU?和 LFU 算法的長處,

    2024年02月03日
    瀏覽(23)
  • 【SpringBoot3】Spring Boot 3.0 集成 Redis 緩存

    Redis緩存是一個開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。它主要用于作為數(shù)據(jù)庫、緩存和消息中間件,以快速讀寫和豐富的數(shù)據(jù)結(jié)構(gòu)支持而著稱。 在應(yīng)用程序和數(shù)據(jù)庫之間,Redis緩存作為一個中間層起著關(guān)鍵

    2024年02月21日
    瀏覽(90)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包