我目前正在使用Aerospike 3.7.3。 LSTACK主要使用并希望迁移到LLIST。请澄清我的以下疑问。
如何在不影响密钥的情况下将数据从LSTACK迁移到LLIST。或以其他方式,而不影响使用它的客户。
如何使用LLIST实现LSTACK的功能。我目前正在使用python客户端2.x
答案 0 :(得分:3)
Aerospike的LLIST API现已弃用,原生
list
数据类型可用。
迁移数据:
LLIST具有不同的API和控制结构,因此您需要为每条记录迁移数据。最快的是在服务器上运行的简单Lua脚本,只需读取所有堆栈项,并使用下面的逻辑将它们复制到列表中。
实施堆栈:
LLIST API实际上已经在服务器上实现为Lua函数,因此您可以编写自己的Lua代码来包装这些函数并在LLIST之上实现堆栈逻辑。然后从客户端驱动程序中调用这些Lua函数。这将同样快,并保持对记录的写锁定,因此操作是原子的。
基本逻辑是使用LLIST作为堆栈项的持有者,并使用记录上的另一个bin来保存索引号,该索引号保持列表中项目数的位置(或计数)。
PUSH - 将项目添加到列表中。增加索引号。
POP - 查找索引号。减少这个数字。退货 在列表的查找值位置。
以下是有关在Aerospike工程团队成员的LLIST上构建堆栈,队列或地图的更多信息和代码示例: