实现将redis中的所有数据备份到数据库表中

news2024/11/27 6:17:08

实现将redis中的所有数据备份到数据库表中

/**
     * 将redis中的数据同步到mysql中
     */
    @Override
    public void  saveMysqlForRedis(){
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //System.out.println(jedis.ping());
        Set keys = jedis.keys("*");//列出所有的key
        Iterator t1 = keys.iterator();
        while (t1.hasNext()){
            Object obj1 = t1.next();
            saveRedisObject(jedis,obj1+"","127.0.0.1","6379");
        }

    }
    //存储单个对象
    public  void saveRedisObject(final Jedis jedis,final String rediskey,final String macIp,final String port ){
        String redisType = jedis.type(rediskey);//返回值的类型
        RedisTable redisTable = new RedisTable();
        redisTable.setRediskey(rediskey);
        redisTable.setRedistype(redisType+"/");
        //set集合
        if("set".equalsIgnoreCase(redisType)){
            Set<String> setStrings = jedis.smembers(rediskey);
            if(null!=setStrings && !setStrings.isEmpty()){
                Iterator setIterator = setStrings.iterator();
                while (setIterator.hasNext()){
                    Object obj1 = setIterator.next();
                    redisTable.setRedisvalue(obj1+"");
                    redisTableService.insert(redisTable);//save
                }
            }
        }
        //hash
        else if ("hash".equalsIgnoreCase(redisType)) {
            Set<String> hashSet = jedis.hkeys(rediskey);
            if(null != hashSet && !hashSet.isEmpty()){
                Iterator setIterator = hashSet.iterator();
                while (setIterator.hasNext()){
                    String objectName = setIterator.next()+"";
                    redisTable.setRedisvalue(jedis.hget(rediskey,objectName));
                    redisTableService.insert(redisTable);//save
                }
            }
        }else if("string".equalsIgnoreCase(redisType)){
            redisTable.setRedisvalue((jedis.get(rediskey)));
            redisTableService.insert(redisTable);//save
        }
    }
    ...同样的,还有redis的其他数据类型,如下图:

在这里插入图片描述
注意:
1.需要考虑redis和mysql数据的一致性;
2.考虑redis数据导入的数据的重复性问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度解读为什么说软件测试人人都能学

目录 1.软件测试的发展历程 2.软件测试行业优势 3.优就业软件测试学科优势 1.软件测试的发展历程 软件测试从上个世纪50年代发展至今&#xff0c;共经历了五个阶段&#xff1a;调试测试、证明测试、破坏性测试、评估测试、预防测试等&#xff0c;如下图&#xff1a; 现在已…

什么是NUMA,我们为什么要了解NUMA

在IA多核平台上进行开发时&#xff0c;我们经常会提到NUMA这个词 &#xff0c;那么NUMA到底指的是什么&#xff1f;我们怎么可以感受到它的存在&#xff1f;以及NUMA的存在对于我们编程会有什么影响&#xff1f;今天我们一起来看一下。 1、NUMA的由来 NUMA(Non-Uniform Memory…

MySQL(十):MySQL语法-进阶

MySQL语法-进阶 数据类型Text 类型Number 类型Date 类型 ASALTER TABLEconcat、group_concatSQL注入阻止SQL注入方案一方案二方案三 HAVING 子句临时表正则表达式获取服务器元数据事务导出数据导出数据导出表作为原始数导出SQL格式的数据 导入数据解决无法导入问题使用 LOAD DA…

kali linux 安装python 3xx 以及多版本切换的方式

简介 在渗透测试的时候&#xff0c;我们通常会用到不同的工具&#xff0c;这些工具可能对python的版本要求不一样&#xff0c;这个时候我们可能就需要在kali上面安装不同版本的python&#xff0c;以及灵活的切换python的版本。 下载python3并安装 以python38来举例&#xff…

Visual Studio 中的新特性:可视化宏扩展

今天&#xff0c;我们很高兴地宣布在 Visual Studio 17.7 预览版中推出可视化宏扩展功能。这个新功能通过可视化的方式对宏代码进行逐步扩展。 若要开始使用此功能&#xff0c;请确保你的 Visual Studio 版本更新到最新版本的 Visual Studio 预览版。 下面&#xff0c;我们来看…

图解Vit 3:Vision Transformer——ViT模型全流程拆解

文章目录 Layer NormalizationClassification TokenPosition embeedding 先把上一篇中的遗留问题解释清楚&#xff1a;上图中&#xff0c;代码中的all_head_dim就是有多少head。把他们拼接起来。 Encoder在Multi-Head Self-Attention之后&#xff0c;维度一直是BND&#xff0c;…

python flask 通过页面输入python代码,执行结果返回页面

1&#xff0c;不太好用 项目结构 app.py from flask import Flask, render_template, request import io import sysapp Flask(__name__)app.route(/) def index():return render_template(index.html)app.route(/execute, methods[POST]) def execute():code request.form[…

B071-项目实战-用户模块--手机注册 管理员登录

