Java实现Redis持久化到数据库的关键方法
import java.util.Date;import java.util.Iterator;import java.util.Set;import redis.clients.jedis.Jedis;import com.redis.entity.RedisTable;public class RedisPersistence { /** * 存储所有的redis对象方法 */ public static void saveAllRedis(final String redisIp,final int redisPort,final String appCode) { Jedis redis = new Jedis(redisIp, redisPort);// 连接redis // redis.auth("redis");//验证密码 // KEY操作 Set keys = redis.keys("*");// 列出所有的key,查找特定的key如:redis.keys("foo") 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<string> 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<string> 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<string> 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)); printRedis(redisTable);//保存每一个sortedset记录 } } //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); }}</string></string></string>其中使用的RedisTable实例如下:
import java.util.Date;public class RedisTable { private Long redisId; //保存redis的主键ID private String redisType;//redis的类型如:set/list/hash/sortedset/string private String redisKey;//保存redis时使用的key private String objectName;//此属性主要用于hash数据结构时,保存member的 private String redisValue;//存储的redis的值 private String keyToken;//保存Token时,为区分拼接的字符串 private String score;//此属性为sortedset数据结构时,保存的score值 private Date createTime;//创建时间 private Date updateTime;//更新时间 private String macIp;//redis的IP地址 当然此处也可以存储mac地址 private String port;//redis使用的端口号 private String appCode;//应用区分码 private String remark;//备注 private String isModify;//是否修改。此属性可以用于增量备份时,即在每个redis存储时可以更具key多存储一个属性isModify。 如果有修改,则置为 Y,否则为N. ///////////////////////此处省略 setter and getter 方法////////////////////////}Java实现Redis持久化到数据库的关键方法的更多相关文章
- 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用
java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...
- Java 使用Redis缓存工具的图文详细方法
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...
- Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
以下情况java对象进入持久化状态: session.save()方法把临时对象转变为持久化对象. session.load()和session.get()方法得到的对象总是处于持久化状态. sess ...
- Redis持久化之RDB和AOF
Redis是一个键值对数据库服务器,由于Redis是内存数据库,那么有很多内存的特点,例如掉电易失,或者进程退出,服务器中的数据也将消失不见,所以需要一种方法将数据从内存中写到磁盘,这一过程称之为数据 ...
- 了解Redis持久化
Redis是一个键值对数据库服务器,由于Redis是内存数据库,那么有很多内存的特点,例如掉电易失,或者进程退出,服务器中的数据也将消失不见,所以需要一种方法将数据从内存中写到磁盘,这一过程称之为数据 ...
- Windows Redis安装,Java操作Redis
一.Redis 的安装 1.Redis 下载 Windows 版本下载:https://github.com/dmajkic/redis/downloads 2.解压到 C:\redis-2.4.5- ...
- java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘
15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...
- Spring+Redis集成+关系型数据库持久化
本篇文章主要介绍了"Spring+Redis集成+关系型数据库持久化",主要涉及到Spring+Redis集成+关系型数据库持久化方面的内容,对于Spring+Redis集成+关系 ...
- Java Redis系列2 (redis的安装与使用+redis持久化的实现))
Java Redis系列2 (redis的安装与使用+redis持久化的实现) 什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50 ...
随机推荐
- Q & A
1 使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词. cat words.txt | sort | ...
- 关于python的元类
当你创建一个类时: class Foo(Bar): pass Python做了如下的操作: Foo中有__metaclass__这个属性吗?如果是,Python会在内存中通过__metaclass__ ...
- 10676 涂鸦跳跃(sort)
10676 涂鸦跳跃 该题有题解 时间限制:1000MS 内存限制:65535K提交次数:240 通过次数:19 题型: 编程题 语言: G++;GCC Description 你玩过曾经风靡一 ...
- 网络最大流最短增广路Dinic算法模板
#include<cstdio> #include<cstring> #include<string> #include<cmath> #include ...
- c socket(续)
存在两种字节顺序:NBO与HBO 网络字节顺序NBO(Network Byte Order):按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题. 主机字节顺序(HBO,Host ...
- JS的一些常见验证代码
1//檢查空串 2function isEmpty(str){ 3 if((str == null)||(str.length == 0)) return (true); 4 else retu ...
- UltraEdit 中的常用正则表达式
正则表达式 (UltraEdit Syntax): % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串一定在行尾 ? 匹配除换行符外的任一单个字符. ...
- poj 1411 Calling Extraterrestrial Intelligence Again
题意:给你数m,a,b,假设有数p,q,满足p*q<=m同时a/b<=p/q<=1,求当p*q最大的p和q的值 方法:暴力枚举 -_-|| and 优化范围 我们可以注意到在某一个m ...
- Java 水仙花数
小小练习大神掠过吧 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数&quo ...
- chapter11_1 Lua数组、列表
Lua中的table可以表示其他语言提供的数据结构:数组.记录.线性表.队列.集合等. 在Lua中很少编写搜索算法,因为table本身就提供了直接访问任意类型的功能. 数组 使用整数来索引table即 ...