Aerospike:如何将 LLIST 用作 LSTACK
Aerospike: How to use LLIST as LSTACK
我目前使用的是 Aerospike 3.7.3。 LSTACK 被大量使用并希望迁移到 LLIST。请澄清我的以下疑问。
如何在不影响密钥的情况下将数据从 LSTACK 迁移到 LLIST。或者以其他方式不影响使用它的客户。
如何使用LLIST实现LSTACK的功能。我目前正在使用 python 客户端 2.x
Aerospike's LLIST API is now deprecated and there's a native list
data type available.
正在迁移数据:
LLIST 具有不同的 API 和控制结构,因此您需要为每条记录迁移数据。最快的是在服务器上运行的简单 Lua 脚本,它只读取所有堆栈项目并使用以下逻辑将它们复制到列表中。
实现堆栈:
LLIST API 实际上已经在服务器上实现为 Lua 函数,因此您可以编写自己的 Lua 代码来包装这些函数并在 LLIST 之上实现堆栈逻辑.然后只需从客户端驱动程序调用那些 Lua 函数。这将同样快,并保持记录上的写锁,因此操作是原子的。
基本逻辑是使用 LLIST 作为堆栈项目的容器,并使用记录上的另一个 bin 来保存索引号,该索引号维护列表中项目数的位置(或计数)。
PUSH - 将项目添加到列表中。增加索引号。
POP - 查找索引号。减少这个数字。 Return 项目
在列表的查找值位置。
以下是 Aerospike 工程团队成员提供的有关在 LLIST 之上构建堆栈、队列或映射的更多信息和代码示例:
我目前使用的是 Aerospike 3.7.3。 LSTACK 被大量使用并希望迁移到 LLIST。请澄清我的以下疑问。
如何在不影响密钥的情况下将数据从 LSTACK 迁移到 LLIST。或者以其他方式不影响使用它的客户。
如何使用LLIST实现LSTACK的功能。我目前正在使用 python 客户端 2.x
Aerospike's LLIST API is now deprecated and there's a native
list
data type available.
正在迁移数据:
LLIST 具有不同的 API 和控制结构,因此您需要为每条记录迁移数据。最快的是在服务器上运行的简单 Lua 脚本,它只读取所有堆栈项目并使用以下逻辑将它们复制到列表中。
实现堆栈:
LLIST API 实际上已经在服务器上实现为 Lua 函数,因此您可以编写自己的 Lua 代码来包装这些函数并在 LLIST 之上实现堆栈逻辑.然后只需从客户端驱动程序调用那些 Lua 函数。这将同样快,并保持记录上的写锁,因此操作是原子的。
基本逻辑是使用 LLIST 作为堆栈项目的容器,并使用记录上的另一个 bin 来保存索引号,该索引号维护列表中项目数的位置(或计数)。
PUSH - 将项目添加到列表中。增加索引号。
POP - 查找索引号。减少这个数字。 Return 项目 在列表的查找值位置。
以下是 Aerospike 工程团队成员提供的有关在 LLIST 之上构建堆栈、队列或映射的更多信息和代码示例: