- 介绍
- 介绍 - 资料收集整理
- 安装 - Linux单机部署
- 官方文档(翻译)
- 官方文档(翻译) - 开发指南
- 开发指南 - 搭建本地集群
- 开发指南 - 和etcd交互
- 开发指南 - API 参考文档
- 开发指南 - API 并发参考文档
- 开发指南 - gRPC 网关
- 开发指南 - gRPC命名与发现
- 开发指南 - 试验性的API和特性
- 开发指南 - 系统限制
- 官方文档(翻译) - 操作etcd集群
- 操作etcd集群 - 搭建etcd集群
- 搭建etcd集群 - 运行时重配置
- 搭建etcd集群 - 运行时重配置的设计
- 操作etcd集群 - 搭建etcd网关
- 操作etcd集群 - 在容器内运行etcd集群
- 操作etcd集群 - 配置
- 操作etcd集群 - 加密(TODO)
- 操作etcd集群 - 维护
- 操作etcd集群 - 理解失败
- 操作etcd集群 - 灾难恢复
- 操作etcd集群 - 性能
- 操作etcd集群 - 版本
- 操作etcd集群 - 支持平台
- 官方文档(翻译) - 学习
- 学习 - 理解数据模型
- 学习 - 理解API
- 学习 - 术语
- 学习 - API保证
- API参考文档(翻译)
- API参考文档(翻译) - KV service
- KV service - Range方法
- KV service - Put方法
- KV service - DeleteRange方法
- KV service - Txn方法
- KV service - Compact方法
- API参考文档(翻译) - Watch service
- Watch service - Watch方法
- API参考文档(翻译) - Lease service
- Lease service - LeaseGrant方法
- Lease service - LeaseRevoke方法
- Lease service - LeaseKeepAlive方法
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
KV service - Range方法
Range方法从键值存储中获取范围内的key.
rpc Range(RangeRequest) returns (RangeResponse) {}
注意没有操作单个key的方法,即使是存取单个key,也是需要使用 Range
方法的。
消息体
请求的消息体是RangeRequest:
message RangeRequest {
enum SortOrder {
NONE = 0; // 默认, 不排序
ASCEND = 1; // 正序,低的值在前
DESCEND = 2; // 倒序,高的值在前
}
enum SortTarget {
KEY = 0;
VERSION = 1;
CREATE = 2;
MOD = 3;
VALUE = 4;
}
// key是range的第一个key。如果 range_end 没有给定,请求仅查找这个key
bytes key = 1;
// range_end 是请求范围的上限[key, range_end)
// 如果 range_end 是 '\0',范围是大于等于 key 的所有key。
// 如果 range_end 比给定的key长一个bit, 那么范围请求获取所有带有前缀(给定的key)的key
// 如果 key 和 range_end 都是'\0',则范围查询返回所有key
bytes range_end = 2;
// 请求返回的key的数量限制
int64 limit = 3;
// 修订版本是用于范围的键值对存储的时间点。
// 如果 revision 小于或等于零,范围是在最新的键值对存储上。
// 如果修订版本已经被压缩,返回 ErrCompacted 作为应答
int64 revision = 4;
// 指定返回结果的排序顺序
SortOrder sort_order = 5;
// 用于排序的键值字段
SortTarget sort_target = 6;
// 设置范围请求使用串行化成员本地读(serializable member-local read)。
// 范围请求默认是线性化的;线性化请求相比串行化请求有更高的延迟和低吞吐量,但是反映集群当前的一致性。
// 为了更好的性能,以可能脏读为交换,串行化范围请求在本地处理,无需和集群中的其他节点达到一致。
bool serializable = 7;
// 设置仅返回key而不需要value
bool keys_only = 8;
// 设置仅仅返回范围内key的数量
bool count_only = 9;
}
应答的消息体是 RangeResponse:
message RangeResponse {
ResponseHeader header = 1;
// kvs是匹配范围请求的键值对列表
// 当请求数量时是空的
repeated mvccpb.KeyValue kvs = 2;
// more代表在被请求的范围内是否还有更多的key
bool more = 3;
// 被请求范围内key的数量
int64 count = 4;
}
mvccpb.KeyValue 的消息体:
message KeyValue {
// key是bytes格式的key。不容许key为空。
bytes key = 1;
// create_revision 是这个key最后创建的修订版本
int64 create_revision = 2;
// mod_revision 是这个key最后修改的修订版本
int64 mod_revision = 3;
// version 是key的版本。删除会重置版本为0,而任何key的修改会增加它的版本。
int64 version = 4;
// value是key持有的值,bytes格式。
bytes value = 5;
// lease是附加给key的租约id。
// 当附加的租约过期时,key将被删除。
// 如果lease为0,则没有租约附加到key。
int64 lease = 6;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论