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

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

這篇具有很好參考價值的文章主要介紹了【Redis系列】Spring Boot 集成 Redis 實現(xiàn)緩存功能。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。
springboot redis緩存配置,s7 redis緩存,緩存,redis,spring boot

  • 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老
  • 導(dǎo)航
    • 檀越劍指大廠系列:全面總結(jié) java 核心技術(shù)點,如集合,jvm,并發(fā)編程 redis,kafka,Spring,微服務(wù),Netty 等
    • 常用開發(fā)工具系列:羅列常用的開發(fā)工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 數(shù)據(jù)庫系列:詳細(xì)總結(jié)了常用數(shù)據(jù)庫 mysql 技術(shù)點,以及工作中遇到的 mysql 問題等
    • 懶人運維系列:總結(jié)好用的命令,解放雙手不香嗎?能用一個命令完成絕不用兩個操作
    • 數(shù)據(jù)結(jié)構(gòu)與算法系列:總結(jié)數(shù)據(jù)結(jié)構(gòu)和算法,不同類型針對性訓(xùn)練,提升編程思維,劍指大廠

非常期待和您一起在這個小小的網(wǎng)絡(luò)世界里共同探索、學(xué)習(xí)和成長。?????? ?? 歡迎訂閱本專欄 ??

摘要:本文介紹了如何在 Spring Boot 項目中集成 Redis,并利用 Redis 實現(xiàn)緩存功能。文章包括配置 Redis 連接、使用 Jedis 和 RedisTemplate 兩種方式進(jìn)行操作的示例代碼,并探討了它們的優(yōu)缺點。


隨著互聯(lián)網(wǎng)應(yīng)用的不斷發(fā)展,對于數(shù)據(jù)的高效讀寫和緩存處理變得越來越重要。而 Redis 作為一款高性能的緩存數(shù)據(jù)庫,被廣泛應(yīng)用于各種大型系統(tǒng)中。本文將介紹如何在 Spring Boot 項目中集成 Redis,并利用 Redis 實現(xiàn)緩存功能。

springboot redis緩存配置,s7 redis緩存,緩存,redis,spring boot

一、配置 Redis 連接

在 Spring Boot 項目中,我們可以通過配置文件來指定 Redis 的連接參數(shù)。以 YAML 格式的配置文件為例,示例如下:

spring:
  redis:
    database: 3
    password: xxxx
    timeout: 60000 #連接超時
    host: 10.xxx.14.40
    port: 6379
    jedis:
      pool:
        max-idle: 6 #最大空閑數(shù)
        max-active: 100 #最大連接數(shù)
        min-idle: 2 #最小空閑數(shù)

以上配置了 Redis 的數(shù)據(jù)庫編號、密碼、連接超時時間以及連接池的相關(guān)參數(shù)。

二、使用 Jedis 操作 Redis

Jedis 是 Java 操作 Redis 的一款常用客戶端庫。下面是使用 Jedis 進(jìn)行操作的示例代碼。

首先,我們需要創(chuàng)建一個 JedisConfig 類,用于配置 Jedis 連接池:

@Slf4j
@Configuration
public class JedisConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.timeout}")
    private Integer timeout;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.database}")
    private Integer database;

    @Value("${spring.redis.jedis.pool.max-active}")
    private int maxActive;

    @Value("${spring.redis.jedis.pool.max-idle}")
    private int maxIdle;

    @Value("${spring.redis.jedis.pool.min-idle}")
    private int minIdle;

    @Bean
    public JedisPool jedisPool() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMinIdle(minIdle);
        jedisPoolConfig.setMaxTotal(maxActive);
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, "default", password, database);
        log.info("JedisPool Connection Success:" + host + "\t" + port);
        return jedisPool;
    }
}

在上述代碼中,我們通過@Configuration 注解將 JedisConfig 類標(biāo)識為配置類,并通過@Bean 注解將 jedisPool 方法返回的 JedisPool 對象注冊為 Spring 的 Bean。

接下來,我們可以創(chuàng)建一個 JedisUtils 類,用于獲取 Jedis 資源和釋放連接:

@Component
public class JedisUtils {

    @Autowired
    private JedisPool jedisPool;

    /**
     * 獲取Jedis資源
     */
    public Jedis getJedis() {
        return jedisPool.getResource();
    }

