java 连接 redis 并且向redis 放入数据

来源:互联网 发布:网络社保是什么梗 编辑:程序博客网 时间:2024/06/05 05:02

package cai.fu.com;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.SystemUtils;

import com.linuxense.javadbf.DBFField;
import com.linuxense.javadbf.DBFReader;
import com.linuxense.javadbf.DBFWriter;

import net.sf.json.JSONObject;
import redis.clients.jedis.Jedis;

public class Rwdbf {
 private static Jedis jedis;

 public static void setup() {
  // 连接redis服务器,192.168.0.188:6379
  jedis = new Jedis("192.168.0.188", 6379);
  // 权限认证
  // jedis.auth("sa123456");
 }

 public static void readDBF(String path)

 {

  InputStream fis = null;
  Map map = new HashMap();
  Map maptop = new HashMap();
  try {
   // 读取文件的输入流
   fis = new FileInputStream(path);
   // 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息
   DBFReader reader = new DBFReader(fis);
   // 调用DBFReader对实例方法得到path文件中字段的个数
   int fieldsCount = reader.getFieldCount();

   Object[] rowValues;

   List<String> keyLs = new ArrayList<String>();
   Map<String, JSONObject> allMap = new HashMap<String, JSONObject>();
   Map<String, JSONObject> top30Map = new HashMap<String, JSONObject>();
   Map<String, JSONObject> last30Map = new HashMap<String, JSONObject>();

   long begin = System.currentTimeMillis();
   long end = System.currentTimeMillis();
   // 一条条取出path文件中记录
   while ((rowValues = reader.nextRecord()) != null) {
    String symbol = rowValues[0].toString();

    

    for (int i = 0; i < rowValues.length; i++) {

     
     
     
     if (i == 0) {
      // 0.股票代码

      map.put("symbol", symbol);
     } else if (i == 1) {
      // 股票名称
      map.put("securiName", rowValues[i].toString());
     } else if (i == 2) {
      String cloPrices = rowValues[i].toString();

      double topPrices = Double.parseDouble(cloPrices) * 1.1;
      double fallPrices = Double.parseDouble(cloPrices) * 0.90;

      double pricetop = topPrices - 9;
      double pricefall = fallPrices - 9;

      BigDecimal bfall = new BigDecimal(pricefall);
      double pricefa = bfall.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
      BigDecimal btop = new BigDecimal(pricetop);
      double priceto = btop.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

      // 7.跌停价
      map.put("pricefall", pricefa);
      // 6.涨停价
      map.put("pricetop", pricetop);

      BigDecimal bdto = new BigDecimal(Double.parseDouble(rowValues[i].toString()));
      double pricebdto = bdto.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
      // 3.收盘价
      map.put("close", pricebdto);
     } else if (i == 3) {
      // 2.今开
      map.put("open", rowValues[i].toString());
     } else if (i == 4) {
      // 1.现价
      map.put("currentPrice", rowValues[i].toString());
     } else if (i == 5) {
      // 9.成交数量
      map.put("amount", new BigDecimal(rowValues[i].toString()).toPlainString());
     } else if (i == 6) {
      // 成交金额
      map.put("dealAmount", rowValues[i].toString());
     } else if (i == 7) {
      map.put("HQCJBS", rowValues[i].toString());
     } else if (i == 8) {
      BigDecimal hqzgcj = new BigDecimal(rowValues[i].toString());
      double pricehqzgcj = hqzgcj.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
      // 4.最高价
      map.put("high", pricehqzgcj);
     } else if (i == 9) {
      BigDecimal hazdcj = new BigDecimal(rowValues[i].toString());
      double priceHazdcj = hazdcj.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
      // 5.最低价
      map.put("low", priceHazdcj);
     } else if (i == 10) {
      map.put("HQSYL1", rowValues[i].toString());
     } else if (i == 11) {
      map.put("HQSYL2", rowValues[i].toString());
     } else if (i == 12) {
      map.put("HQJSD1", rowValues[i].toString());
     } else if (i == 13) {
      map.put("HQJSD2", rowValues[i].toString());
     } else if (i == 14) {
      map.put("HQHYCC", rowValues[i].toString());
     } else if (i == 15) {
      // HQSJW5:行情Sell价位5
      // HQSSL5:行情Buy数量5
      map.put("HQSJW5", rowValues[i].toString());
     } else if (i == 16) {
      map.put("HQSSL5", rowValues[i].toString());
     } else if (i == 17) {
      map.put("HQSJW4", rowValues[i].toString());
     } else if (i == 18) {
      map.put("HQSSL4", rowValues[i].toString());
     } else if (i == 19) {
      map.put("HQSJW3", rowValues[i].toString());
     } else if (i == 20) {
      map.put("HQSSL3", rowValues[i].toString());
     } else if (i == 21) {
      map.put("HQSJW2", rowValues[i].toString());
     } else if (i == 22) {
      map.put("HQSSL2", rowValues[i].toString());
     } else if (i == 23) {
      map.put("HQSJW1", rowValues[i].toString());
     } else if (i == 24) {
      map.put("HQSSL1", rowValues[i].toString());
     } else if (i == 25) {
      map.put("HQBJW1", rowValues[i].toString());
     } else if (i == 26) {
      map.put("HQBSL1", rowValues[i].toString());
     } else if (i == 27) {
      map.put("HQBJW2", rowValues[i].toString());
     } else if (i == 28) {
      map.put("HQBSL2", rowValues[i].toString());
     } else if (i == 29) {
      map.put("HQBJW3", rowValues[i].toString());
     } else if (i == 30) {
      map.put("HQBSL3", rowValues[i].toString());
     } else if (i == 31) {
      map.put("HQBJW4", rowValues[i].toString());
     } else if (i == 32) {
      map.put("HQBSL4", rowValues[i].toString());
     } else if (i == 33) {
      map.put("HQBJW5", rowValues[i].toString());
     } else if (i == 34) {
      map.put("HQBSL5", rowValues[i].toString());
     }
     // 8.换手率
     map.put("change", "");
    }
    
    if ((symbol.startsWith("000") || symbol.startsWith("002") || symbol.startsWith("300"))) {
//     System.out.print(map.get("symbol")+"\t");
//     System.out.print(map.get("securiName")+"\t");
//     System.out.print(map.get("currentPrice")+"\t");
//     System.out.print(map.get("close")+"\t");
     //System.out.println(map.get("dealAmount")+"\t");
    
     
     //System.out.print(new BigDecimal(map.get("dealAmount").toString()).toPlainString()+"\t");
    
     BigDecimal   b   =   new   BigDecimal(map.get("pricefall").toString());
     double   pricefall   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
     //System.out.print(pricefall+"\t");
     BigDecimal   bp   =   new   BigDecimal(map.get("pricetop").toString());
     double   pricetop   =   bp.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
     //System.out.println(pricetop+"\t");
     
     maptop.put("symbols",map.get("symbol"));
     maptop.put("securiNames",map.get("securiName"));
     maptop.put("currentPrices",map.get("currentPrice"));
     maptop.put("closes",map.get("close"));
     maptop.put("dealAmounts",new BigDecimal(map.get("dealAmount").toString()).toPlainString());
     maptop.put("pricefalls",map.get("pricefall"));
     maptop.put("pricetopss",map.get("pricetop"));
    }
    
//    if(map.get("symbol").equals("000")){
//     BigDecimal   b   =   new   BigDecimal(map.get("pricefall").toString());
//     double   pricefall   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
//     //System.out.print(pricefall+"\t");
//     BigDecimal   bp   =   new   BigDecimal(map.get("pricetop").toString());
//     double   pricetop   =   bp.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
//     //System.out.println(pricetop+"\t");
//     
//     maptop.put("symbols",map.get("symbol"));
//     maptop.put("securiNames",map.get("securiName"));
//     maptop.put("currentPrices",map.get("currentPrice"));
//     maptop.put("closes",map.get("close"));
//     maptop.put("dealAmounts",new BigDecimal(map.get("dealAmount").toString()).toPlainString());
//     maptop.put("pricefalls",map.get("pricefall"));
//     maptop.put("pricetopss",map.get("pricetop"));
//    }else if(map.get("symbol").equals("002")){
//     BigDecimal   b   =   new   BigDecimal(map.get("pricefall").toString());
//     double   pricefall   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
//     //System.out.print(pricefall+"\t");
//     BigDecimal   bp   =   new   BigDecimal(map.get("pricetop").toString());
//     double   pricetop   =   bp.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
//     //System.out.println(pricetop+"\t");
//     
//     maptop.put("symbols",map.get("symbol"));
//     maptop.put("securiNames",map.get("securiName"));
//     maptop.put("currentPrices",map.get("currentPrice"));
//     maptop.put("closes",map.get("close"));
//     maptop.put("dealAmounts",new BigDecimal(map.get("dealAmount").toString()).toPlainString());
//     maptop.put("pricefalls",map.get("pricefall"));
//     maptop.put("pricetopss",map.get("pricetop"));
//    }else if(map.get("symbol").equals("300")){
//     BigDecimal   b   =   new   BigDecimal(map.get("pricefall").toString());
//     double   pricefall   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
//     //System.out.print(pricefall+"\t");
//     BigDecimal   bp   =   new   BigDecimal(map.get("pricetop").toString());
//     double   pricetop   =   bp.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
//     //System.out.println(pricetop+"\t");
//     
//     maptop.put("symbols",map.get("symbol"));
//     maptop.put("securiNames",map.get("securiName"));
//     maptop.put("currentPrices",map.get("currentPrice"));
//     maptop.put("closes",map.get("close"));
//     maptop.put("dealAmounts",new BigDecimal(map.get("dealAmount").toString()).toPlainString());
//     maptop.put("pricefalls",map.get("pricefall"));
//     maptop.put("pricetopss",map.get("pricetop"));
//    }
     
    
    
    JSONObject jsonObject = JSONObject.fromObject(map);
    JSONObject jsonMaptop = JSONObject.fromObject(maptop);
    //System.out.println(jsonMaptop);

    String key = maptop.get("symbols") + "#" + maptop.get("pricefalls");
//    System.out.println(maptop.get("pricefalls"));
//    System.out.println(maptop.get("symbols"));
    keyLs.add(key);
    allMap.put(key, jsonMaptop);
    
    jedis.set("6_"+jsonMaptop.get("symbols"),jsonMaptop.toString());
    

   }
   //end = System.currentTimeMillis();

   //System.out.println("================解析DBF=" + (end - begin) / 1000.0);

   //begin = System.currentTimeMillis();
   Collections.sort(keyLs, new Comparator<String>() {
    public int compare(String arg0, String arg1) {
     arg0 = arg0.substring(arg0.indexOf("#") + 1);
     BigDecimal a = new BigDecimal(arg0);
     arg1 = arg1.substring(arg1.indexOf("#") + 1);
     BigDecimal b = new BigDecimal(arg1);
     return b.compareTo(a);
    }
   });
//   end = System.currentTimeMillis();
//
//   System.out.println("================排序" + (end - begin) / 1000.0);
//   System.out.println(keyLs);
//   System.out.println(keyLs.size());

   
   //begin = System.currentTimeMillis();
   int size = keyLs.size();
   int last = size - 31;
   
   int c = 29;
   for (int j = 0; j < size; j++) {
    String key = keyLs.get(j);
    if (j < 30) {
     top30Map.put("top_"+j+"_"+key.substring(0,key.indexOf("#")), allMap.get(key));
    } else if (j > last) {     
     last30Map.put("last_"+c+"_"+key.substring(0,key.indexOf("#")), allMap.get(key));
     c--;
    }
   }
   
//   end = System.currentTimeMillis();
//
//   System.out.println("================存储排行" + (end - begin) / 1000.0);
   
   System.out.println(top30Map.keySet());
   System.out.println(last30Map.keySet());
   

  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    fis.close();
   } catch (Exception e) {
   }
  }
 }

 public static void main(String[] args) {
  Rwdbf rdbf = new Rwdbf();
  String path = "E:\\SJSHQ.DBF";
  setup();
  rdbf.readDBF(path);
 }

}

0 0