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

来源:互联网 发布:au软件录音保存 编辑:程序博客网 时间:2024/06/05 12:03

最近做一个报表系统,统计全天的指定时间的数据,数据又分了好几类,数据模型如下

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"));}}



0 0
原创粉丝点击