springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库

这篇具有很好参考价值的文章主要介绍了springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库

一、重点

代码讲解:7.1点赞功能-定时持久化到数据库-Java整合lua_哔哩哔哩_bilibili

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

代码:

blogLike_schedule/like07 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com)

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

数据库表的设计:
blogLike_schedule · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com)

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

二、核心程序:

定时板块就看这篇吧:

(108条消息) springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库_xin麒的博客-CSDN博客

lua脚本:

local prefix = KEYS[1]; 
local redisKeys = redis.call('keys',prefix ..'*');

if(not redisKeys) 
    then    
    	return (nil);
end;

local maps = {};

for i, v in pairs(redisKeys) do
    local blogId = string.sub(v,string.len(prefix) + 1,string.len(v));
    local zset = redis.call('zrange',v,'0','-1','withscores');
    table.insert(maps,blogId);
    table.insert(maps,zset);    
end;

return maps;

lua脚本就另外开一篇文章来讲:

(108条消息) lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合_xin麒的博客-CSDN博客

@Override
public void updateAllLikeListToDatabaseByLua() {
    String prefix = "BLOG_LIKED_KEY";

    Map<Long, Map<String, String>> maps = getMapsByLuaUseJedis(prefix);
    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);
    }

}
    public Map<Long, Map<String, String>> getMapsByLuaUseJedis(String prefix) {
        Map<Long, Map<String, String>> maps = null;
        String script = "local prefix = KEYS[1]; \n" +
                "local redisKeys = redis.call('keys',prefix ..'*');\n" +
                "\n" +
                "if(not redisKeys) \n" +
                "    then    \n" +
                "    \treturn (nil);\n" +
                "end;\n" +
                "\n" +
                "local maps = {};\n" +
                "\n" +
                "for i, v in pairs(redisKeys) do\n" +
                "    local blogId = string.sub(v,string.len(prefix) + 1,string.len(v));\n" +
                "    local zset = redis.call('zrange',v,'0','-1','withscores');\n" +
                "    table.insert(maps,blogId);\n" +
                "    table.insert(maps,zset);    \n" +
                "end;\n" +
                "\n" +
                "return maps;";
        Jedis jedis = null;
        try {
            jedis =  jedisPool.getResource();
            List result = (List) jedis.eval(script, Arrays.asList(prefix), new ArrayList<>());//https://blog.csdn.net/EnjoyFight/article/details/127808971
            System.out.println("result is " + result);//result is [1, [1, 1688218686914]]
/*        log.debug("result is ",result);//不知道为什么不可以log打印
        log.debug("result is null?{}",result==null);
        String s = JSONUtil.toJsonStr(result);
        log.debug("s is ",s);
        log.debug("s is null? {}",s==null);
        log.debug("s .len is  {}",s.length());*/


            maps = parseLuaResultToMaps(result);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) jedis.close();
        }
        return maps;

    }

基本内容都在视频讲了的。

其他类似的文章:

(108条消息) springboot+redis+mysql+quartz-通过Java操作redis的KEYS*命令获取缓存数据定时更新数据库_xin麒的博客-CSDN博客

(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库_xin麒的博客-CSDN博客

(108条消息) lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合_xin麒的博客-CSDN博客

(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库_xin麒的博客-CSDN博客

(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis的scan命令获取缓存数据定时更新数据库_xin麒的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-540826.html

到了这里,关于springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java操作redis之jedis

    我们之前对Redis的学习都是在命令行窗口,那么如何使用Java来对Redis进行操作呢?对于Java连接Redis的开发工具有很多,这里先介绍通过Jedis实现对Redis的各种操作。(前提是你的redis已经配置了远程访问) 到这里Jedis如何连接redis以及常用操作已经了解了,其实这里的操作方法和

    2024年02月09日
    浏览(34)
  • 如何在Java中操作Redis(使用Jedis和Spring Data Redis来操作Redis)

    在Java中,我们可以使用Jedis和Spring Data Redis来操作Redis。 一、使用Jedis操作Redis Jedis是一个流行的Java Redis客户端,提供了丰富的API来操作Redis。下面是使用Jedis操作Redis的步骤: 添加依赖 创建Jedis实例 执行Redis命令 关闭连接 使用Jedis,我们可以方便地执行各种Redis命令,例如设

    2024年02月16日
    浏览(42)
  • Spring Boot进阶(69):轻松实现定时任务持久化!SpringBoot集成quartz带你玩转定时任务删除、暂停、获取等操作!【附项目源码】

            现如今,随着市场竞争加剧,各个企业都在不断寻求提高效率、降低成本的方法,此时使用自动化工具已成为必不可少的选择。而在众多的自动化工具中,定时任务已经成为一项必备工具,而Quartz就是一个非常好用的定时任务框架,它的轻量级、高可靠性、易于使

    2024年02月09日
    浏览(59)
  • SpringBoot——Quartz 定时任务

    优质博文:IT-BLOG-CN 【1】添加 Scheduled 相关依赖,它是 Spring 自带的一个 jar 包因此引入 Spring 的依赖: 【2】导入依赖之后,就可以在 Maven Dependencies 中看到相关的依赖,如下: 【3】编写定时任务类:重点是 @Scheduled 注解和 cron 属性; 【4】在启动类中开启定时任务的启动:

    2024年02月05日
    浏览(43)
  • SpringBoot整合定时任务技术Quartz

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ # 一、SpringBoot整合定时任务技术Quartz 🚀Quartz应用场景 Spring Boot整合Quartz的定时任务技术可以应用于许多不同

    2024年02月09日
    浏览(45)
  • 【SpringBoot】82、SpringBoot集成Quartz实现动态管理定时任务

    1、Quartz简介 在 SpringBoot 中,实现定时任务的方法有很多种,其中 Quartz 是较为灵活的一种,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵 活性而不牺牲简

    2024年02月11日
    浏览(34)
  • 【后端-Quartz】Springboot整合Quartz支持集群环境-设计业务与框架分离及实现定时任务调度

    我们的各个服务需要改造支持集群,现在的授权、日程使用的是基于内存的spring scheduler定时任务,如果部署多个节点,那么到了时间点,多个节点都会开始执行定时任务从而可能引起业务和性能上的问题。 服务中的定时任务比较轻量,为了避免引入redis、zookeeper、单独的定时

    2023年04月09日
    浏览(43)
  • 【Springboot系列】整合redis+jedis(含源码)

    Spring Boot集成Redis和Jedis客户端使用Redis有以下主要特点: ​ 👉简单易用只需要添加相关依赖和简单配置,就可以直接在Spring Boot应用中使用Jedis客户端操作Redis。这大大简化了使用Redis的难度。 ​ 👉自动配置Spring Boot会根据类路径中的Jedis版本自动配置JedisConnectionFactory。我们只

    2024年02月12日
    浏览(44)
  • Redis-redis事务、乐观锁、Jedis、SpringBoot整合Redis

    1、事务 ①开启事务、执行事务 ② 取消事务 ③ 编译性异常(代码有问题! 命令有错!),事务中所有的命令都不会被执行! ④ 运行时异常(I/O),如果事务队列中存在语法行,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常! (区别于直接命令错误

    2024年01月16日
    浏览(43)
  • 若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)

    关于若依定时任务的使用可以去看视频默认定时任务的使用 关于springboot整合quartz的整合参考 (150条消息) 定时任务框架Quartz-(一)Quartz入门与Demo搭建_quarzt_是Guava不是瓜娃的博客-CSDN博客 (150条消息) SpringBoot整合Quartz_springboot quartz_桐花思雨的博客-CSDN博客 简单来说,启动一个定任

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包