您的位置:首页 > 数据库 > Redis

java实现类似与redis的hash存储操作

2016-01-29 14:00 676 查看
最近做一个报表系统,统计全天的指定时间的数据,数据又分了好几类,数据模型如下

time typeA valueA

time typeB valueB

联想到此种数据存储模式跟redis的hash操作类似,key ------ field --------value式的存储结构,决定采用java进行抽象

key选择用String类型,field和value采用一个整体,类似于map进行处理,为了让map有序输入,采用LinkedHashMap,最终抽象出来的编码如下:

import java.util.LinkedHashMap;
import java.util.Map;

/**
* ClassName:HashInfo
* Function: TODO ADD FUNCTION.
* Reason:	 TODO ADD REASON.
* Date:     2016年1月23日 下午3:40:58
* @author   ygwu
* @version  v1.0
* @see
*/
@SuppressWarnings({ "rawtypes", "serial" })
public class HashInfo extends LinkedHashMap{
private Map sub = new LinkedHashMap();
/**
* 设置sub.
*
* @param   sub  设置HashInfo类型变量   sub
*/
public void setSub(Map sub) {
this.sub = sub;
}
@SuppressWarnings("unchecked")
public synchronized void hset(String key,String hkey,Object value){
sub = (Map) this.get(key);
if(sub == null){
sub = new LinkedHashMap();
}
sub.put(hkey, value);
this.put(key, sub);
}
public synchronized Object hget(String key,String hkey){
Map sub = (Map) this.get(key);
if(sub != null){
return sub.get(hkey);
}
return null;
}
}


测试程序如下:

/**
* Project Name:ucardynpriceweb
* File Name:HashInfoTest.java
* Package Name:com.zuche.pricing.report.util
* Date:2016年1月29日下午1:58:13
* Copyright (c) 2016, ygwu@10101111.com|yg.wu02@zuche.com All Rights Reserved.
*
*/

package com.zuche.pricing.report.util;
/**
* ClassName:HashInfoTest
* Function: TODO ADD FUNCTION.
* Reason:	 TODO ADD REASON.
* Date:     2016年1月29日 下午1:58:13
* @author   ygwu
* @version  v1.0
* @see
*/
public class HashInfoTest {

public static void main(String[] args) {
HashInfo hash = new HashInfo();
hash.hset("key", "field", "value");
System.out.println(hash.hget("key", "field"));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: