aerospike小白老手都爱的使用经验

简单介绍

aerospike目前有开源版本和企业版本,aerospike主要分为三部分aerospike-server、aerospike-tools、aerospike-amc。
aerospike-server是服务节点,主要用于数据的存储和查询。aerospike-tools是工具包,里面有asbackup、asrestore、aql等常用工具包。aerospike-amc是监控平台,通过amc可以查看整个as集群的状态,比如数据存储量、可用磁盘、可用内存等。

aerospike的数据结构

  1. Namespaces
    Namespaces是as数据库的最高层级,相当于关系型数据库的库层级。

  2. Sets
    Sets,相当于关系型数据库的表。Sets属于Namespaces。

  3. Records
    类比于关系型数据库的行,包含Key、Bins和Metadata。Key唯一,一般是通过Key查询指定信息。Bins相当于列。Metadata一般存储ttl等基本信息。

aerospike如何使用

首先我们访问官网https://docs.aerospike.com/,官网是我们学习知识首先考虑的途径。
在这里插入图片描述
进入官网后,选择Docs,可以看到左边有一系列菜单,首先可以根据以下指导进行安装。
在这里插入图片描述
不过在安装之前,我们需要了解为什么使用aerospike,aerospike的优势在于哪里?我们在学习一个工具、一门技术或者一门语言之前,一定要了解清楚自己的学习目标。为什么要学?aerospike的使用场景是哪些?相比较于redis有什么优势?

aerospike和redis的优势对比

  1. aerospike存储支持两种模式,SSD和内存。Redis仅能存储在内存中。这意味着大规模扩展aerospike有非常好的成本优势,而aerospike利用SSD能够提供具有竞争力的性能。
  2. aerospike支持多线程,而Redis仅能支持单线程。
  3. aerospike是建立在持久化的基础上的,索引存储在内存里面,而数据存储在SSD里面。aerospike通常具有亚毫秒级数据访问速度,即使数据库中有数十亿条数据,或几十或者几百TB的数据。而Redis的持久性是通过快照和附件文件达成的,这可能会导致大幅度的性能下降甚至导致数据丢失。

java客户端集成

了解了aerospike的优势之后,我们接着学习aerospike的使用方法吧。我们先看下用java写、读、删除、修改一条记录的方法吧。

// 写入单个值
Key key = new Key("test", "myset", "mykey");
Bin bin = new Bin("mybin", "myvalue");
client.put(policy, key, bin);
// 写入多个值
Bin bin1 = new Bin("name", "John");
Bin bin2 = new Bin("age", 25);
client.put(policy, key, bin1, bin2);
// 删除值,设置值为空
Bin bin1 = Bin.asNull(binName1); // Set bin value to null to drop bin.
client.put(policy, key, bin1);
// 写入数据并设置有效期为2s
WritePolicy writePolicy = new WritePolicy();
writePolicy.expiration = 2;
client.put(writePolicy, key, bin);
// 读取所有列
Record record = client.get(policy, key);
// 读取两列数据,name和age
Record record = client.get(policy, key, "name", "age");
// 删除namespace为test,set为myset,key为mykey的数据
Key key = new Key("test", "myset", "mykey");
client.delete(policy, key);
// 通过批处理读取多条数据
Key[] keys = new Key[size];

for (int i = 0; i < size; i++) {
    keys[i] = new Key("test", "myset", (i + 1));
}

Record[] records = client.get(policy, keys);

如果想了解其他语言的使用方式,可以在官网https://docs.aerospike.com/server/guide/single获取使用方式。比如python、golang等语言。

在这里插入图片描述



备份和恢复

作为一个数据库,在使用过程中避免不了的是导入和导出的功能。从https://docs.aerospike.com/tools/backup/asbacku可以asbackup和asrestore的使用说明。
在这里插入图片描述




我们先介绍一下asbackup的一些重要参数

--host,默认是127.0.0.1,表示连接的as集群地址。
--port,默认是3000,表示连接as集群的端口
--parallel,并行度,表示并行运行的最大扫描调用数。一个namespace是4096个分区。如果设置为4,则分为4个scan分别扫描1024个分区。parallel参数一般设置越大,导出的效率会越高。但是as集群的cpu使用率会提升,as集群的读写耗时可能会增加。所以在设置parallel的时候需要根据业务场景进行设置,一旦发现影响业务正常运行需要马上kill掉。kill掉进程之后导出会马上停止,as集群会逐渐恢复正常。
--directory,导出路径,在导出时候需要确保该目录下是没有文件的。
--compress,压缩算法,可设置为zstd,压缩效率是2倍多。

asrestore同样也有一些重要参数

--host,默认是127.0.0.1,表示连接的as集群地址。
--port,默认是3000,表示连接as集群的端口
--parallel,为写入群集而生成的客户端线程数。较高的数字意味着更快的恢复,但这可能会对服务器性能产生负面影响。但是as集群的cpu使用率会提升,as集群的读写耗时可能会增加。所以在设置parallel的时候需要根据业务场景进行设置,一旦发现影响业务正常运行需要马上kill掉。kill掉进程之后导出会马上停止,as集群会逐渐恢复正常。
--directory,导出路径,在导出时候需要确保该目录下是没有文件的。
--compress,压缩算法,可设置为zstd,压缩效率是2倍多。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值