在 aerospike 中插入或更新数据
Insert or update data in aerospike
我想在Aerospike中插入一些记录,如果记录已经存在那么我只想更新它。
目前我正在使用这个查询(插入)-
client.put(wPolicy, key,bin1,bin2)
有人可以告诉我如何根据记录是否重复更新或插入吗?
使用默认写入策略,它执行以下操作:
(1)如果指定的bin还不存在,则插入;和
(2) 如果指定的 bin 存在并且有值,这些值将被替换。
要使用默认写入策略,如果您使用的是 Java 客户端,只需将 null
传递给 writePolicy
参数即可。我怀疑其他客户也会类似。
如果您的问题还有更多子部分,您可以在问题中添加详细信息,我稍后会重新讨论。
如Aaron mentioned, the default write policy for existence is AS_POLICY_EXISTS_IGNORE
,即"Write the record, regardless of existence. (i.e. create or update.)"。因此,您不必明确设置存在策略,因为它已经按照您的预期进行了。
您可以选择更像 SQL 的行为,AS_POLICY_EXISTS_CREATE
(如果记录已存在则写入失败),AS_POLICY_EXISTS_UPDATE
(如果记录已存在则写入失败该记录尚不存在)和 AS_POLICY_EXISTS_REPLACE
(如果记录不存在则写入失败,并且您编写的内容总是完全替换以前的版本)和 AS_POLICY_EXISTS_CREATE-OR-REPLACE
(这会创建一个如果 none 存在则创建新记录,如果存在则完全覆盖该记录)。
在Python client you would set one of these alternative existence write policies on the aerospike.Client.put()
中:
from __future__ import print_function
import aerospike
from aerospike.exception import RecordError
config = {
'hosts': [ ('127.0.0.1', 3000) ],
'timeout': 1500
}
client = aerospike.client(config).connect()
try:
key = ('test', 'users', 1)
bins = {
'username': 'ninjastar',
'age': 47,
'hp': 1234
}
client.put(key, bins,
policy={'exists': aerospike.POLICY_EXISTS_CREATE},
meta={'ttl': 3600})
except RecordError as e:
print("The user record already exists: {0} [{1}]".format(e.msg, e.code))
sys.exit(1)
finally:
client.close()
exists 的可能值为 aerospike.POLICY_EXISTS_*
。
我想在Aerospike中插入一些记录,如果记录已经存在那么我只想更新它。 目前我正在使用这个查询(插入)-
client.put(wPolicy, key,bin1,bin2)
有人可以告诉我如何根据记录是否重复更新或插入吗?
使用默认写入策略,它执行以下操作:
(1)如果指定的bin还不存在,则插入;和
(2) 如果指定的 bin 存在并且有值,这些值将被替换。
要使用默认写入策略,如果您使用的是 Java 客户端,只需将 null
传递给 writePolicy
参数即可。我怀疑其他客户也会类似。
如果您的问题还有更多子部分,您可以在问题中添加详细信息,我稍后会重新讨论。
如Aaron mentioned, the default write policy for existence is AS_POLICY_EXISTS_IGNORE
,即"Write the record, regardless of existence. (i.e. create or update.)"。因此,您不必明确设置存在策略,因为它已经按照您的预期进行了。
您可以选择更像 SQL 的行为,AS_POLICY_EXISTS_CREATE
(如果记录已存在则写入失败),AS_POLICY_EXISTS_UPDATE
(如果记录已存在则写入失败该记录尚不存在)和 AS_POLICY_EXISTS_REPLACE
(如果记录不存在则写入失败,并且您编写的内容总是完全替换以前的版本)和 AS_POLICY_EXISTS_CREATE-OR-REPLACE
(这会创建一个如果 none 存在则创建新记录,如果存在则完全覆盖该记录)。
在Python client you would set one of these alternative existence write policies on the aerospike.Client.put()
中:
from __future__ import print_function
import aerospike
from aerospike.exception import RecordError
config = {
'hosts': [ ('127.0.0.1', 3000) ],
'timeout': 1500
}
client = aerospike.client(config).connect()
try:
key = ('test', 'users', 1)
bins = {
'username': 'ninjastar',
'age': 47,
'hp': 1234
}
client.put(key, bins,
policy={'exists': aerospike.POLICY_EXISTS_CREATE},
meta={'ttl': 3600})
except RecordError as e:
print("The user record already exists: {0} [{1}]".format(e.msg, e.code))
sys.exit(1)
finally:
client.close()
exists 的可能值为 aerospike.POLICY_EXISTS_*
。