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

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

這篇具有很好參考價(jià)值的文章主要介紹了springboot+redis+mysql+quartz-通過Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、重點(diǎn)

代碼講解:6-點(diǎn)贊功能-定時(shí)持久化到數(shù)據(jù)庫(kù)-pipeline+lua-優(yōu)化pipeline_嗶哩嗶哩_bilibili

https://www.bilibili.com/video/BV1yP411C7dr

代碼:

blogLike_schedule/like06 · xin麒/XinQiUtilsOrDemo - 碼云 - 開源中國(guó) (gitee.com)

https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like06

數(shù)據(jù)庫(kù)表的設(shè)計(jì):
blogLike_schedule · xin麒/XinQiUtilsOrDemo - 碼云 - 開源中國(guó) (gitee.com)

https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule

架構(gòu)圖:

springboot+redis+mysql+quartz-通過Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù),java,數(shù)據(jù)庫(kù),spring boot,pipeline,redis,定時(shí)任務(wù)

最開始的代碼版本:

(108條消息) springboot+redis+mysql+quartz-通過Java操作redis的KEYS*命令獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)_xin麒的博客-CSDN博客

二、核心代碼:

定時(shí)板塊就看這篇吧:

    @Override
    public void updateAllLikeListToDatabaseByPipeline1() {
        String prefix = "BLOG_LIKED_KEY";
//        Set<String> keys = getAllRedisKeyByKeys(prefix);//這個(gè)不行!
        Set<String> keys = getAllRedisKeyByScanThroughMatch(prefix);//通過scan拿到以BLOG_LIKED_KEY開頭的所有key
        if (keys == null || keys.size() == 0) return;
        Map<Long,Map<String,String>> maps = getIdWithTimeListsByPipelineByJedis(keys);
        if (maps == null || maps.size() == 0) return;

        for (Map.Entry<Long, Map<String, String>> entry : maps.entrySet()) {
            Long blogId = entry.getKey();
            Map<String, String> likeList = entry.getValue();
            updateLikeListByBlogId(blogId,likeList);
        }

    }

這里還是算半Pipeline方法,因?yàn)閦set的鍵是通過scan掃描獲取到的,這里的scan掃描的方法應(yīng)該是可以放到管道里面的。但是呢因?yàn)镻ipeline不適合做太強(qiáng)邏輯相關(guān)的命令,所以這個(gè)應(yīng)該也算可以的了。為什么?這里可以去看看這篇文章:

(108條消息) redis事務(wù)-pipeline-lua三者區(qū)別簡(jiǎn)單概括_xin麒的博客-CSDN博客

先通過scan方法掃出

public Set<String> getAllRedisKeyByScanThroughMatch(String prefix) {//找不到stringRedisTemplate對(duì)Zset里鍵值對(duì)掃描的資料
    Jedis jedis = null;
    Set<String> blogLikeList = new HashSet<>();
    ScanParams scanParams = new ScanParams();
    try {
        jedis = jedisPool.getResource();
        String cursor = "0";


        do {
            // 掃描并獲取一部分key
            ScanResult<String> result = jedis.scan(cursor, scanParams.match(prefix.concat("*")));
            // 記錄cursor
            cursor = result.getCursor();
            List<String> list = result.getResult();
            if (list == null || list.isEmpty()) {
                break;
            }

            // 遍歷
            for (String key : list) {
                log.debug("key is {}", key);//這里可以看到有哪些key
                blogLikeList.add(key);
            }

        } while (!cursor.equals("0"));
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (jedis != null) jedis.close();
    }
    return blogLikeList;
}

然后再通過這個(gè)方法來(lái)使用pipeline技術(shù):

    public Map<Long,Map<String,String>> getIdWithTimeListsByPipelineByJedis(Collection<String> collection) {

        String prefix = "BLOG_LIKED_KEY";
        Jedis jedis = null;
        Map<Long,Map<String,String>> maps = null;
        try {
            jedis = jedisPool.getResource();
            Pipeline pipe = jedis.pipelined();
            ArrayList<Long> blogKeyIds = new ArrayList<>(collection.size());
            for (String key : collection) {
                pipe.zrangeWithScores(key, 0, -1);
                blogKeyIds.add(Long.parseLong(key.substring(prefix.length(),key.length())));
            }
            List<Object> response = pipe.syncAndReturnAll();
            maps = pipeLineResponseTransformedToMap(response,blogKeyIds);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }
        log.debug("maps is {}",maps);
        return maps;
    }