    /**
     * 釋放Jedis連接
     */
    public void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }
}

在上述代碼中,我們通過@Autowired 注解將 JedisPool 對象注入到 JedisUtils 類中。通過調(diào)用 getJedis 方法,我們可以獲取一個 Jedis 資源對象,用于后續(xù)的操作。在完成操作后,調(diào)用 close 方法釋放 Jedis 連接,以便連接可以被連接池重復(fù)利用。

接下來,我們可以創(chuàng)建一個 JedisClient 類,用于具體的操作 Redis:

@Slf4j
@Component
public class JedisClient {

    @Autowired
    private JedisUtils jedisUtils;

    /**
     * 根據(jù)key查詢value值
     */
    public String get(String key) {
        Jedis jedis = jedisUtils.getJedis();
        try {
            if (!jedis.exists(key)) {
                log.info("key:{}在Redis中查不到數(shù)據(jù).", key);
            } else {
                return jedis.get(key);
            }
        } catch (Exception e) {
           log.error("Jedis get操作出錯", e);
        } finally {
            jedisUtils.close(jedis);
        }
        return null;
    }

    /**
     * 設(shè)置key-value
     */
    public void set(String key, String value) {
        Jedis jedis = jedisUtils.getJedis();
        try {
            jedis.set(key, value);
        } catch (Exception e) {
            log.error("Jedis set操作出錯", e);
        } finally {
            jedisUtils.close(jedis);
        }
    }

    /**
     * 刪除key
     */
    public void delete(String key) {
        Jedis jedis = jedisUtils.getJedis();
        try {
            jedis.del(key);
        } catch (Exception e) {
            log.error("Jedis delete操作出錯", e);
        } finally {
            jedisUtils.close(jedis);
        }
    }
}

在上述代碼中,我們通過@Autowired 注解將 JedisUtils 對象注入到 JedisClient 類中,以獲取 Jedis 資源。然后,我們可以定義一些常見的 Redis 操作方法,例如 get、set 和 delete。

最后,我們可以在需要使用緩存的地方調(diào)用 JedisClient 類進(jìn)行 Redis 操作。例如:

@RestController
public class UserController {

    @Autowired
    private JedisClient jedisClient;

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") String id) {
        String key = "user:" + id;
        String value = jedisClient.get(key);
        if (value != null) {
            return JSON.parseObject(value, User.class);
        } else {
            User user = userService.getUserById(id);
            if (user != null) {
                jedisClient.set(key, JSON.toJSONString(user));
            }
            return user;
        }
    }
}

在上述代碼中,我們首先根據(jù)緩存的 key 值查詢 Redis 中是否存在對應(yīng)的 value 值。如果存在,則直接從 Redis 中獲取緩存數(shù)據(jù)。如果不存在,則從數(shù)據(jù)庫中獲取數(shù)據(jù),并將數(shù)據(jù)存入 Redis 中以供下次使用。

三、使用 RedisTemplate 操作 Redis

除了使用 Jedis 進(jìn)行 Redis 操作外,Spring Boot 還提供了另一種方式:使用 RedisTemplate。下面是使用 RedisTemplate 進(jìn)行操作的示例代碼。

springboot redis緩存配置,s7 redis緩存,緩存,redis,spring boot

首先,我們需要創(chuàng)建一個 RedisConfig 類,用于配置 RedisTemplate:

@Configuration
public class RedisConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.timeout}")
    private Integer timeout;

    @Value("${spring.redis.password}")
    private String password;

    @Value("${spring.redis.database}")
    private Integer database;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port);
        config.setDatabase(database);
        config.setPassword(RedisPassword.of(password));

        LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(config);
        connectionFactory.setTimeout(timeout);

        return connectionFactory;
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);

        // 設(shè)置key和value的序列化方式
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        return redisTemplate;
    }
}

在上述代碼中,我們通過@Configuration 注解將 RedisConfig 類標(biāo)識為配置類,并通過@Bean 注解分別注冊了 redisConnectionFactory 和 redisTemplate 對象。在 redisTemplate 方法中,我們設(shè)置了 key 和 value 的序列化方式,這里使用了 StringRedisSerializer 和 GenericJackson2JsonRedisSerializer。

接下來,我們可以在需要使用緩存的地方注入 RedisTemplate 對象,并調(diào)用相應(yīng)的方法進(jìn)行 Redis 操作。例如:

