最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成Redis之配置、序列化與持久化方式

 更新時(shí)間:2024年11月21日 08:52:40   作者:真心喜歡你吖  
本文介紹了Redis的基本概念、常用數(shù)據(jù)類(lèi)型及操作、SpringBoot整合Redis的方法、高級(jí)特性與安全性、性能優(yōu)化、測(cè)試與部署、數(shù)據(jù)一致性及版本更新等內(nèi)容,通過(guò)本文的學(xué)習(xí),讀者可以掌握Redis的使用方法,并在實(shí)際項(xiàng)目中發(fā)揮其優(yōu)勢(shì)

一、簡(jiǎn)介什么是Redis

Redis是一個(gè)開(kāi)源的、基于內(nèi)存的高性能鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù),支持多種數(shù)據(jù)結(jié)構(gòu)如字符串、哈希、列表、集合等。

它以其卓越的性能、高可用性和持久性而廣受歡迎。

為什么要使用Redis

Redis的使用可以解決以下問(wèn)題:

  1. 低延遲讀寫(xiě):提升用戶體驗(yàn)。
  2. 支撐海量數(shù)據(jù)和流量:適用于大數(shù)據(jù)和高流量的應(yīng)用。
  3. 大規(guī)模集群管理:簡(jiǎn)化分布式應(yīng)用的部署和管理。
  4. 成本考量:降低硬件、軟件和人力成本。

二、常用Redis類(lèi)型及操作

1. String類(lèi)型

介紹:最基本的數(shù)據(jù)存儲(chǔ)類(lèi)型,用于存儲(chǔ)單個(gè)數(shù)據(jù)。

基本操作

  • 添加/修改數(shù)據(jù):set key value
  • 獲取數(shù)據(jù):get key
  • 刪除:del key

2. Hash類(lèi)型

介紹:存儲(chǔ)鍵值對(duì)集合,適用于存儲(chǔ)對(duì)象。

基本操作

  • 添加/修改數(shù)據(jù):hset key field value
  • 獲取數(shù)據(jù):hget key field
  • 刪除數(shù)據(jù):hdel key field

3. List類(lèi)型

基本概念:存儲(chǔ)有序的數(shù)據(jù)集合。

基本操作

  • 添加/修改數(shù)據(jù):lpush key value(左側(cè)添加),rpush key value(右側(cè)添加)
  • 獲取數(shù)據(jù):lrange key start stop
  • 獲取并移除數(shù)據(jù):lpop key(左側(cè)移除),rpop key(右側(cè)移除)

4. Set類(lèi)型

基本介紹:存儲(chǔ)不重復(fù)的集合。

基本操作

  • 添加數(shù)據(jù):sadd key member
  • 獲取數(shù)據(jù):smembers key
  • 刪除數(shù)據(jù):srem key member

5. Sorted Set (zset)

概念:存儲(chǔ)可排序的集合。

基本操作

  • 添加數(shù)據(jù):zadd key score member
  • 獲取全部數(shù)據(jù):zrange key start stop
  • 刪除數(shù)據(jù):zrem key member

三、Spring Boot整合Redis

引入依賴

pom.xml中添加以下依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.6.0</version>
</dependency>

配置yaml

application.yml中配置Redis連接信息:

spring:
  redis:
    host: 自己的ip
    port: 自己的端口號(hào)  # 默認(rèn) 6379
    database: 0  # Redis使用的數(shù)據(jù)庫(kù)
    timeout: 18000  # 連接超時(shí)事件毫秒
    password: yourpassword  # 密碼(如果需要)
    lettuce:
      pool:
        max-active: 20  # 連接池最大連接數(shù)
        max-idle: 5  # 最大阻塞等待時(shí)間
        min-idle: 0  # 連接池最小空閑連接

RedisTemplate模版序列化配置

配置RedisTemplate以使用JSON序列化:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.util.Arrays;

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

Redis的Demo案例

以下是一個(gè)簡(jiǎn)單的測(cè)試案例,展示如何使用RedisTemplate

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class RedisTest {
    @Autowired
    RedisTemplate<String, Object> redisTemplate;

    @Test
    public void testString() {
        String key = "name";
        String name = "dession";
        redisTemplate.opsForValue().set(key, name);
        redisTemplate.expire(key, 1, TimeUnit.DAYS);
        System.out.println("Retrieved from Redis: " + redisTemplate.opsForValue().get(key));
    }

    @Test
    public void testHash() {
        String key = "users";
        redisTemplate.opsForHash().put(key, "name", "zhangsan");
        redisTemplate.expire(key, 1, TimeUnit.DAYS);
        Map<String, Object> map = new HashMap<>();
        map.put("age", 12);
        map.put("sex", "男");
        redisTemplate.opsForHash().putAll(key, map);
        Object name = redisTemplate.opsForHash().get(key, "name");
        System.out.println("Name from Hash: " + name);
    }
}

四、高級(jí)特性與安全性

高級(jí)特性

  • 持久化:Redis支持RDB和AOF兩種持久化方式,確保數(shù)據(jù)的安全性。
  • 復(fù)制:通過(guò)主從復(fù)制,可以提高數(shù)據(jù)的可用性和讀取性能。
  • 哨兵模式:用于實(shí)現(xiàn)高可用性,自動(dòng)故障轉(zhuǎn)移。
  • 集群:支持?jǐn)?shù)據(jù)分片,提高存儲(chǔ)和處理大規(guī)模數(shù)據(jù)集的能力。

安全性

  • 密碼認(rèn)證:配置requirepass指令設(shè)置密碼,確保只有授權(quán)用戶可以訪問(wèn)Redis。
  • 網(wǎng)絡(luò)隔離:將Redis部署在內(nèi)網(wǎng)中,避免直接暴露在公網(wǎng)上。
  • TLS/SSL:使用TLS/SSL加密數(shù)據(jù)傳輸,保護(hù)數(shù)據(jù)在傳輸過(guò)程中的安全。

五、性能優(yōu)化

  • 選擇合適的數(shù)據(jù)類(lèi)型:根據(jù)使用場(chǎng)景選擇合適的數(shù)據(jù)類(lèi)型,可以提高性能和降低內(nèi)存使用。
  • 調(diào)整內(nèi)存使用策略:通過(guò)配置maxmemory-policy,可以控制內(nèi)存使用和數(shù)據(jù)淘汰策略。
  • 監(jiān)控和調(diào)優(yōu):使用Redis自帶的監(jiān)控工具或第三方工具,如Redisson、Spring Boot Actuator等,監(jiān)控Redis性能并進(jìn)行調(diào)優(yōu)。

六、測(cè)試與部署

  • 測(cè)試:在開(kāi)發(fā)和測(cè)試環(huán)境中充分測(cè)試Redis的集成,確保功能正確性和性能滿足要求。
  • 部署:在生產(chǎn)環(huán)境中部署Redis時(shí),考慮使用容器化技術(shù)如Docker,以便于管理和擴(kuò)展。

七、數(shù)據(jù)一致性

  • 緩存與數(shù)據(jù)庫(kù)同步:確保緩存數(shù)據(jù)與數(shù)據(jù)庫(kù)數(shù)據(jù)的一致性,可以使用延遲雙刪策略或消息隊(duì)列來(lái)實(shí)現(xiàn)。

八、版本更新

  • 平滑升級(jí):定期檢查Redis的新版本,按照官方文檔進(jìn)行平滑升級(jí),以利用新特性和性能改進(jìn)。

