Aerospike TTL 更新
Aerospike TTL updates
我正在尝试使用 python 客户端将 .put() 更新为 Aerospike 中的现有记录。
我很高兴地发现您实际上可以放入现有记录而不更新 TTL,如此处所示(元参数):https://www.aerospike.com/apidocs/python/client.html?highlight=ttl#aerospike.Client.put。我过去常常通过读取 TTL 然后在新的 put 上重新设置它来做到这一点。
但是,我发现当您使用 aerospike.TTL_DONT_UPDATE 选项时,TTL 会重置为在命名空间上设置的 cold-start-evict-ttl。我该如何避免这种情况并保持之前的 TTL 不变?
交叉发布到 Aerospike 论坛:https://discuss.aerospike.com/t/aerospike-ttls-on-put/4993
不发布示例代码 'bug report' 等同于上厕所后不洗手。如果您只提供服务器的版本和 Python 客户端的版本,它也会有所帮助。
ttl-test.py
from __future__ import print_function
import aerospike
import sys
from aerospike import exception as e
from time import sleep
config = { 'hosts': [ ('127.0.0.1', 3000) ] }
try:
client = aerospike.client(config).connect()
except ex.ClientError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
sys.exit(1)
key = ('test', 'demo', 'foo')
try:
# Write a record
client.put(key, {
'name': 'Hey Joe',
'age': 66
}, meta={'ttl': 4})
except ex.RecordError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
client.put(key, {'z': 26}, meta={'ttl': aerospike.TTL_DONT_UPDATE})
try:
(key, meta) = client.exists(key)
print(meta)
except ex.RecordError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
sleep(5)
try:
(key, meta) = client.exists(key)
print(meta)
except ex.RecordError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
client.close()
现在进行测试:
$ python ttl-test.py
{'gen': 2, 'ttl': 4}
None
似乎有效。请注意,我使用的服务器版本 >= 3.10.1
我正在尝试使用 python 客户端将 .put() 更新为 Aerospike 中的现有记录。
我很高兴地发现您实际上可以放入现有记录而不更新 TTL,如此处所示(元参数):https://www.aerospike.com/apidocs/python/client.html?highlight=ttl#aerospike.Client.put。我过去常常通过读取 TTL 然后在新的 put 上重新设置它来做到这一点。
但是,我发现当您使用 aerospike.TTL_DONT_UPDATE 选项时,TTL 会重置为在命名空间上设置的 cold-start-evict-ttl。我该如何避免这种情况并保持之前的 TTL 不变?
交叉发布到 Aerospike 论坛:https://discuss.aerospike.com/t/aerospike-ttls-on-put/4993
不发布示例代码 'bug report' 等同于上厕所后不洗手。如果您只提供服务器的版本和 Python 客户端的版本,它也会有所帮助。
ttl-test.py
from __future__ import print_function
import aerospike
import sys
from aerospike import exception as e
from time import sleep
config = { 'hosts': [ ('127.0.0.1', 3000) ] }
try:
client = aerospike.client(config).connect()
except ex.ClientError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
sys.exit(1)
key = ('test', 'demo', 'foo')
try:
# Write a record
client.put(key, {
'name': 'Hey Joe',
'age': 66
}, meta={'ttl': 4})
except ex.RecordError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
client.put(key, {'z': 26}, meta={'ttl': aerospike.TTL_DONT_UPDATE})
try:
(key, meta) = client.exists(key)
print(meta)
except ex.RecordError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
sleep(5)
try:
(key, meta) = client.exists(key)
print(meta)
except ex.RecordError as e:
print("Error: {0} [{1}]".format(e.msg, e.code))
client.close()
现在进行测试:
$ python ttl-test.py
{'gen': 2, 'ttl': 4}
None
似乎有效。请注意,我使用的服务器版本 >= 3.10.1