python - Aerospike 数据库 - 如何附加到作为 map 值的列表

标签 python aerospike

我有一个非常简单的 map ,只有一个键,值是一个列表。

client.put(key, 
            {bin_name:
                {
                    1523474230000: ['fav', 'fav1']
                }
            }
)

我只想使用操作命令向此列表添加一个值,以保持原子性。我不知道该怎么做。

map_operations 似乎没有所需的 API list_operations.append_list 不是正确的 API。

这一定是键值存储中执行的最常见操作之一。因此,我对自己无法找到这些简单操作的答案感到非常困惑。

我可以在操作命令中组合map_operations和list_operations吗?如果是这样,怎么办。 将不胜感激任何帮助。

免责声明 - 我在 Aerospike 工作,而且是新人。我将其发布到 SO,以便它也使其他社区成员受益。

最佳答案

事实证明,在 Aerospike 中这是一件 super 简单的事情。您所需要的只是这个称为上下文的实体。有关上下文的更多详细信息 here

因此将该上下文应用于上面的示例

client.put(key, 
            {bin_name:
                {
                    1523474230000: ['fav', 'fav1']
                }
            }
)
ctx = [
    cdt_ctx.cdt_ctx_map_key(1523474230000)
]
ops = [
    # We want to append to a list, so we use a list_operation.  The top level being a map is dealt with using ctx.
    list_operations.list_append(bin_name, 'val2', ctx=ctx),
]
client.operate(key, ops)
_, _, result = client.get(key)
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(result)

结果:

{'complex_map_bin': {1523474230000: ['fav', 'fav1', 'val2']}}

关于python - Aerospike 数据库 - 如何附加到作为 map 值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61938680/

相关文章:

Aerospike:无法存储记录。错误:(13L, 'AEROSPIKE_ERR_RECORD_TOO_BIG', 'src/main/client/put.c',106)

in-memory-database - 警告 AEROSPIKE_ERR_CLIENT 套接字写入错误 : 111

python - 从单词中删除数字

python - 有没有一种惯用的方法来建立一个以变量名作为键,值作为值的字典?

python - multiprocessing.Pool() 比仅使用普通函数慢

cassandra - 在开源 Cloud Foundry 中实现 Cassandra 和 Aerospike 的 Service Broker API

python - python manage.py migrate 出现问题 -> 没有名为 psycopg2 的模块

python - Flask Shell 命令不起作用

php - 如果 bin 的元素已知,则 Aerospike 删除列表中的记录

python-3.x - 无法在 python 3.7 中导入 aerospike