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

Spring Boot + RedisTemplate 數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)操作大全

 更新時(shí)間:2026年02月02日 14:30:11   作者:不吃冰  
本文介紹了Redis簡(jiǎn)介與Spring Boot集成,核心數(shù)據(jù)類型,RedisTemplate配置與初始化,以及5種數(shù)據(jù)類型的操作,還涉及高級(jí)特性如事務(wù)支持和管道技術(shù),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

?? 一、Redis簡(jiǎn)介與Spring Boot集成

Redis核心數(shù)據(jù)類型

Redis支持5種主要數(shù)據(jù)結(jié)構(gòu):

  • String:字符串,最基本的數(shù)據(jù)類型
  • Hash:哈希表,適合存儲(chǔ)對(duì)象
  • List:列表,支持順序操作
  • Set:無(wú)序集合,支持交并差運(yùn)算
  • ZSet:有序集合,適合排行榜場(chǎng)景

Spring Boot集成配置

依賴配置(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>
</dependency>

配置文件(application.yml):

spring:
  redis:
    host: localhost
    port: 6379
    database: 0
    timeout: 3000ms
    lettuce:
      pool:
        max-active: 8
        max-idle: 8

?? 二、RedisTemplate配置與初始化

序列化配置類

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        // 設(shè)置key序列化為String
        template.setKeySerializer(new StringRedisSerializer());
        // 設(shè)置value序列化為JSON
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}

注入操作對(duì)象

@Service
public class RedisService {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private ValueOperations<String, Object> valueOps;  // String操作
    @Autowired
    private HashOperations<String, String, Object> hashOps;  // Hash操作
    @Autowired
    private ListOperations<String, Object> listOps;  // List操作
    @Autowired
    private SetOperations<String, Object> setOps;  // Set操作
    @Autowired
    private ZSetOperations<String, Object> zSetOps;  // ZSet操作
}

?? 三、5種數(shù)據(jù)類型操作詳解

1. String類型 - 基礎(chǔ)鍵值存儲(chǔ)

// 基本操作
valueOps.set("username", "張三");  // SET
valueOps.get("username");          // GET
valueOps.increment("counter");     // INCR
valueOps.set("token", "abc123", 30, TimeUnit.MINUTES);  // 帶過(guò)期時(shí)間
// 進(jìn)階操作
valueOps.setIfAbsent("lock", "locked");  // SETNX(分布式鎖)
valueOps.getAndSet("key", "newValue");   // GETSET

2. Hash類型 - 對(duì)象存儲(chǔ)

// 存儲(chǔ)用戶對(duì)象
Map<String, Object> user = new HashMap<>();
user.put("name", "張三");
user.put("age", 25);
user.put("email", "zhangsan@example.com");
hashOps.putAll("user:1001", user);  // HMSET
// 操作字段
hashOps.get("user:1001", "name");     // HGET
hashOps.hasKey("user:1001", "age");   // HEXISTS
hashOps.keys("user:1001");            // HKEYS
hashOps.increment("user:1001", "age", 1);  // HINCRBY

3. List類型 - 隊(duì)列和棧

// 隊(duì)列操作(左進(jìn)右出)
listOps.leftPush("tasks", "task1");    // LPUSH
listOps.leftPushAll("tasks", "task2", "task3");
listOps.rightPop("tasks");             // RPOP
// 列表操作
listOps.range("messages", 0, 10);      // LRANGE
listOps.index("messages", 0);          // LINDEX
listOps.trim("messages", 0, 99);       // LTRIM(保留最近100條)

4. Set類型 - 無(wú)序集合

// 標(biāo)簽系統(tǒng)示例
setOps.add("user:tags:1001", "java", "redis", "spring");  // SADD
setOps.members("user:tags:1001");                         // SMEMBERS
// 集合運(yùn)算
setOps.intersect("user:tags:1001", "user:tags:1002");     // SINTER(交集)
setOps.union("tag:java:users", "tag:redis:users");        // SUNION(并集)
setOps.isMember("user:tags:1001", "java");                // SISMEMBER

5. ZSet類型 - 有序集合(排行榜)

// 游戲排行榜
zSetOps.add("leaderboard", "player1", 1000);               // ZADD
zSetOps.add("leaderboard", "player2", 2000);
zSetOps.incrementScore("leaderboard", "player1", 500);     // ZINCRBY
// 查詢操作
zSetOps.reverseRange("leaderboard", 0, 9);                 // ZREVRANGE(前10名)
zSetOps.rank("leaderboard", "player1");                    // ZRANK(排名)
zSetOps.score("leaderboard", "player1");                   // ZSCORE(分?jǐn)?shù))
zSetOps.count("leaderboard", 1000, 3000);                  // ZCOUNT(分?jǐn)?shù)區(qū)間統(tǒng)計(jì))

? 四、高級(jí)特性與實(shí)戰(zhàn)應(yīng)用

事務(wù)支持

