首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决Aerospike::Exception::Aerospike:不支持Ruby客户端的服务器功能?

如何解决Aerospike::Exception::Aerospike:不支持Ruby客户端的服务器功能?
EN

Stack Overflow用户
提问于 2018-09-12 12:09:22
回答 1查看 477关注 0票数 1

当我试图使用ruby客户端写到aerospike时,我得到了以下例外:-

特例::空运:不支持的服务器特性

详情:-

代码语言:javascript
复制
Aerospike version:- 4.3
Client: [Ruby] aerospike - 2.4.0
namespaces: NS1, NS2, NS3 

注意: NS2和NS3具有单位真数据索引真。

代码(导致异常):-

代码语言:javascript
复制
client = Aerospike::Client.new('aerospike:3000')
key = Aerospike::Key.new('NS2', 'set name', 'this is the key')
data = { 'record'  => 1 }
client.put(key, data) # this line raises the exception
Aerospike::Exceptions::Aerospike: Unsupported Server Feature

如果我将NS2键更改为NS1,则不会引发异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-13 03:01:38

您所得到的“不支持的服务器功能”错误是因为Ruby客户端默认将用户密钥发送到服务器,但是Aerospike服务器不支持存储内存中的数据和单桶设置的用户密钥。您应该在服务器日志中看到这样的错误消息:

代码语言:javascript
复制
Sep 13 2018 02:42:20 GMT: WARNING (rw): (rw_utils.c:153) {sbin} can't store key if data-in-memory & single-bin

您需要通过将send_key写策略设置设置为false来禁用发送键作为put请求的一部分

代码语言:javascript
复制
$ bundle exec irb
2.5.0 :001 > require 'aerospike'; include Aerospike;
 => Object
2.5.0 :002 > client = Client.new; key = Key.new('sbin', 'test', 'foo'); nil
 => nil
2.5.0 :003 > client.put(key, Bin.new('', 42), send_key: false)
 => nil
2.5.0 :004 > client.get(key).bins['']
 => 42
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52294841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档