KV存储-Aerospike之客户端操作(Operation)

Aerospike(以下简称Spike)
Spike客户端提供了对数据的标准操作(Operation)。要想在业务中合理的使用这些操作必须提前系统的掌握。
如下是个人对Spike客户端提供操作(Operation)的一些梳理。

1、基础-Operation协议类型

/**操作定义*/
public final class Operation {
......
	public static enum Type {
	   READ(1),
	   READ_HEADER(1),
	   WRITE(2),
	   CDT_READ(3),
	   CDT_MODIFY(4),
	   MAP_READ(3),
	   MAP_MODIFY(4),
	   ADD(5),
	   APPEND(9),
	   PREPEND(10),
	   TOUCH(11);
	   }
   ......
   }

2、标量bin操作

//@TODO ......

3、CDT bin操作

3.1、Map操作

3.1.1、MapOperation

com.aerospike.client.cdt.MapOperation
public class MapOperation {
   private static final int SET_TYPE = 64;
//add
   protected static final int ADD = 65;
   protected static final int ADD_ITEMS = 66;
//put
   protected static final int PUT = 67;
   protected static final int PUT_ITEMS = 68;
//替换
   protected static final int REPLACE = 69;
   protected static final int REPLACE_ITEMS = 70;
//增加与减少 operateMapRank
   private static final int INCREMENT = 73;
   private static final int DECREMENT = 74;
//清除所有
   private static final int CLEAR = 75;
//移除
   private static final int REMOVE_BY_KEY = 76;
   private static final int REMOVE_BY_INDEX = 77;
   private static final int REMOVE_BY_RANK = 79;
   private static final int REMOVE_BY_KEY_LIST = 81;
   private static final int REMOVE_BY_VALUE = 82;
   private static final int REMOVE_BY_VALUE_LIST = 83;
   private static final int REMOVE_BY_KEY_INTERVAL = 84;
   private static final int REMOVE_BY_INDEX_RANGE = 85;
   private static final int REMOVE_BY_VALUE_INTERVAL = 86;
   private static final int REMOVE_BY_RANK_RANGE = 87;
   private static final int REMOVE_BY_KEY_REL_INDEX_RANGE = 88;
   private static final int REMOVE_BY_VALUE_REL_RANK_RANGE = 89;
//所有元素个数量
   private static final int SIZE = 96;
//获取数据
   private static final int GET_BY_KEY = 97;
   private static final int GET_BY_INDEX = 98;
   private static final int GET_BY_RANK = 100;
   private static final int GET_BY_VALUE = 102;  // GET_ALL_BY_VALUE on server.
   private static final int GET_BY_KEY_INTERVAL = 103;
   private static final int GET_BY_INDEX_RANGE = 104;
   private static final int GET_BY_VALUE_INTERVAL = 105;
   private static final int GET_BY_RANK_RANGE = 106;
   private static final int GET_BY_KEY_LIST = 107;
   private static final int GET_BY_VALUE_LIST = 108;
   private static final int GET_BY_KEY_REL_INDEX_RANGE = 109;
   private static final int GET_BY_VALUE_REL_RANK_RANGE = 110;

3.1.2、MapOrder

package com.aerospike.client.cdt;
/**Map存储顺序.*/
public enum MapOrder {
   /**未排序。默认值*/
   UNORDERED(0),
   /**按key排序*/
   KEY_ORDERED(1),
   /**先通过key排序,再通过value排序*/
   KEY_VALUE_ORDERED(3);
......
}

3.1.3、MapPolicy

package com.aerospike.client.cdt;
/**创建map和写入map项时map策略指令*/
public final class MapPolicy {
   /**具有普通Put语义的默认无序唯一键映射*/
   public static final MapPolicy Default = new MapPolicy();
   protected final int attributes;
   protected final int flags;
   protected final int itemCommand;
   protected final int itemsCommand;
......
public MapPolicy(MapOrder order, MapWriteMode writeMode) {
   this.attributes = order.attributes;
   this.flags = MapWriteFlags.DEFAULT;
   this.itemCommand = writeMode.itemCommand;
   this.itemsCommand = writeMode.itemsCommand;
}

3.1.4、MapReturnType

package com.aerospike.client.cdt;
/**map返回类型。从map中选择或删除项目时要返回的数据类型。*/
public final class MapReturnType {
   /**不要返回结果*/
   public static final int NONE = 0;
   /**返回key索引顺序,注:0:第一个key,N:第n个key,-1:最后一个key*/
   public static final int INDEX = 1;
   /**返回反向key顺序,注:0:最后一个key,-1:第一个key*/
   public static final int REVERSE_INDEX = 2;
   /**返回value顺序,注:0:最小值,N:第n个最小值,-1:最大值*/
   public static final int RANK = 3;
   /**返回反向value顺序,注:0:最大值,N:第n个最大值,-1:最小值*/
   public static final int REVERSE_RANK = 4;
   /**返回所选项目的数量*/
   public static final int COUNT = 5;
   /**key读取返回单key,范围key读取返回key列表。*/
   public static final int KEY = 6;
   /**单key读取的返回value,范围读取返回value的列表*/
   public static final int VALUE = 7;
   /**返回k/v项。可能的返回类型为: 1:HashMap:为无序映射; TreeMap:为键顺序映射; List<Entry>:为需要保留范围顺序的范围结果*/
   public static final int KEY_VALUE = 8;
   /**反转map命令和返回值的含义。启用反转标志后,将删除并返回指定key范围之外的key。
	例如:MapOperation.removeByKeyRange(binName, keyBegin, keyEnd, MapReturnType.KEY | MapReturnType.INVERTED);*/
   public static final int INVERTED = 0x10000;
}

3.1.5、MapWriteFlags应用版本>=4.3

package com.aerospike.client.cdt;
/**Map写入位标志,应用版本>=4.3*/
public final class MapWriteFlags {
   /**默认允许创建与更新*/
   public static final int DEFAULT = 0;
   /**如果该项已存在,则该项将被拒绝。如果该键不存在,将创建一个新项。*/
   public static final int CREATE_ONLY = 1;
   /**如果该项已存在,则将覆盖该项。如果该项不存在,该项将被拒绝。*/
   public static final int UPDATE_ONLY = 2;
   /**如果由于写入标志约束而拒绝map项,则不引发错误*/
   public static final int NO_FAIL = 4;
   /**如果由于写入标志约束而拒绝map项,则允许提交其他有效的映射项。*/
   public static final int PARTIAL = 8;
}

3.1.6、MapWriteMode 应用版本<4.3

package com.aerospike.client.cdt;
/**唯一键映射写入类型, 此枚举应仅用于低于4.3的服务器版本 .MapWriteFlags应用版本>=4.3*/
public enum MapWriteMode {
   /**如果该项已存在,则将覆盖该项。如果该键不存在,将创建一个新项。*/
   UPDATE (MapOperation.PUT, MapOperation.PUT_ITEMS),
   /**如果该项已存在,则将覆盖该项。如果密钥不存在,写入将失败*/
   UPDATE_ONLY (MapOperation.REPLACE, MapOperation.REPLACE_ITEMS),
   /**如果key已经存在,则写入将失败。如果该key不存在,将创建一个新项。*/
   CREATE_ONLY (MapOperation.ADD, MapOperation.ADD_ITEMS);
......
}

3.2、List操作

//@TODO ......
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值