目录 完成注册功能后端开发完成UserControllerUserServiceImplLogininfoMapper 前端页面完成绑定数据绑定事件准备登录页 管理员登录1需求分析登录设计页面设计表设计流程设计所需技术 员工新增级联操作登录信息EmployeeServiceImplShopServiceImpl 管理员登录2前端页面后端接口…

Learning to cartoonize using white-box cartoon representations

论文笔记--漫画生成--White-box Cartoon Representations - 知乎论文 Learning to Cartoonize Using White-box Cartoon Representations 源码https://github.com/SystemErrorWang/White-box-Cartoonization效果算法概述这篇论文是将图像风格转成漫画风格&#xff0c;作者认为可…

MySQL索引index

目录 1.索引的概念 2.索引的优缺点 3.索引的数据结构 4.索引结构 1.二叉树&#xff1a; ​编辑2.红黑树&#xff1a; 3.BTree&#xff08;B-Tree&#xff09;&#xff1a; ​编辑4.传统BTree&#xff1a; ​编辑5.MySQL中的BTree&#xff1a; ​编辑6.Hash&#xf…

浅谈电子设备之电磁屏蔽箱设计要点

屏蔽箱又称隔离箱、屏蔽盒和电磁屏蔽箱&#xff0c;可以对传导和辐射进行处理&#xff0c;为无线通讯产品生产制造提供高效的隔离测试环境&#xff0c;测试内容包含耦合测试、RF功能测试、电磁干扰测试和电磁兼容性测试。屏蔽箱多采用铝合金材料设计&#xff0c;屏蔽材料阻隔能…

C语言模拟实现字符串处理函数

需要多一点点勇气&#xff0c;来面对变差的自己 大家好&#xff0c;我是纪宁。 这篇文章为大家带来的是5大字符串处理函数的模拟实现。 文章目录 1.strlen函数的模拟实现 2.strcpy函数的模拟实现 3.strcmp函数的模拟实现 4.strcat函数的模拟实现 5.strstr函数的模拟实现…

相机标定-基础(一)

1. 何为相机标定? 当相机拍摄照片时,我们看到的图像通常与我们实际看到的不完全相同。这是由相机镜头引起的,而且发生的频率比我们想象的要高。 这种图像的改变就是我们所说的畸变。一般来说,畸变是指直线在图像中出现弯曲或弯曲。 这种畸变我们可以通过相机标定来进行解…

反常积分题目

目录 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a;​ 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; 我们首先引入反常积分的定义&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/131676865 题目1&#xff1a; 题目2…

STM32 ws2812b多屏驱动程序

文章目录 前言一、ws2812b的数据传输以及屏幕的组合二、代码ws2812screen.c文件ws2812screen.h文件主函数 前言 在上篇文章中使用了stm32的dmatim的方式点亮了ws2812b的灯 但是我的需求不仅仅是点亮他&#xff0c;我需要他像屏幕一样显示某一些东西&#xff0c;ws2812显示有一…

深入学习 Redis - 全局命令、过期策略如何实现、高效定时器原理

目录 Redis 全局命令 get 和 set keys keys 使用注意事项 exists exists 使用注意事项 del del 使用注意事项 expire 【面试经典】redis 中 key 的过期策略是怎么实现的&#xff1f; 定时器实现原理&#xff08;非 Redis 实现&#xff0c;拓展&#xff09; 1.基于 …

21 - 队列 - 循环队列——队列的顺序表示和实现

前面我们学习数组队列,链式队列,我们今天来学习循环队列。 队列的定义 队列(Queue)也是一种线性表, 但是它仅能在一端进行插入,而另一端进行删除的操作 ,插入的一端称为 队尾rear,删除的一端称为 队头front 。 向一个栈插入新元素又称作进队或入队, 从一个栈删除元素…

从实体按键看 Android 车载的自定义事件机制

在汽车数字化、智能化变革的进程中&#xff0c;越来越多的车机设计或部分、或全部地舍弃了实体按键&#xff0c;进而把车主操作的入口转移到了车机 UI 以及语音助手。 但统一、高效的零层级 UI 颇为困难&#xff0c;语音的准确率、覆盖率亦不够完善&#xff0c;那么在当下的阶段…

【数据结构】文件的归并排序

目录 1、归并排序引申出的问题 2、磁盘与文件的关系---包含与被包含的关系 3、思路&#xff1a; 4、代码实现 1、归并排序引申出的问题 归并排序是最常用的外排序的方法&#xff08;但归并排序既可进行内部排序也可进行外部排序&#xff09;&#xff0c;外排序就是在磁盘中…

LLaMA(Open and Efficient Foundation Language Models )论文解读(二)

此篇博客主题:LLAMA模型数据、训练时长、功耗及碳排放量 LLaMA: Open and Efficient Foundation Language Models paper https://arxiv.org/pdf/2302.13971v1.pdf 1 训练样本 Overall, our entire training dataset contains roughly 1.4T tokens after tokenization. For mo…