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

SpringBoot 如何使用 Redis 作為緩存?

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot 如何使用 Redis 作為緩存?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

SpringBoot 如何使用 Redis 作為緩存?

引言

在今天的互聯(lián)網(wǎng)應(yīng)用中,緩存是一個(gè)非常重要的概念。緩存可以減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān),提高系統(tǒng)的性能。Redis 是一個(gè)非常流行的內(nèi)存數(shù)據(jù)庫(kù),它可以用作緩存,提供快速的讀寫(xiě)速度和高可用性。在本文中,我們將介紹如何在 SpringBoot 中使用 Redis 作為緩存。

SpringBoot 如何使用 Redis 作為緩存?

Redis 簡(jiǎn)介

Redis 是一個(gè)高性能的鍵值對(duì)存儲(chǔ)系統(tǒng),它支持多種數(shù)據(jù)結(jié)構(gòu),包括字符串、哈希表、列表、集合、有序集合等。Redis 的優(yōu)點(diǎn)包括:

  • 快速:Redis 是一個(gè)基于內(nèi)存的數(shù)據(jù)庫(kù),讀寫(xiě)速度非???。
  • 可擴(kuò)展:Redis 支持分布式架構(gòu),可以通過(guò)橫向擴(kuò)展來(lái)提高性能。
  • 多樣性:Redis 支持多種數(shù)據(jù)結(jié)構(gòu),可以應(yīng)對(duì)不同的應(yīng)用場(chǎng)景。
  • 持久化:Redis 支持?jǐn)?shù)據(jù)持久化,可以保證數(shù)據(jù)不會(huì)丟失。

SpringBoot 集成 Redis

在 SpringBoot 中使用 Redis,我們需要添加 Redis 的依賴(lài)。在 pom.xml 文件中添加以下依賴(lài):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

添加依賴(lài)后,我們需要配置 Redis 的連接信息。在 application.properties 中添加以下配置:

spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=

這里的配置是連接本地的 Redis 服務(wù),如果 Redis 服務(wù)在其他機(jī)器上,需要修改 host 和 port 的值。如果 Redis 服務(wù)需要密碼認(rèn)證,需要設(shè)置 password 的值。

RedisTemplate

SpringBoot 提供了 RedisTemplate 類(lèi)來(lái)操作 Redis。RedisTemplate 是一個(gè)泛型類(lèi),可以操作多種數(shù)據(jù)類(lèi)型。使用 RedisTemplate,我們可以將對(duì)象序列化為 byte 數(shù)組,然后存儲(chǔ)到 Redis 中。RedisTemplate 的配置如下:

@Configuration
public class RedisConfig {
 
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
 
        // 使用 Jackson2JsonRedisSerializer 來(lái)序列化和反序列化 Redis 的 value 值(默認(rèn)使用 JDK 的序列化方式)
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        serializer.setObjectMapper(objectMapper);
 
        // 使用 StringRedisSerializer 來(lái)序列化和反序列化 Redis 的 key 值
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(serializer);
 
        // 設(shè)置 hash key 和 value 序列化模式
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(serializer);
 
        template.afterPropertiesSet();
        return template;
    }
}

在上面的配置中,我們使用 Jackson2JsonRedisSerializer 來(lái)序列化和反序列化 Redis 的 value 值。同時(shí),我們也需要使用 StringRedisSerializer 來(lái)序列化和反序列化 Redis 的 key 值。

使用 RedisTemplate

在 SpringBoot 中使用 RedisTemplate,我們可以通過(guò)注入 RedisTemplate 來(lái)操作 Redis。以下是一些常見(jiàn)的操作方法:

添加緩存

@Autowired
private RedisTemplate<String, Object> redisTemplate;

public void add(String key, Object value) {
    redisTemplate.opsForValue().set(key, value);
}

在上面的代碼中,我們使用 opsForValue() 方法獲取 RedisTemplate 的 ValueOperations 對(duì)象,然后使用 set 方法添加緩存。

獲取緩存

@Autowired
private RedisTemplate<String, Object> redisTemplate;

public Object get(String key) {
    return redisTemplate.opsForValue().get(key);
}

在上面的代碼中,我們使用 opsForValue() 方法獲取 RedisTemplate 的 ValueOperations 對(duì)象,然后使用 get 方法獲取緩存。

刪除緩存

@Autowired
private RedisTemplate<String, Object> redisTemplate;

public void delete(String key) {
    redisTemplate.delete(key);
}

在上面的代碼中,我們使用 delete 方法刪除緩存。

設(shè)置過(guò)期時(shí)間

@Autowired
private RedisTemplate<String, Object> redisTemplate;

public void expire(String key, long timeout, TimeUnit timeUnit) {
    redisTemplate.expire(key, timeout, timeUnit);
}

在上面的代碼中,我們使用 expire 方法設(shè)置緩存的過(guò)期時(shí)間。

Redis 緩存注解