redisTemplate.execute(new SessionCallback<List<Object>>() {
    @Override
    public List<Object> execute(RedisOperations operations) throws DataAccessException {
        operations.multi();  // 開(kāi)啟事務(wù)
        operations.opsForValue().set("key1", "value1");
        operations.opsForValue().increment("counter");
        return operations.exec();  // 執(zhí)行事務(wù)
    }
});

管道技術(shù)(批量操作)

List<Object> results = redisTemplate.executePipelined(new SessionCallback<Object>() {
    @Override
    public Object execute(RedisOperations operations) throws DataAccessException {
        for (int i = 0; i < 1000; i++) {
            operations.opsForValue().set("key:" + i, "value:" + i);
        }
        return null;
    }
});

到此這篇關(guān)于Spring Boot + RedisTemplate 數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)操作的文章就介紹到這了,更多相關(guān)Spring Boot RedisTemplate 數(shù)據(jù)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot集成mybatisPlus+多數(shù)據(jù)源的實(shí)現(xiàn)示例

    springboot集成mybatisPlus+多數(shù)據(jù)源的實(shí)現(xiàn)示例

    這篇文章主要介紹了springboot集成mybatisPlus+多數(shù)據(jù)源的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • mybatis中${}和#{}的區(qū)別以及底層原理分析

    mybatis中${}和#{}的區(qū)別以及底層原理分析

    這篇文章主要介紹了mybatis中${}和#{}的區(qū)別以及底層原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 理解Java的序列化與反序列化

    理解Java的序列化與反序列化

    這篇文章主要為大家詳細(xì)介紹了Java的序列化與反序列化,序列化是一種對(duì)象持久化的手段。普遍應(yīng)用在網(wǎng)絡(luò)傳輸、RMI等場(chǎng)景中。本文通過(guò)分析ArrayList的序列化來(lái)介紹Java序列化的相關(guān)內(nèi)容,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java四種線程池的使用詳解

    Java四種線程池的使用詳解

    本篇文章主要介紹了Java四種線程池的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Maven Plugins報(bào)錯(cuò)的解決方法

    Maven Plugins報(bào)錯(cuò)的解決方法

    本文主要介紹了Maven Plugins報(bào)錯(cuò)的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • SpringBoot如何使用MyBatis-Plus實(shí)現(xiàn)高效的數(shù)據(jù)訪問(wèn)層

    SpringBoot如何使用MyBatis-Plus實(shí)現(xiàn)高效的數(shù)據(jù)訪問(wèn)層

    在開(kāi)發(fā) Spring Boot 應(yīng)用時(shí),數(shù)據(jù)訪問(wèn)是不可或缺的部分,本文將詳細(xì)介紹如何在 Spring Boot 中使用 MyBatis-Plus,并結(jié)合具體代碼示例來(lái)講解它的使用方法和常見(jiàn)配置,希望對(duì)大家有一定的幫助
    2025-04-04
  • JDK1.8 JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域劃分方式

    JDK1.8 JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域劃分方式

    JDK1.8 JVM運(yùn)行時(shí)內(nèi)存區(qū)域劃分:元數(shù)據(jù)區(qū)替代永久代,堆空間分年輕代(Eden+Survivor)和老年代,字符串常量池移至堆,直接內(nèi)存通過(guò)NIO實(shí)現(xiàn)堆外分配,支持通過(guò)jcmd工具觀察內(nèi)存占用情況
    2025-07-07
  • Spring Boot項(xiàng)目維護(hù)全局json數(shù)據(jù)代碼實(shí)例

    Spring Boot項(xiàng)目維護(hù)全局json數(shù)據(jù)代碼實(shí)例

    這篇文章主要介紹了Spring Boot項(xiàng)目維護(hù)全局json數(shù)據(jù)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用

    淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用

    這篇文章主要介紹了淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用,涉及Atomic在硬件上的支持,Atomic包簡(jiǎn)介及源碼分析等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • SpringBoot依賴注入的三種方式

    SpringBoot依賴注入的三種方式

    本文將通過(guò)代碼示例詳細(xì)介紹SpringBoot依賴注入的三種方式,對(duì)學(xué)習(xí)依賴注入有一定的參考價(jià)值,需要的朋友可以參考一下
    2023-04-04

最新評(píng)論

虎林市| 兴宁市| 扬州市| 苏州市| 怀宁县| 肥西县| 甘谷县| 宣汉县| 望谟县| 莱阳市| 贵阳市| 乌苏市| 延津县| 微博| 阿拉尔市| 昭觉县| 松阳县| 汪清县| 晴隆县| 吉安县| 治多县| 邢台县| 金湖县| 福鼎市| 通榆县| 合作市| 深水埗区| 乌拉特前旗| 岫岩| 开远市| 兴城市| 北安市| 凌海市| 灌阳县| 胶州市| 秦安县| 辉县市| 静安区| 玉树县| 安顺市| 柞水县|