AeroSpike Java客户端连接读写AS实例

来源:互联网 发布:java object equals 编辑:程序博客网 时间:2024/05/16 19:44

AeroSpike 最简单Java客户端实例

本篇文章介绍了java客户端读写AS最简单的步骤跟方法,并在最后给出一个实例。更复杂的功能将在后面的文章中介绍。

准备

在maven中添加Aerospike依赖:

      <dependencies>          <dependency>              <groupId>com.aerospike</groupId>              <artifactId>aerospike-client</artifactId>              <version>[3.0.0,)</version>          </dependency>      </dependencies>

建立客户端连接Aerospike数据库

建立一个连接数据库的客户端,需要知道ip跟端口。

ip可以根据ip addr"|grep 'global eth1查看确认:

lihanlin$ vagrant ssh -c "ip addr"|grep 'global eth1'    inet 172.28.128.3/24 brd 172.28.128.255 scope global eth1

端口在之前的数据库配置中有讲过,配置文件的network-service-port字段来配置,默认是3000。

单节点数据库连接

import com.aerospike.client.AerospikeClient;AerospikeClient client = new AerospikeClient("172.28.128.3", 3000);

集群数据库连接

import com.aerospike.client.AerospikeClient;import com.aerospike.client.Host;import com.aerospike.client.policy.ClientPolicy;Host[] hosts = new Host[] {    new Host("a.host", 3000),    new Host("another.host", 3000),    new Host("and.another.host", 3000)};AerospikeClient client = new AerospikeClient(new ClientPolicy(), hosts);

关闭客户端 回收资源

client.close();

在关闭连接回收资源后,就不能再用它进行读写操作了。

写入数据

设置写入的策略

// Initialize policy.WritePolicy policy = new WritePolicy();policy.timeout = 50;  // 50 millisecond timeout.

这里只设置了超时时间,还有很多其他可以设置的参数,这里就不一一介绍了~后面有机会根据具体的功能会再介绍。

写入一条记录的一个字段

Key key = new Key("test","testset","testkey");Bin binString = new Bin("testbinString","testvalue");client.put(policy,key,binString);

每一个key对应一条记录,key由namespace、set、keyvalue组成。
每一个bin相当于一个字段,由字段名称、字段的值组成。
最后由客户端写入key和bin。

写入一条记录的多个字段的值

上例中只写入了一条记录一个字段的值,如果有多个字段,可以设置多个bin同时写入:

Key key = new Key("test","testset","testkey");Bin binString = new Bin("testbinString","testvalue");Bin binInt = new Bin("testbinInt",1);client.put(policy,key,binString,binInt);

默认的写入策略

之前我们设置了写入策略的超时时间,没有配置其他参数,此时默认的策略是:

  • 如果记录不存在就创建一个记录

  • 如果记录存在bin也存在就更新bin的值

  • 如果记录有其他bin存在,保留他们的值

当然我们还有其他的策略:

  • CREATE_ONLY:只有记录不存在时才写入记录

  • REPLACE_ONLY:当记录存在时,完全替换该条记录

删除数据

删除一条记录的一个字段

删除一条记录的一个字段其实就是把这个字段设为null就可以了,例如删除记录为key字段名字为binName1的值:

Bin bin1 = Bin.asNull(binName1); // Set bin value to null to drop bin.client.put(policy, key, bin1);

删除一整条记录

删除namespace为”test”,set为”myset”,keyvalue为”mykey”的一条记录:

Key key = new Key("test", "myset", "mykey");client.delete(policy, key);

读出数据

读出一条记录的特定字段

读出一条key记录的名字为bin1、bin2的bin的值

Record record = client.get(policy, key, "bin1", "bin2");

读出一条记录的所有字段

读出一条key记录的所有bin的值

Record record = client.get(policy, key);

读写实例:

import com.aerospike.client.*;import com.aerospike.client.policy.ClientPolicy;import com.aerospike.client.policy.Policy;import com.aerospike.client.policy.WritePolicy;/** * Created by lihanlin on 16/11/4. */public class AerospikeDemo {    public static void main(String[] args){        AerospikeClient client = new AerospikeClient("172.28.128.3",3000);        // Initialize policy.        WritePolicy policy = new WritePolicy();        policy.timeout = 50;        Key key = new Key("test","testset","testkey");        Bin binString = new Bin("testbinString","testvalue");        Bin binInt = new Bin("testbinInt",1);        client.put(policy,key,binString,binInt);        Record recordAll = client.get(policy,key);        Record recordSpecificBin = client.get(policy,key,"testbinString");        System.out.println(recordAll.toString());        System.out.println(recordSpecificBin.toString());        client.close();    }}

输出结果:

(gen:2),(exp:216464286),(bins:(testbinString:testvalue),(testbinInt:1))(gen:2),(exp:216464286),(bins:(testbinString:testvalue))
0 0
原创粉丝点击