除了使用 RedisTemplate 來(lái)操作 Redis,我們還可以使用 SpringBoot 提供的緩存注解來(lái)實(shí)現(xiàn)緩存。SpringBoot 提供了 CacheManager 和 Cache 接口來(lái)管理緩存。我們可以使用 @EnableCaching 注解開(kāi)啟緩存功能,然后使用 @Cacheable、@CachePut、@CacheEvict 等注解來(lái)操作緩存。

@EnableCaching

首先,我們需要在 SpringBoot 應(yīng)用中開(kāi)啟緩存功能。使用 @EnableCaching 注解即可開(kāi)啟緩存功能。

@SpringBootApplication
@EnableCaching
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@Cacheable

@Cacheable 注解可以將方法的返回值緩存到 Redis 中,下次調(diào)用該方法時(shí),會(huì)先從 Redis 中獲取緩存,如果緩存不存在,則執(zhí)行方法,并將返回值緩存到 Redis 中。

@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
    // 執(zhí)行方法
}

在上面的代碼中,我們使用 @Cacheable 注解將 getUserById 方法的返回值緩存到名為 “users” 的緩存中,緩存的 key 是方法的參數(shù) id。如果緩存中已經(jīng)存在 key 是 id 的數(shù)據(jù),則直接返回緩存中的數(shù)據(jù),否則執(zhí)行方法并將返回值緩存到 Redis 中。

@CachePut

@CachePut 注解可以更新 Redis 中的緩存數(shù)據(jù),它會(huì)先執(zhí)行方法,然后將方法的返回值更新到 Redis 中的緩存數(shù)據(jù)中。

@CachePut(value = "users", key = "#user.id")
public User updateUser(User user) {
    // 更新用戶(hù)信息
    return user;
}

在上面的代碼中,我們使用 @CachePut 注解將 updateUser 方法的返回值更新到 Redis 中名為 “users” 的緩存中,緩存的 key 是 user 的 id 屬性。

@CacheEvict

@CacheEvict 注解可以刪除 Redis 中的緩存數(shù)據(jù)。

@CacheEvict(value = "users", key = "#id")
public void deleteUserById(Long id) {
    // 刪除用戶(hù)信息
}

在上面的代碼中,我們使用 @CacheEvict 注解刪除 Redis 中名為 “users” 的緩存中 key 是 id 的數(shù)據(jù)。

總結(jié)

在本文中,我們介紹了如何在 SpringBoot 中使用 Redis 作為緩存。我們學(xué)習(xí)了如何使用 RedisTemplate 和緩存注解來(lái)操作 Redis,包括添加緩存、獲取緩存、刪除緩存以及設(shè)置緩存過(guò)期時(shí)間。使用 Redis 作為緩存可以提高應(yīng)用的性能,減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān),同時(shí)也可以提高應(yīng)用的可擴(kuò)展性和可靠性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-514501.html

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

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

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

