Java如何实现Redis持久化到数据库

该博客主要展示了如何使用Java的Jedis库连接并操作Redis,包括获取所有键、遍历不同类型的集合(set, hash, list, sortedset, string)并进行存储。通过创建RedisTable对象,将Redis中的数据转化为结构化的信息进行打印和持久化。
摘要由CSDN通过智能技术生成

package com.pxjy.crm;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class RedisPersistence {
/**
* 存储所有的redis对象方法
*/
public static void saveAllRedis(final String redisIp,final int redisPort,final String appCode) {
// 连接redis
Jedis redis = new Jedis(redisIp, redisPort);
// redis.auth(“redis”);//验证密码
// KEY操作 列出所有的key,查找特定的key如:redis.keys(“foo”)
Set<> keys = redis.keys(“*”);
Iterator<> t1 = keys.iterator();
while (t1.hasNext()) {
Object obj1 = t1.next();
saveRedisObject(redis, obj1 + “”, redisIp, redisPort + “”, appCode);
}
}

/**
* 存储单个对象
* @param redis
* @param redisKey
* @param macIp
* @param port
* @param appCode
*/
private static void saveRedisObject(final Jedis redis,final String redisKey,final String macIp,final String port,final String appCode) {
String redisType = redis.type(redisKey);
RedisTable redisTable = new RedisTable();
redisTable.setAppCode(appCode);
redisTable.setCreateTime(new Date());
redisTable.setMacIp(macIp);
redisTable.setPort(port);
redisTable.setRedisKey(redisKey);
redisTable.setRedisType(redisType);
redisTable.setRemark(“”);
redisTable.setUpdateTime(new Date());
//set集合
if(“set”.equalsIgnoreCase(redisType)){
Set setStrings = redis.smembers(redisKey);//获取key的所有set集合
if(null != setStrings && !setStrings.isEmpty()){
Iterator setIterator = setStrings.iterator() ;
while(setIterator.hasNext()){
Object obj1 = setIterator.next();
redisTable.setRedisValue(obj1+“”);
printRedis(redisTable);//保存每一个set记录
}
}
//hash集合
}else if(“hash”.equalsIgnoreCase(redisType)){
Set hashSets = redis.hkeys(redisKey);
if(null != hashSets && !hashSets.isEmpty()){
Iterator setIterator = hashSets.iterator() ;
while(setIterator.hasNext()){
String objectName = setIterator.next()+“”;
redisTable.setObjectName(objectName);
redisTable.setRedisValue(redis.hget(redisKey, objectName));
printRedis(redisTable);//保存每一个set记录
}
}
//list集合
}else if(“list”.equalsIgnoreCase(redisType)){
Long listLen = redis.llen(redisKey);
for (Long i = 0L; i < listLen; i++) {
redisTable.setRedisValue(redis.lindex(redisKey, i));
printRedis(redisTable);
}
//sortedset集合
}else if(“sortedset”.equalsIgnoreCase(redisType)){
// Long redisLenth = redis.zcard(redisKey);
Set sortedsets = redis.zrange(redisKey, 0, -1);
if(null != sortedsets && !sortedsets.isEmpty()){
Iterator setIterator = sortedsets.iterator() ;
while(setIterator.hasNext()){
String sortedMember = setIterator.next() +“”;
redisTable.setRedisValue(sortedMember);
redisTable.setScore(“” +redis.zscore(redisKey, sortedMember));
//保存每一个sortedset记录
printRedis(redisTable);
}
}
//string集合
}else if(“string”.equalsIgnoreCase(redisType)){
redisTable.setRedisValue(redis.get(redisKey));
//保存记录
printRedis(redisTable);
}else{
System.out.println("UnknowRedisType-----redisType: " +redisType+"objValue: "+redis.get(redisKey));
}
}

//打印输出
public static void printRedis (RedisTable redisTable) {
System.out.println(“redisType:”+redisTable.getRedisType() + " redisKey:“+redisTable.getRedisKey()+ " ObjectName:”+redisTable.getObjectName()
+ " redisValue:“+redisTable.getRedisValue()+ " redisScore:”+redisTable.getScore());
}

public static void main(String[] args) {
String redisIp = “127.0.0.1”;//redis的IP地址
int redisPort = 6379;//redis的端口号
String appCode = “FUYOU”;//根据不同的应用区分的appcode
saveAllRedis(redisIp,redisPort,appCode);
}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值