如何在Aerospike中持久化设置环境变量KEY_SEND?
持久化设置以让查询返回主键(PKs)
如果想让AQL工具每次启动都自动返回主键,或者让应用程序执行查询时稳定获取PKs,这里有几种可靠的解决方案:
针对AQL工具的持久化配置
1. 使用AQL配置文件
AQL支持通过本地配置文件加载默认设置,操作步骤如下:
- 创建或编辑AQL的配置文件,默认路径为
~/.aerospike/aql.conf(若不存在则直接新建) - 在文件中添加以下配置项:
保存后,每次启动AQL时该设置会自动生效,无需手动执行output-pks trueset output pks true命令。
2. 启动AQL时携带命令行参数
如果不想修改配置文件,也可以在启动AQL时直接指定参数:
aql --output-pks true
这种方式每次启动AQL都会开启返回PKs的功能,适合需要重复使用但不想修改配置的场景。
针对应用程序查询的持久化配置
如果你的需求是应用程序(而非AQL工具)执行查询时返回PKs,需要在对应语言的客户端SDK查询策略中配置,以下是几个常见SDK的示例:
- Python SDK:
创建查询策略时开启主键返回:import aerospike config = {"hosts": [("127.0.0.1", 3000)]} client = aerospike.client(config).connect() # 配置查询策略,开启PK返回 policy = aerospike.Policy(pkey=True) # 执行查询时传入该策略 query = client.query("namespace", "set") records = query.results(policy=policy) - Java SDK:
设置QueryPolicy的sendKey属性:AerospikeClient client = new AerospikeClient("127.0.0.1", 3000); QueryPolicy policy = new QueryPolicy(); policy.sendKey = true; // 开启主键返回 Statement stmt = new Statement(); stmt.setNamespace("namespace"); stmt.setSetName("set"); RecordSet rs = client.query(policy, stmt);
这种方式是在应用程序代码层面配置,只要代码不变,每次查询都会返回PKs,完全不受AQL会话设置的影响。
注意:AQL的会话级设置仅对当前AQL窗口有效,重启后会恢复默认值,因此上述AQL方案是解决工具层面的持久化;而应用程序的查询需要单独在客户端SDK中配置,这才是应用级的持久化方案。
内容的提问来源于stack exchange,提问作者Sandeepan Nath
相关产品推荐
相关产品推荐

