我有一些数据要存储在针对列的空气动力学中
假设输入数据是
overflow-scroll='false'
现在第一个问题是如何用Java保存这些数据。
我试过这个。
["A", 1]
当我尝试使用
将此数据写入aerospike时ArrayList value = new ArrayList();
value.add(new String("A"));
value.add(new Integer(2));
然后,如果我使用AQL查询,那么我正在看
| AC ED 00 05 73 72 00 13 6A 61 76 61 2E 75 74 69 6C 2E 41 72 72 61 79 4C 69 73 74 78 81 D2 1D 99 C7 61 9D 03 00 01 49 00 04 73 69 7A 65 78 70 00 00 00 02 77 04 00 00 00 02 73 72 00 11 6A 61 76 61 2E 6C 61 6E 67 2E 49 6E 74 65 67 65 72 12 E2 A0 A4 F7 81 87 |
一些HexaDecimal数字
但是当我尝试使用
将数据存储到Aerospike中时AerospikeClient client = client.put(new WritePolicy(),
new Key("namespace", "set", "test"),
new Bin("binName", value) );
然后通过AQL触发查询给我
[" A",1]
当我使用Aerospike客户端获取值并检查其类型时,这似乎是预期的行为
AerospikeClient client = client.put(new WritePolicy(),
new Key("namespace", "set", "test"),
new Bin("binName", Value.getAsList(value)) );
然后我可以看到print语句虽然我最初发送了Integer数据。
为什么会发生这种情况,任何人都可以告诉我任何替代解决方案将输入数据保存到aerospike中说数据是
List<Object> ret = (List<Object>) client.get(new Policy(), key, "test").getValue("binName");
if(ret.get(0) instanceof Long){
System.out.println("Got instance of long");
}
PS:请用小代码snippit支持你的回答
在GITHUB上发现了一些信息
参考this链接有一些功能
我在下面复制/粘贴
["A",1]
有一条评论说服务器将数字转换为长
现在我有一个问题。那么这种类型的Case整数是否意味着无法存储?
答案 0 :(得分:1)
如果查看Aerospike datatypes,您会发现它们只支持64位整数,这些整数是Java中的long
类型。
如果您不需要通过Lua UDF脚本在服务器上访问此数据,则可以将其另存为序列化blob数据。 java驱动程序已经支持本机序列化,这是您在第一次尝试时所做的。 AQL只显示序列化的字节,但你可以在java客户端中读回来。
或者您可以将其存储为json序列化字符串,以便它与您将来可能使用的其他语言驱动程序更兼容。