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

springboot中操作redis的步驟到完全實踐

 更新時間:2025年08月26日 09:07:36   作者:GG Bond @  
本文介紹Spring Boot操作Redis的步驟到完全實踐,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

springboot中操作redis的步驟

環(huán)境搭建

1,在pom.xml文件中導(dǎo)入SpringbootDataReedis的maven坐標(biāo)

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

2,配置redis數(shù)據(jù)源
在aoolication.yml文件中添加如下代碼:

spring:
	redis:
	    host: localhost
	    port: 6379
	    password: 123456
	    database: 10

解釋說明:
database:指定使用Redis的哪個數(shù)據(jù)庫,Redis服務(wù)啟動后默認(rèn)有16個數(shù)據(jù)庫,編號分別是從0到15。
可以通過修改Redis配置文件來指定數(shù)據(jù)庫的數(shù)量。

3,編寫配置類,創(chuàng)建RedisTemplate對象、

@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("開始創(chuàng)建redis模板對象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //設(shè)置redis的連接工廠對象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //設(shè)置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

解釋說明:

當(dāng)前配置類不是必須的,因為 Spring Boot 框架會自動裝配 RedisTemplate 對象,但是默認(rèn)的key序列化器為
JdkSerializationRedisSerializer,導(dǎo)致我們存到Redis中后的數(shù)據(jù)和原始數(shù)據(jù)有差別,故設(shè)置為
StringRedisSerializer序列化器。

4,通過

RedisTemplate對象操作Redis.可以在test下新建測試類

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void testRedisTemplate(){
        System.out.println(redisTemplate);
        //string數(shù)據(jù)操作
        ValueOperations valueOperations = redisTemplate.opsForValue();
        //hash類型的數(shù)據(jù)操作
        HashOperations hashOperations = redisTemplate.opsForHash();
        //list類型的數(shù)據(jù)操作
        ListOperations listOperations = redisTemplate.opsForList();
        //set類型數(shù)據(jù)操作
        SetOperations setOperations = redisTemplate.opsForSet();
        //zset類型數(shù)據(jù)操作
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }
}

運行測試類:

說明RedisTemplate對象注入成功,并且通過該RedisTemplate對象獲取操作5種數(shù)據(jù)類型相關(guān)對象。

上述環(huán)境搭建完畢后,接下來,我們就來具體對常見5種數(shù)據(jù)類型進行操作。

    @Autowired
    private RedisTemplate redisTemplate;
    /*
    * 測試String類型數(shù)據(jù)
    * */
    @Test
    public void testString(){
        //string類型的數(shù)據(jù)操作方法,對應(yīng)的Redis操作命令為set和get
        //set,get,setex,setnx
        redisTemplate.opsForValue().set("test","123");
        redisTemplate.opsForValue().get("test");
        //setex方法 設(shè)置過期時間,單位為秒
        redisTemplate.opsForValue().set("test","123",5, TimeUnit.SECONDS);
        //setIfAbsent,只有在鍵不存在時才設(shè)置值,返回true表示成功設(shè)置了值,false表示沒有設(shè)置
        redisTemplate.opsForValue().setIfAbsent("test1","123");
        redisTemplate.opsForValue().setIfAbsent("test1",2);
    }
    /**
     * 操作哈希類型的數(shù)據(jù)
     */
    @Test
    public void testHash(){
        //hset hget hdel hkeys hvals
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("100","name","tom");
        hashOperations.put("100","age","20");
        String name = (String) hashOperations.get("100", "name");
        System.out.println(name);
        Set keys = hashOperations.keys("100");
        System.out.println(keys);
        List values = hashOperations.values("100");
        System.out.println(values);
        hashOperations.delete("100","age");
    }
    /**
     * 操作列表類型的數(shù)據(jù)
     */
    @Test
    public void testList(){
        //lpush lrange rpop llen
        ListOperations listOperations = redisTemplate.opsForList();
        //lpush命令向列表左側(cè)插入元素,rpush命令向列表右側(cè)插入元素
        listOperations.leftPushAll("mylist","a","b","c");
        listOperations.leftPush("mylist","d");
        //lrange命令獲取列表中指定區(qū)間的元素,0表示第一個元素,-1表示最后一個元素
        List mylist = listOperations.range("mylist", 0, -1);
        System.out.println(mylist);
        //rpop命令從列表右側(cè)彈出元素
        listOperations.rightPop("mylist");
        //llen命令獲取列表的長度
        Long size = listOperations.size("mylist");
        System.out.println(size);
    }
    /**
     * 操作集合類型的數(shù)據(jù)
     */
    @Test
    public void testSet(){
        //sadd smembers scard sinter sunion srem
        SetOperations setOperations = redisTemplate.opsForSet();
        //sadd命令向集合中添加元素,smember命令獲取集合中的所有元素
        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","x","y");
        Set members = setOperations.members("set1");
        System.out.println(members);
        //scard命令獲取集合中元素的數(shù)量
        Long size = setOperations.size("set1");
        System.out.println(size);
        // sinter命令獲取兩個集合的交集,sunion命令獲取兩個集合的并集
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);
        // sunion命令獲取兩個集合的并集
        Set union = setOperations.union("set1", "set2");
        System.out.println(union);
        // srem 命令從 集合中移除指定的元素。
        setOperations.remove("set1","a","b");
    }
    /**
     * 操作有序集合類型的數(shù)據(jù)
     */
    @Test
    public void testZset(){
        //zadd zrange zincrby zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        //zadd 命令像有序集合中添加元素, 
        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",12);
        zSetOperations.add("zset1","c",9);
        //zrange命令獲取有序集合中指定區(qū)間的元素,0表示第一個元素,-1表示最后一個元素
        zSetOperations.range("zset1",0,-1);
        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1);
        // zincrby命令為有序集合中的元素增加指定的分?jǐn)?shù)值,并返回增加后的分?jǐn)?shù)值
        zSetOperations.incrementScore("zset1","c",10);
        //zrem命令從有序集合中移除指定的元素
        zSetOperations.remove("zset1","a","b");
    }
    /**
     * 通用命令操作
     */
    @Test
    public void testCommon(){
        //keys exists type del
        //keys命令獲取所有鍵,exists命令判斷指定的鍵是否存在,type命令獲取指定鍵的數(shù)據(jù)類型,del命令刪除指定的鍵
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);
        Boolean name = redisTemplate.hasKey("name");
        Boolean set1 = redisTemplate.hasKey("set1");
        for (Object key : keys) {
            DataType type = redisTemplate.type(key);
            System.out.println(type.name());
        }
        redisTemplate.delete("mylist");
    }

