SpringBoot+Redis+Mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库 一、重点 代码讲解:7.1点赞功能-定时持久化到数据库-Java整合l
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博客
@Overridepublic 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]] 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://blog.csdn.net/ws_please/article/details/131623224
--结束END--
本文标题: springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库
本文链接: https://www.lsjlt.com/news/405571.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-29
2024-04-29
2024-04-29
2024-04-29
2024-04-28
2024-04-28
2024-04-28
2024-04-28
2024-04-28
2024-04-28
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0