content: package com.sohu.cache.entity;
  
  import java.sql.Timestamp;
  import java.text.DecimalFormat;
  import java.util.Map;
  
  /**
   * 实例的简化的统计信息
   *
   * User: lingguo
   * Date: 14-7-27 下午3:59
   */
  public class InstanceStats {
      /* id */
      private long id;
  
      /* 实例id */
      private long instId;
  
      /* app id */
      private long appId;
  
      /* host id */
      private long hostId;
  
      /* ip地址 */
      private String ip;
  
      /* port */
      private int port;
  
      /* 主从，1主2从 */
      private byte role;
  
      /* 启用实例时设置的内存，单位：byte */
      private long maxMemory;
  
      /* 实例当前已用的内存，单位：byte */
      private long usedMemory;
  
      /*
       * 实例内存使用率
       */
      private double memUsePercent;
  
      /* 当前的item数 */
      private long currItems;
  
      /* 当前的连接数 */
      private int currConnections;
  
      /* 未命中数*/
      private long misses;
  
      /* 命中数 */
      private long hits;
  
      /* 开始收集时间 */
      private Timestamp createTime;
  
      /* 最后更新时间 */
      private Timestamp modifyTime;
      
      /**
       * 内存碎片率
       */
      private double memFragmentationRatio;
      
      /**
       * aof阻塞次数
       */
      private int aofDelayedFsync;
  
      private boolean isRun;
  
      /**
       * 实例相关全部统计指标
       */
      private Map<String,Object> infoMap;
  
      public String getIp() {
          return ip;
      }
  
      public void setIp(String ip) {
          this.ip = ip;
      }
  
      public int getPort() {
          return port;
      }
  
      public void setPort(int port) {
          this.port = port;
      }
  
      public long getMaxMemory() {
          return maxMemory;
      }
  
      public void setMaxMemory(long maxMemory) {
          this.maxMemory = maxMemory;
      }
  
      public long getUsedMemory() {
          return usedMemory;
      }
  
      public void setUsedMemory(long usedMemory) {
          this.usedMemory = usedMemory;
      }
  
      public long getCurrItems() {
          return currItems;
      }
  
      public void setCurrItems(long currItems) {
          this.currItems = currItems;
      }
  
      public int getCurrConnections() {
          return currConnections;
      }
  
      public void setCurrConnections(int currConnections) {
          this.currConnections = currConnections;
      }
  
  
      public long getMisses() {
          return misses;
      }
  
      public void setMisses(long misses) {
          this.misses = misses;
      }
  
      public long getHits() {
          return hits;
      }
  
      public void setHits(long hits) {
          this.hits = hits;
      }
  
      public long getAppId() {
          return appId;
      }
  
      public void setAppId(long appId) {
          this.appId = appId;
      }
  
      public long getHostId() {
          return hostId;
      }
  
      public void setHostId(long hostId) {
          this.hostId = hostId;
      }
  
      public long getId() {
          return id;
      }
  
      public void setId(long id) {
          this.id = id;
      }
  
      public Timestamp getCreateTime() {
          return createTime;
      }
  
      public void setCreateTime(Timestamp createTime) {
          this.createTime = createTime;
      }
  
      public Timestamp getModifyTime() {
          return modifyTime;
      }
  
      public void setModifyTime(Timestamp modifyTime) {
          this.modifyTime = modifyTime;
      }
  
      public byte getRole() {
          return role;
      }
  
      public void setRole(byte role) {
          this.role = role;
      }
  
      public long getInstId() {
          return instId;
      }
  
      public void setInstId(long instId) {
          this.instId = instId;
      }
  
      public double getMemFragmentationRatio() {
          return memFragmentationRatio;
      }
  
      public void setMemFragmentationRatio(double memFragmentationRatio) {
          this.memFragmentationRatio = memFragmentationRatio;
      }
  
      public int getAofDelayedFsync() {
          return aofDelayedFsync;
      }
  
      public void setAofDelayedFsync(int aofDelayedFsync) {
          this.aofDelayedFsync = aofDelayedFsync;
      }
  
      @Override
      public String toString() {
          return "InstanceStats [id=" + id + ", instId=" + instId + ", appId=" + appId + ", hostId=" + hostId + ", ip="
                  + ip + ", port=" + port + ", role=" + role + ", maxMemory=" + maxMemory + ", usedMemory=" + usedMemory
                  + ", memUsePercent=" + memUsePercent + ", currItems=" + currItems + ", currConnections="
                  + currConnections + ", misses=" + misses + ", hits=" + hits + ", createTime=" + createTime
                  + ", modifyTime=" + modifyTime + ", memFragmentationRatio=" + memFragmentationRatio
                  + ", aofDelayedFsync=" + aofDelayedFsync + ", isRun=" + isRun + ", infoMap=" + infoMap + "]";
      }
  
      public Map<String, Object> getInfoMap() {
          return infoMap;
      }
  
      public void setInfoMap(Map<String, Object> infoMap) {
          this.infoMap = infoMap;
      }
  
      public boolean isRun() {
          return isRun;
      }
  
      public void setRun(boolean isRun) {
          this.isRun = isRun;
      }
  
      public double getMemUsePercent() {
          if(maxMemory<=0){
              return 0.0D;
          }
          double percent = 100 * (double) usedMemory / (maxMemory);
          DecimalFormat df = new DecimalFormat("##.##");
          return Double.parseDouble(df.format(percent));
      }
      
      /**
       * 命中率
       * @return
       */
      public String getHitPercent(){
  		long totalHits = hits + misses;
  		if (totalHits <= 0) {
  			return "无命令执行";
  		}
  		double percent = 100 * (double) hits / totalHits;
  		DecimalFormat df = new DecimalFormat("##.##");
  		return df.format(percent) + "%";
      }
  }
  