批注:測試之前啟動redis,本地啟動名命令:按Win + R鍵,輸入cmd,然后按回車鍵。啟動Redis服務(wù)器:輸入以下命令來啟動Redis服務(wù)器:redis-server。啟動Redis客戶端:在另一個命令提示符窗口中輸入以下命令來啟動Redis客戶端:redis-cli

實在不行就去redis安裝目錄中找圖片中的一項雙擊運行。

到此這篇關(guān)于SpringBoot 常用跨域處理方案的文章就介紹到這了,更多相關(guān)SpringBoot 跨域處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用@Scheduled定時器的示例詳解

    SpringBoot使用@Scheduled定時器的示例詳解

    SpringBoot的@Scheduled注解用于配置定時任務(wù),需啟用@EnableScheduling,支持fixedRate、fixedDelay、cron等參數(shù),控制執(zhí)行頻率、延遲及周期,支持線程池和異常處理配置,默認(rèn)單線程串行執(zhí)行,本文介紹SpringBoot使用@Scheduled定時器的操作示例,感興趣的朋友一起看看吧
    2025-07-07
  • Springboot+rabbitmq實現(xiàn)延時隊列的兩種方式

    Springboot+rabbitmq實現(xiàn)延時隊列的兩種方式

    這篇文章主要介紹了Springboot+rabbitmq實現(xiàn)延時隊列的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • IntelliJ-Idea導(dǎo)出可執(zhí)行Jar流程解析

    IntelliJ-Idea導(dǎo)出可執(zhí)行Jar流程解析

    這篇文章主要介紹了IntelliJ-Idea導(dǎo)出可執(zhí)行Jar流程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Maven dependency中的scope案例講解

    Maven dependency中的scope案例講解

    Maven的一個哲學(xué)是慣例優(yōu)于配置(Convention Over Configuration), Maven默認(rèn)的依賴配置項中,scope的默認(rèn)值是compile,本文給大家介紹Maven dependency中的scope案例講解,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • springboot?log4j2.xml如何讀取application.yml中屬性值

    springboot?log4j2.xml如何讀取application.yml中屬性值

    這篇文章主要介紹了springboot?log4j2.xml如何讀取application.yml中屬性值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Swagger的使用教程詳解

    Swagger的使用教程詳解

    Swagger是一個強大的API文檔工具,它能夠簡化API文檔的編寫和維護工作,提供了一種方便的方式來描述、展示和測試RESTful風(fēng)格的Web服務(wù)接口,本文介紹了Swagger的安裝配置和使用方法,并提供了示例代碼,感興趣的朋友一起學(xué)習(xí)吧
    2023-06-06
  • mybatis-plus讀取JSON類型的方法實現(xiàn)

    mybatis-plus讀取JSON類型的方法實現(xiàn)

    這篇文章主要介紹了mybatis-plus讀取JSON類型的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SpringBoot使用自定義注解實現(xiàn)權(quán)限攔截的示例

    SpringBoot使用自定義注解實現(xiàn)權(quán)限攔截的示例

    本篇文章主要介紹了SpringBoot使用自定義注解實現(xiàn)權(quán)限攔截的示例,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • 關(guān)于maven項目中使用BCrypt加密方式

    關(guān)于maven項目中使用BCrypt加密方式

    BCrypt是一種基于Blowfish加密算法的密碼散列函數(shù),用于安全存儲和驗證用戶密碼,它通過引入鹽和工作因子增加計算復(fù)雜度,有效防止彩虹表攻擊和破解,BCrypt具備適應(yīng)性工作因子、成本參數(shù)調(diào)整、迭代哈希和密鑰擴展等特點,被廣泛應(yīng)用于Web應(yīng)用程序的安全性設(shè)計中
    2024-10-10
  • SpringBoot整合redis使用緩存注解詳解

    SpringBoot整合redis使用緩存注解詳解

    這篇文章主要介紹了SpringBoot整合redis使用緩存注解詳解,@Cacheable在方法執(zhí)行前判斷對應(yīng)緩存是否存在,如果存在直接返回緩存結(jié)果,否者執(zhí)行方法將結(jié)果緩存,適用于查詢類,需要的朋友可以參考下
    2024-01-01

最新評論

长葛市| 岗巴县| 大冶市| 万安县| 邛崃市| 赤峰市| 华亭县| 武川县| 綦江县| 南华县| 青州市| 西藏| 桂东县| 多伦县| 淮南市| 凤庆县| 阳原县| 克什克腾旗| 陈巴尔虎旗| 黑河市| 安宁市| 彝良县| 额敏县| 疏附县| 唐山市| 广安市| 开阳县| 汝南县| 寿光市| 镇赉县| 中阳县| 东源县| 白水县| 灵台县| 龙门县| 博罗县| 达拉特旗| 新绛县| 阜城县| 曲沃县| 盐源县|