Aerospike:如何使用LLIST作为LSTACK

时间:2016-03-19 08:21:26

标签: aerospike

我目前正在使用Aerospike 3.7.3。 LSTACK主要使用并希望迁移到LLIST。请澄清我的以下疑问。

  1. 如何在不影响密钥的情况下将数据从LSTACK迁移到LLIST。或以其他方式,而不影响使用它的客户。

  2. 如何使用LLIST实现LSTACK的功能。我目前正在使用python客户端2.x

1 个答案:

答案 0 :(得分:3)

  

Aerospike的LLIST API现已弃用,原生list   数据类型可用。

     

http://www.aerospike.com/docs/guide/cdt-list.html

迁移数据:

LLIST具有不同的API和控制结构,因此您需要为每条记录迁移数据。最快的是在服务器上运行的简单Lua脚本,只需读取所有堆栈项,并使用下面的逻辑将它们复制到列表中。

实施堆栈:

LLIST API实际上已经在服务器上实现为Lua函数,因此您可以编写自己的Lua代码来包装这些函数并在LLIST之上实现堆栈逻辑。然后从客户端驱动程序中调用这些Lua函数。这将同样快,并保持对记录的写锁定,因此操作是原子的。

基本逻辑是使用LLIST作为堆栈项的持有者,并使用记录上的另一个bin来保存索引号,该索引号保持列表中项目数的位置(或计数)。

  • PUSH - 将项目添加到列表中。增加索引号。

  • POP - 查找索引号。减少这个数字。退货 在列表的查找值位置。

以下是有关在Aerospike工程团队成员的LLIST上构建堆栈,队列或地图的更多信息和代码示例:

https://github.com/helipilot50/aerospike-LDT-techniques