Aerospike学习 java语言操作Aerospike

2022-06-21 00:00:00 专区 写入 概念 新建一个 类似于

关于aerospike(一下简称as)是什么,我不再说了,关于as怎么安装启动我也不再赘述,这里有一篇文章给大家参考:Linux下安装Aerospike。下面是java操作as的详细步骤,主要是参考官网来做的。
首先说一下as里面的存储数据的一些名词:主要是Policy,Namespace,Set,Key,Bin,Record。
Policy:策略。暂时就了解到是为as操作里面的数据时设置一些策略。
NameSpace:命名空间。类似于RDBMS中的schema的概念。
Set:类似于表的概念。
Key:类似于行的概念。
Bin:类似于列的概念。
Record:记录,一个Key和一个Bin可以确认一个Record。
这里所有的我只能用“类似”来描述,因为我觉得这样比较容易分清和记住。
as中的namespace是需要再配置文件中配置的:

新建一个见test的namespace

环境:
- MAVEN
- IDEA
- VMware+Linux
- as

首先新建maven项目,pom文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.yjw</groupId>
<artifactId>aerospikedemo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--aerospike客户端-->
<dependency>
<groupId>com.aerospike</groupId>
<artifactId>aerospike-client</artifactId>
<version>[3.0.0,)</version>
</dependency>
</dependencies>

</project>

主要是要引入as的客户端。下面新建一个测试类操作as。

/*
* Copyright (c) 2016 www.bsfit.com.cn All Rights Reserved.
*/

import com.aerospike.client.AerospikeClient;
import com.aerospike.client.Bin;
import com.aerospike.client.Key;
import com.aerospike.client.Record;
import com.aerospike.client.policy.WritePolicy;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
* The type Aerospike test.
*
* @author: YeJunwei Date: 2016/11/7 Time: 20:42
*/
public class AerospikeTest {
private Logger logger= Logger.getLogger(AerospikeTest.class);
/**
* 新建一个as客户端,构造方法:
* AerospikeClient(String hostname, int port)
* Initialize Aerospike client.
*/
AerospikeClient as = new AerospikeClient("192.168.147.134",3000);
/**
* The Write policy.
*/
//新建一个写入策略
WritePolicy writePolicy = new WritePolicy();
/**
* The Key.
*/
//新建一个key,namespace为test,set为mySet,根据文档这个myKey并不是这个key的名字
Key key = new Key("test","mySet","myKey");

/**
* Before.
*/
@Before
public void before(){
logger.error("this is before method");
writePolicy.timeout=50;// 50 millisecond timeout.
}

/**
* As writing value.
* 向同一个key中写入两个不同的bin,logger输出里面的record
* 如果bin的名字一样,那么前一个会被后一个所覆盖,所以写入和修改都是同一个方法
*/
@Test
public void ASWritingValue(){
Bin bin = new Bin("myBin","myValue");
Bin bin2 = new Bin("myBin2","myValue2");
as.put(null,key,bin);
as.put(null,key,bin2);
logger.info(as.get(null,key));
}

/**
* As del bin.
* 删除key中的名为“mybin”的bin
*/
@Test
public void ASDelBin(){
Bin bin = Bin.asNull("myBin");
as.put(null,key,bin);
logger.info(as.get(null,key));
}

/**
* Get record.
* 根据key和申明的bin的名字来获取指定的record
*/
@Test
public void getRecord(){
//得到所有record
Record recordAll=as.get(null,key);
Record record1=as.get(null,key,"myBin");
Record record2=as.get(null,key,"myBin2");
Record records=as.get(null,key,"myBin","myBin2");
logger.info(recordAll);
logger.info(record1);
logger.info(record2);
logger.info(records);
}

/**
* Del records.
* 删除records,官网的解释是这样的:This example deletes the key mykey from the namespace test in the set myset。
*/
@Test
public void delRecords(){
as.delete(null,key);
}

/**
* After.
*/
@After
public void after(){
logger.error("this is after method");
}
}
————————————————
版权声明:本文为CSDN博主「yezhuanxu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yezhuanxu/article/details/53081527

相关文章