Aerospike:如何将 LLIST 用作 LSTACK

Aerospike: How to use LLIST as LSTACK

我目前使用的是 Aerospike 3.7.3。 LSTACK 被大量使用并希望迁移到 LLIST。请澄清我的以下疑问。

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

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

Aerospike's LLIST API is now deprecated and there's a native list data type available.

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

正在迁移数据:

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

实现堆栈:

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

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

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

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


以下是 Aerospike 工程团队成员提供的有关在 LLIST 之上构建堆栈、队列或映射的更多信息和代码示例:

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