你可以在Spring Boot項(xiàng)目中成功集成Redis,并使用其強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)來(lái)優(yōu)化你的應(yīng)用程序。Redis的高級(jí)特性和最佳實(shí)踐還需要你進(jìn)一步探索和學(xué)習(xí)。希望這篇文章能幫助你更好地理解和使用Redis。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • RabbitMQ工作模式中的發(fā)布確認(rèn)模式示例詳解

    RabbitMQ工作模式中的發(fā)布確認(rèn)模式示例詳解

    發(fā)布確認(rèn)模式用于確保消息已經(jīng)被正確地發(fā)送到RabbitMQ服務(wù)器,并被成功接收和持久化,本文通過(guò)實(shí)例代碼給大家介紹RabbitMQ工作模式之發(fā)布確認(rèn)模式,感興趣的朋友一起看看吧
    2025-05-05
  • Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件詳解

    Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件詳解

    這篇文章主要介紹了Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java定義隊(duì)列結(jié)構(gòu),并實(shí)現(xiàn)入隊(duì)、出隊(duì)操作完整示例

    Java定義隊(duì)列結(jié)構(gòu),并實(shí)現(xiàn)入隊(duì)、出隊(duì)操作完整示例

    這篇文章主要介紹了Java定義隊(duì)列結(jié)構(gòu),并實(shí)現(xiàn)入隊(duì)、出隊(duì)操作,結(jié)合完整實(shí)例形式分析了java數(shù)據(jù)結(jié)構(gòu)中隊(duì)列的定義、入隊(duì)、出隊(duì)、判斷隊(duì)列是否為空、打印隊(duì)列元素等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • java 使用異常的好處總結(jié)

    java 使用異常的好處總結(jié)

    這篇文章主要介紹了java 使用異常的好處總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Java主流壓縮解壓工具對(duì)比、用法與選取詳解

    Java主流壓縮解壓工具對(duì)比、用法與選取詳解

    開(kāi)發(fā)過(guò)程中可能會(huì)用到壓縮文件的需求,下面這篇文章主要給大家介紹了關(guān)于Java主流壓縮解壓工具對(duì)比、用法與選取的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Spring Bean生命周期源碼原理圖解

    Spring Bean生命周期源碼原理圖解

    這篇文章主要介紹了Spring Bean生命周期源碼原理圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 一文詳解SpringBoot如何優(yōu)雅地實(shí)現(xiàn)異步調(diào)用

    一文詳解SpringBoot如何優(yōu)雅地實(shí)現(xiàn)異步調(diào)用

    SpringBoot想必大家都用過(guò),但是大家平時(shí)使用發(fā)布的接口大都是同步的,那么你知道如何優(yōu)雅的實(shí)現(xiàn)異步呢?這篇文章就來(lái)和大家詳細(xì)聊聊
    2023-03-03
  • SpringBoot使用?Sleuth?進(jìn)行分布式跟蹤的過(guò)程分析

    SpringBoot使用?Sleuth?進(jìn)行分布式跟蹤的過(guò)程分析

    Spring Boot Sleuth是一個(gè)分布式跟蹤解決方案,它可以幫助您在分布式系統(tǒng)中跟蹤請(qǐng)求并分析性能問(wèn)題,Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟蹤的功能,本文將介紹如何在Spring Boot應(yīng)用程序中使用Sleuth進(jìn)行分布式跟蹤,感興趣的朋友一起看看吧
    2023-10-10
  • Java8的Stream()與ParallelStream()的區(qū)別說(shuō)明

    Java8的Stream()與ParallelStream()的區(qū)別說(shuō)明

    這篇文章主要介紹了Java8的Stream()與ParallelStream()的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 在Web項(xiàng)目中手機(jī)短信驗(yàn)證碼實(shí)現(xiàn)的全過(guò)程記錄

    在Web項(xiàng)目中手機(jī)短信驗(yàn)證碼實(shí)現(xiàn)的全過(guò)程記錄

    這篇文章主要給大家介紹了關(guān)于在Web項(xiàng)目中實(shí)現(xiàn)短信驗(yàn)證碼的全過(guò)程記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),在文末跟大家提供了源碼下載,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12

最新評(píng)論

古交市| 化州市| 社旗县| 蒲城县| 泰安市| 玉山县| 沁阳市| 清流县| 岳池县| 长垣县| 桃江县| 九台市| 永兴县| 阿拉尔市| 淮滨县| 平利县| 平湖市| 同心县| 铅山县| 民权县| 宁强县| 穆棱市| 宜宾市| 涞水县| 黑龙江省| 盈江县| 股票| 辽阳县| 柘城县| 灌云县| 平湖市| 梨树县| 灵武市| 昌图县| 平利县| 桃江县| 广饶县| 新建县| 上犹县| 阿拉善左旗| 汉阴县|