@RestController
public class UserController {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") String id) {
        String key = "user:" + id;
        User user = (User) redisTemplate.opsForValue().get(key);
        if (user != null) {
            return user;
        } else {
            user = userService.getUserById(id);
            if (user != null) {
                redisTemplate.opsForValue().set(key, user);
            }
            return user;
        }
    }
}

在上述代碼中,我們通過 RedisTemplate 的 opsForValue 方法獲取 ValueOperations 對象,并調(diào)用 get 方法從 Redis 中獲取緩存數(shù)據(jù)。如果數(shù)據(jù)不存在,則從數(shù)據(jù)庫中

覺得有用的話點個贊 ???? 唄。
??????本人水平有限,如有紕漏,歡迎各位大佬評論批評指正!??????

??????如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!?? ?? ??

??????Stay Hungry Stay Foolish 道阻且長,行則將至,讓我們一起加油吧!??????

springboot redis緩存配置,s7 redis緩存,緩存,redis,spring boot文章來源地址http://www.zghlxwxcb.cn/news/detail-846742.html

到了這里,關(guān)于【Redis系列】Spring Boot 集成 Redis 實現(xiàn)緩存功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 使用Spring Boot實現(xiàn)Redis鍵過期回調(diào)功能

    使用Spring Boot實現(xiàn)Redis鍵過期回調(diào)功能

    當(dāng)使用Redis作為緩存或數(shù)據(jù)存儲的時候,有時候需要在鍵過期時執(zhí)行一些特定的操作,比如清除相關(guān)數(shù)據(jù)或發(fā)送通知。在Spring Boot中,可以通過實現(xiàn) RedisMessageListener 接口來實現(xiàn)Redis鍵過期回調(diào)功能。下面是一個實現(xiàn)Redis鍵過期回調(diào)功能的Spring Boot應(yīng)用的示例: 步驟一:引入依賴

    2024年02月16日
    瀏覽(22)
  • Spring Data Redis + RabbitMQ - 基于 string 實現(xiàn)緩存、計數(shù)功能(同步數(shù)據(jù))

    Spring Data Redis + RabbitMQ - 基于 string 實現(xiàn)緩存、計數(shù)功能(同步數(shù)據(jù))

    目錄 一、Spring Data Redis 1.1、緩存功能 1.1.1、分析 1.1.2、案例實現(xiàn) 1.1.3、效果演示 1.2、計數(shù)功能(Redis + RabbitMQ) 1.2.1、分析 1.2.2、案例實現(xiàn) 1.1.1、分析 使用 redis 作為緩存, MySQL 作為數(shù)據(jù)庫組成的架構(gòu) 整體思路: 應(yīng)用服務(wù)器訪問數(shù)據(jù)的時候,先查詢 Redis,如果 Redis 上存在該

    2024年02月05日
    瀏覽(21)
  • Spring Boot 集成 ElasticSearch:實現(xiàn)模糊查詢、批量 CRUD、排序、分頁和高亮功能

    Spring Boot 集成 ElasticSearch:實現(xiàn)模糊查詢、批量 CRUD、排序、分頁和高亮功能

    文章來源:https://blog.csdn.net/qq_52355487/article/details/123805713 在pom.xml里加入如下依賴 非常重要:檢查依賴版本是否與你當(dāng)前所用的版本是否一致,如果不一致,會連接失?。?1.創(chuàng)建、判斷存在、刪除索引 2.對文檔的CRUD 創(chuàng)建文檔: 注意:如果添加時不指定文檔ID,他就會隨機(jī)生成

    2024年02月04日
    瀏覽(26)
  • Spring Boot進(jìn)階(48):【實戰(zhàn)教程】SpringBoot集成WebSocket輕松實現(xiàn)實時消息推送

    Spring Boot進(jìn)階(48):【實戰(zhàn)教程】SpringBoot集成WebSocket輕松實現(xiàn)實時消息推送

    ????????WebSocket是一種新型的通信協(xié)議,它可以在客戶端與服務(wù)器端之間實現(xiàn)雙向通信,具有低延遲、高效性等特點,適用于實時通信場景。在SpringBoot應(yīng)用中,集成WebSocket可以方便地實現(xiàn)實時通信功能,如即時聊天、實時數(shù)據(jù)傳輸?shù)取?????????本文將介紹如何在Sprin

    2024年02月09日
    瀏覽(97)
  • Spring Boot進(jìn)階(67):高性能緩存!使用Spring Boot輕松集成Memcached。

    Spring Boot進(jìn)階(67):高性能緩存!使用Spring Boot輕松集成Memcached。

    ????????Memcached是一款高性能的分布式內(nèi)存對象緩存系統(tǒng),主要用于動態(tài)Web應(yīng)用中減輕數(shù)據(jù)庫負(fù)載。Spring Boot是一款基于Spring框架的快速開發(fā)框架,集成了大量的常用技術(shù)和組件,方便開發(fā)者快速搭建項目。將兩者結(jié)合起來,可以提高Web應(yīng)用的性能,并減少數(shù)據(jù)庫的壓力。

    2024年02月07日
    瀏覽(30)
  • Spring Boot進(jìn)階(49):SpringBoot之集成WebSocket實現(xiàn)前后端通信 | 超級詳細(xì),建議收藏

    Spring Boot進(jìn)階(49):SpringBoot之集成WebSocket實現(xiàn)前后端通信 | 超級詳細(xì),建議收藏

    ????????在上一期,我對WebSocket進(jìn)行了基礎(chǔ)及理論知識普及學(xué)習(xí),WebSocket是一種基于TCP協(xié)議實現(xiàn)的全雙工通信協(xié)議,使用它可以實現(xiàn)實時通信,不必?fù)?dān)心HTTP協(xié)議的短連接問題。Spring Boot作為一款微服務(wù)框架,也提供了輕量級的WebSocket集成支持,本文將介紹如何在Spring Boot項

    2024年02月14日
    瀏覽(27)
  • Spring Boot進(jìn)階(68):如何用SpringBoot輕松實現(xiàn)定時任務(wù)?集成Quartz來幫你!(附源碼)

    Spring Boot進(jìn)階(68):如何用SpringBoot輕松實現(xiàn)定時任務(wù)?集成Quartz來幫你!(附源碼)

    ????????Quartz是一個非常流行的開源調(diào)度框架,它提供了許多強(qiáng)大的功能,如定時任務(wù)調(diào)度、作業(yè)管理、任務(wù)持久化等。而SpringBoot是目前Java開發(fā)中非常流行的框架之一,其對各種開源框架集成非常方便。本篇文章將介紹如何在SpringBoot中集成Quartz,以便于更好的管理和調(diào)度

    2024年02月07日
    瀏覽(26)
  • 【Redis(8)】Spring Boot整合Redis和Guava,解決緩存穿透、緩存擊穿、緩存雪崩等緩存問題

    在緩存技術(shù)的挑戰(zhàn)及設(shè)計方案我們介紹了使用緩存技術(shù)可能會遇到的一些問題,那么如何解決這些問題呢? 在構(gòu)建緩存系統(tǒng)時,Spring Boot和Redis的結(jié)合提供了強(qiáng)大的支持,而Guava的 LoadingCache 則為緩存管理帶來了便捷的解決方案。下面我將介紹如何通過整合Spring Boot、Redis和Gu

    2024年04月22日
    瀏覽(24)
  • Spring Boot整合Redis的高效數(shù)據(jù)緩存實踐

    Spring Boot整合Redis的高效數(shù)據(jù)緩存實踐

    引言 在現(xiàn)代Web應(yīng)用開發(fā)中,數(shù)據(jù)緩存是提高系統(tǒng)性能和響應(yīng)速度的關(guān)鍵。Redis作為一種高性能的緩存和數(shù)據(jù)存儲解決方案,被廣泛應(yīng)用于各種場景。本文將研究如何使用Spring Boot整合Redis,通過這個強(qiáng)大的緩存工具提高應(yīng)用的性能和可伸縮性。 整合redis,需要先安裝redis Redis?

    2024年01月22日
    瀏覽(93)
  • Spring Boot Security認(rèn)證:Redis緩存用戶信息

    Spring Boot Security認(rèn)證:Redis緩存用戶信息

    ??歡迎來到架構(gòu)設(shè)計專欄~Spring Boot Security認(rèn)證:Redis緩存用戶信息 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計 ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實戰(zhàn)項目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,如

    2024年02月04日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包