三、其他

現(xiàn)在是2023-07-01,不得不吐槽stringRedisTemplateRedisTemplate,如果要來(lái)實(shí)現(xiàn)使用pipeline技術(shù)將緩存里面的zset數(shù)據(jù)獲取得到,好像只能用jedis了,其他的都很難找得到參考資料,全網(wǎng)搜不到,官網(wǎng)也很少資料(可能沒細(xì)看),笑死,所以后面就用jedis來(lái)實(shí)現(xiàn)了。

其他類似的文章:

(108條消息) springboot+redis+mysql+quartz-通過Java操作redis的KEYS*命令獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)_xin麒的博客-CSDN博客

(108條消息) springboot+redis+mysql+quartz-通過Java操作jedis定時(shí)使用lua腳本獲取緩存數(shù)據(jù)并更新數(shù)據(jù)庫(kù)_xin麒的博客-CSDN博客

(108條消息) lua腳本獲取table類型-Java使用lua腳本操作redis獲取zset元素的集合_xin麒的博客-CSDN博客

(108條消息) springboot+redis+mysql+quartz-通過Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)_xin麒的博客-CSDN博客

(108條消息) springboot+redis+mysql+quartz-通過Java操作jedis的scan命令獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)_xin麒的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-559616.html

到了這里,關(guān)于springboot+redis+mysql+quartz-通過Java操作jedis使用pipeline獲取緩存數(shù)據(jù)定時(shí)更新數(shù)據(jù)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(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)文章

  • 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 - 碼云 - 開源中國(guó) (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like08 數(shù)據(jù)庫(kù)表:

    2024年02月13日
    瀏覽(18)
  • java操作redis之jedis

    我們之前對(duì)Redis的學(xué)習(xí)都是在命令行窗口,那么如何使用Java來(lái)對(duì)Redis進(jìn)行操作呢?對(duì)于Java連接Redis的開發(fā)工具有很多,這里先介紹通過Jedis實(shí)現(xiàn)對(duì)Redis的各種操作。(前提是你的redis已經(jīng)配置了遠(yuǎn)程訪問) 到這里Jedis如何連接redis以及常用操作已經(jīng)了解了,其實(shí)這里的操作方法和

    2024年02月09日
    瀏覽(20)
  • SpringBoot Redis 使用Lettuce和Jedis配置哨兵模式

    SpringBoot Redis 使用Lettuce和Jedis配置哨兵模式

    在Spring Boot 中配置Redis哨兵模式,可以使用 Lettuce 或 Jedis 配置 Redis 哨兵模式,實(shí)現(xiàn)高可用的 Redis 集群。 因?yàn)樵赟pring Boot中 spring-boot-starter-data-redis 已經(jīng)實(shí)現(xiàn)了兩種客戶端鏈接方式,我們選擇其中一種就可以。 Lettuce 和 Jedis 都是 Redis 客戶端庫(kù),可以與 Redis 服務(wù)器進(jìn)行通信。它

    2024年02月16日
    瀏覽(26)
  • 【Springboot系列】整合redis+jedis(含源碼)

    Spring Boot集成Redis和Jedis客戶端使用Redis有以下主要特點(diǎn): ? ??簡(jiǎn)單易用只需要添加相關(guān)依賴和簡(jiǎn)單配置,就可以直接在Spring Boot應(yīng)用中使用Jedis客戶端操作Redis。這大大簡(jiǎn)化了使用Redis的難度。 ? ??自動(dòng)配置Spring Boot會(huì)根據(jù)類路徑中的Jedis版本自動(dòng)配置JedisConnectionFactory。我們只

    2024年02月12日
    瀏覽(22)
  • Redis-redis事務(wù)、樂觀鎖、Jedis、SpringBoot整合Redis

    Redis-redis事務(wù)、樂觀鎖、Jedis、SpringBoot整合Redis

    1、事務(wù) ①開啟事務(wù)、執(zhí)行事務(wù) ② 取消事務(wù) ③ 編譯性異常(代碼有問題! 命令有錯(cuò)?。?,事務(wù)中所有的命令都不會(huì)被執(zhí)行! ④ 運(yùn)行時(shí)異常(I/O),如果事務(wù)隊(duì)列中存在語(yǔ)法行,那么執(zhí)行命令的時(shí)候,其他命令是可以正常執(zhí)行的,錯(cuò)誤命令拋出異常! (區(qū)別于直接命令錯(cuò)誤

    2024年01月16日
    瀏覽(18)
  • 在Spring Boot微服務(wù)集成Jedis操作Redis

    記錄 :406 場(chǎng)景 :在Spring Boot微服務(wù)集成Jedis操作Redis的緩存和隊(duì)列。 版本 :JDK 1.8,Spring?Boot 2.6.3,redis-6.2.5,jedis-3.7.1。 1.微服務(wù)中配置 Redis信息 1.1在application.yml中Jedis配置信息 1.2使用 ConfigurationProperties加載Jedis配置 Spring Boot微服務(wù)在啟動(dòng)時(shí),自動(dòng)注解機(jī)制會(huì)讀取application.yml的

    2023年04月15日
    瀏覽(85)
  • Redis的Java客戶端-Jedis

    Redis的Java客戶端-Jedis

    在 Redis官網(wǎng) 中提供了各種語(yǔ)言的客戶端,地址: https://redis.io/docs/clients/ 其中Java客戶端也包含很多: 標(biāo)記為 ? 的就是推薦使用的java客戶端,包括: Jedis和Lettuce:這兩個(gè)主要是提供了Redis命令對(duì)應(yīng)的API,方便我們操作Redis,而SpringDataRedis是對(duì)這兩種做了抽象和封裝。 Redisso

    2024年02月19日
    瀏覽(19)
  • Redis-Java客戶端-Jedis

    目錄 01.導(dǎo)入依賴 02.進(jìn)行測(cè)試連接 03.使用JedisPool 04.修改測(cè)試的代碼 ????????新建一個(gè)mevan工程,在pom文件下導(dǎo)入相應(yīng)的依賴,相依的依賴可以去官網(wǎng)查找 spring官網(wǎng):Spring Data Redis ????????在test目錄下,創(chuàng)建一個(gè)測(cè)試類JedisTest 這里可能回報(bào)密碼的錯(cuò)誤, 可能需要去設(shè)置

    2024年02月14日
    瀏覽(24)
  • 【Redis】2、Redis 的 Java 客戶端(Jedis 和 SpringDataRedis)

    【Redis】2、Redis 的 Java 客戶端(Jedis 和 SpringDataRedis)

    Jedis 的使用:https://redis.io/docs/clients/java/ ?? Jedis 實(shí)例是線程不安全的 ?? 多線程環(huán)境 下需要基于連接池來(lái)使用 ?? 這里使用的連接池技術(shù)是 Jedis 提供的 ?? JedisPool :Redis 連接池 ?? JedisPoolConfig :Redis 連接池的配置 ?? SpringData 是 Spring 中數(shù)據(jù)操作的模塊,包含對(duì)各種數(shù)據(jù)庫(kù)

    2024年02月11日
    瀏覽(27)
  • Redis 的整合 Jedis 使用

    大家好 , 我是蘇麟 , 今天帶來(lái) Jedis?的使用 .? Jedis的官網(wǎng)地址: GitHub - redis/jedis: Redis Java client 引入依賴 實(shí)戰(zhàn) ?Jedis連接池 Jedis本身是線程不安全的,并且頻繁的創(chuàng)建和銷毀連接會(huì)有性能損耗,因此我們推薦大家使用Jedis連接池代替Jedis的直連方式 有關(guān)池化思想,并不僅僅是這

    2024年02月10日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包