关于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是需要再配置文件中配置的:
编辑aerospike.conf
新建一个见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");
    }
}

Logo

更多推荐