Java实现Redis持久化到数据库的关键方法(二)

2014-11-24 02:40:46 · 作者: · 浏览: 1
IP地址 int redisPort = 6379;//redis的端口号 String appCode = "FUYOU";//根据不同的应用区分的appcode saveAllRedis(redisIp,redisPort,appCode); } }


其中的appCode是不需要的,这里只是为了针对于不同的应用,可以使用同一个redis进行持久化备份而已(通过appcode来区分)。

其中使用的RedisTable实例如下:

package com.redis.entity;

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 方法////////////////////////


}



以上方法可以扩充用于redis备份中心。

在使用redis增量备份时,请根据rediskey在数据块中查找是否存在。根据更新值返回的0或者是1,进行更新或者新增的操作。

当然数据库的表结构目前只是一张表,如果数据量很大的情况下,可以将端口、IP、appCode信息存储到单独的一张表,减少数据冗余。

以上的时间复杂度以及效率上并没有优化。如果要求比较高,请自行优化。


希望各位大侠给出建议,共同进步!