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

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

bash 复制代码
/**
     * 将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数据导入的数据的重复性问题。

相关推荐
小小工匠3 小时前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
taocarts_bidfans7 小时前
反向海淘跨境缓存架构优化:taocarts Redis分层缓存实战技术
redis·缓存·架构·反向海淘·taocarts
炘爚9 小时前
Linux——Redis
数据库·redis·缓存
csjane107910 小时前
Redisson 限流原理
java·redis
ThanksGive10 小时前
Go 服务里的 Redis 锁惊群问题:一次本地合流优化实践
redis
小挪号底迪滴10 小时前
Redis 和 MySQL 数据不一致怎么办?缓存更新策略实战
redis·mysql·缓存
闪电悠米11 小时前
黑马点评-Redis ZSet-实现关注 Feed 流
服务器·网络·数据库·redis·缓存·junit·lua
Devin~Y11 小时前
大厂 Java 面试实录:从音视频内容社区到 AI RAG 的全链路技术设计
java·spring boot·redis·spring cloud·微服务·kafka·音视频
小小工匠12 小时前
Redis - 主从集群脑裂:数据丢失的隐藏杀手
数据库·redis