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

springboot中操作redis的步驟到完全實(shí)踐

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

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的哪個(gè)數(shù)據(jù)庫,Redis服務(wù)啟動(dòng)后默認(rèn)有16個(gè)數(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)前配置類不是必須的,因?yàn)?Spring Boot 框架會自動(dòng)裝配 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();
    }
}

運(yùn)行測試類:

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

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

    @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è)置過期時(shí)間,單位為秒
        redisTemplate.opsForValue().set("test","123",5, TimeUnit.SECONDS);
        //setIfAbsent,只有在鍵不存在時(shí)才設(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表示第一個(gè)元素,-1表示最后一個(gè)元素
        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命令獲取兩個(gè)集合的交集,sunion命令獲取兩個(gè)集合的并集
        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);
        // sunion命令獲取兩個(gè)集合的并集
        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表示第一個(gè)元素,-1表示最后一個(gè)元素
        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");
    }

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

實(shí)在不行就去redis安裝目錄中找圖片中的一項(xiàng)雙擊運(yùn)行。

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

相關(guān)文章

  • SpringBoot使用@Scheduled定時(shí)器的示例詳解

    SpringBoot使用@Scheduled定時(shí)器的示例詳解

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

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

    這篇文章主要介紹了Springboot+rabbitmq實(shí)現(xiàn)延時(shí)隊(duì)列的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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í)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Maven dependency中的scope案例講解

    Maven dependency中的scope案例講解

    Maven的一個(gè)哲學(xué)是慣例優(yōu)于配置(Convention Over Configuration), Maven默認(rèn)的依賴配置項(xiàng)中,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中屬性值問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Swagger的使用教程詳解

    Swagger的使用教程詳解

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

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

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

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

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

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

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

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

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

最新評論

安陆市| 上杭县| 大埔区| 印江| 通江县| 民丰县| 阳谷县| 克拉玛依市| 芜湖市| 广河县| 洛阳市| 巫溪县| 苏尼特左旗| 铅山县| 金川县| 沾益县| 城步| 淮阳县| 伊川县| 昭觉县| 南投县| 深水埗区| 馆陶县| 顺义区| 文化| 香港 | 合阳县| 大英县| 浪卡子县| 玉树县| 麻栗坡县| 合作市| 云阳县| 张家港市| 台安县| 富川| 永平县| 济南市| 西贡区| 惠东县| 永宁县|