相關(guān)文章

  • Linux服務(wù)器使用Redis作為數(shù)據(jù)緩存,并用log4j2進(jìn)行日志記錄

    前言 個(gè)人網(wǎng)站使用Vue作為前端,SpringBoot作為后端,MySQL作為數(shù)據(jù)庫(kù),但前端每次請(qǐng)求都會(huì)從MySQL數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),而MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)是存儲(chǔ)于服務(wù)器磁盤(pán)中,所以響應(yīng)速度有一定影響。之前了解過(guò)一點(diǎn)Redis數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)于內(nèi)存中(也可以持久化于磁盤(pán)中),數(shù)

    2024年02月08日
    瀏覽(28)
  • redis作為緩存的選用及優(yōu)缺點(diǎn)

    Redis vs. Memcached: 持久化支持: Redis支持兩種持久化方式(RDB和AOF),而Memcached不支持持久化。這意味著Redis可以在服務(wù)器重啟后恢復(fù)數(shù)據(jù),而Memcached在重啟后數(shù)據(jù)會(huì)丟失。 數(shù)據(jù)結(jié)構(gòu): Redis的數(shù)據(jù)結(jié)構(gòu)更豐富,支持字符串、哈希表、列表、集合、有序集合等,而Memcached僅支持簡(jiǎn)

    2024年02月16日
    瀏覽(19)
  • redis(12):springboot使用redis注解做緩存

    redis(12):springboot使用redis注解做緩存

    1 新建springboot項(xiàng)目 ? 2 相關(guān)注解 @EnableCaching 在啟動(dòng)類(lèi)上加上注解啟動(dòng)緩存 #作用在你要緩存的數(shù)據(jù)上 @Cacheable(key=\\\"#id\\\",cacheNames=\\\"com.sxt.service.impl.MenuServiceImpl\\\") @Cacheput 解決臟讀 @CachEvict(解決臟讀) @Cacheconfig(全局的配置緩存) 3 修改yml

    2024年02月15日
    瀏覽(26)
  • springboot:緩存不止redis,學(xué)會(huì)使用本地緩存ehcache

    springboot:緩存不止redis,學(xué)會(huì)使用本地緩存ehcache

    隨著redis的普及,更多的同學(xué)對(duì)redis分布式緩存更加熟悉,但在一些實(shí)際場(chǎng)景中,其實(shí)并不需要用到redis,使用更加簡(jiǎn)單的本地緩存即可實(shí)現(xiàn)我們的緩存需求。 今天,我們一起來(lái)看看本地緩存組件ehcache ehcache是基于java開(kāi)發(fā)的本地緩存組件,無(wú)需單獨(dú)安裝部署,只要引入jar包就

    2024年02月01日
    瀏覽(27)
  • SpringBoot使用Redis實(shí)現(xiàn)分布式緩存

    SpringBoot使用Redis實(shí)現(xiàn)分布式緩存

    ?作者簡(jiǎn)介:2022年 博客新星 第八 。熱愛(ài)國(guó)學(xué)的Java后端開(kāi)發(fā)者,修心和技術(shù)同步精進(jìn)。 ??個(gè)人主頁(yè):Java Fans的博客 ??個(gè)人信條:不遷怒,不貳過(guò)。小知識(shí),大智慧。 ??當(dāng)前專(zhuān)欄:SpringBoot 框架從入門(mén)到精通 ?特色專(zhuān)欄:國(guó)學(xué)周更-心性養(yǎng)成之路 ??本文內(nèi)容:SpringBoot使用

    2023年04月09日
    瀏覽(20)
  • SpringBoot整合Redis、以及緩存穿透、緩存雪崩、緩存擊穿的理解分布式情況下如何添加分布式鎖 【續(xù)篇】

    SpringBoot整合Redis、以及緩存穿透、緩存雪崩、緩存擊穿的理解分布式情況下如何添加分布式鎖 【續(xù)篇】

    上一篇實(shí)現(xiàn)了單體應(yīng)用下如何上鎖,這一篇主要說(shuō)明如何在分布式場(chǎng)景下上鎖 上一篇地址:加鎖 需要注意的點(diǎn)是: 在上鎖和釋放鎖的過(guò)程中要保證 原子性操作 核心是上鎖和解鎖的過(guò)程 關(guān)于解鎖使用腳本參考:SET key value [EX seconds] [PX milliseconds] [NX|XX] 3.1 一個(gè)服務(wù)按照多個(gè)端口同時(shí)

    2023年04月10日
    瀏覽(29)
  • 【虹科干貨】Oracle與Redis Enterprise協(xié)同,作為企業(yè)緩存解決方案

    【虹科干貨】Oracle與Redis Enterprise協(xié)同,作為企業(yè)緩存解決方案

    單獨(dú)使用 Oracle作為企業(yè)緩存數(shù)據(jù)庫(kù)時(shí),會(huì)出現(xiàn)哪些問(wèn)題呢?使用Redis Enterprise與Oracle共同用作企業(yè)級(jí)緩存或副本數(shù)據(jù)庫(kù),會(huì)出現(xiàn)哪些喜人的提升呢?Orcle配合使用Redis Enterprise,為什么能夠打造更快、更高效、更具成本效益的現(xiàn)代企業(yè)數(shù)據(jù)庫(kù)呢? ? ? 文章速覽: ? Oracle為什么需

    2024年02月05日
    瀏覽(21)
  • springboot+redis+mysql+quartz-使用pipeline+lua技術(shù)將緩存數(shù)據(jù)定時(shí)更新到數(shù)據(jù)庫(kù)

    代碼講解:7.3點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫(kù)-Java程序整合pipeline+lua_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1Lg4y1w7U9 代碼: blogLike_schedule/like08 · xin麒/XinQiUtilsOrDemo - 碼云 - 開(kāi)源中國(guó) (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like08 數(shù)據(jù)庫(kù)表:

    2024年02月13日
    瀏覽(18)
  • springboot+redis+mysql+quartz-通過(guò)Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)

    springboot+redis+mysql+quartz-通過(guò)Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)

    代碼講解:6-點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫(kù)-pipeline+lua-優(yōu)化pipeline_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代碼: blogLike_schedule/like06 · xin麒/XinQiUtilsOrDemo - 碼云 - 開(kāi)源中國(guó) (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like06 數(shù)據(jù)庫(kù)表的

    2024年02月16日
    瀏覽(27)
  • springboot+redis+mysql+quartz-通過(guò)Java操作jedis定時(shí)使用lua腳本獲取緩存數(shù)據(jù)并更新數(shù)據(jù)庫(kù)

    springboot+redis+mysql+quartz-通過(guò)Java操作jedis定時(shí)使用lua腳本獲取緩存數(shù)據(jù)并更新數(shù)據(jù)庫(kù) 代碼講解:7.1點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫(kù)-Java整合lua_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1ZX4y1H7JT/ 代碼: blogLike_schedule/like07 · xin麒/XinQiUtilsOrDemo - 碼云 - 開(kāi)源中國(guó) (gitee.com) https://gitee

    2024年02月13日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包