Table of Contents

上一个主题

Elasticsearch

下一个主题

定时任务

本页

KVDB

服务概述

KVDB是新浪云开发的分布式key-value数据存储服务,用来支持公有云计算平台上的海量key-value存储。KVDB支持的存储容量很大,对每个用户支持100G的存储空间,可支持1,000,000,000条记录,用户可以用KVDB存放简单数据,如好友关系等。

KVDB是高性能高可靠存储,根据我们内部测试,读写都可以达到10w qps。KVDB采用无状态对等的分布式架构,在任一节点发生故障时,KVDB仍然保持正常运行。

服务限制

key的最大长度 200字节
value的最大长度 4M (默认启用压缩)
mget获取的最大KEY个数 32
pkrget获取的最大KEY个数 100

API使用手册

class sae.kvdb.Error

通用错误

class sae.kvdb.Client(debug=0)

debug 是否输出详细调试、错误信息到日志,默认关闭

set(key, val, min_compress_len=0)

设置key的值为val

参数:min_compress_len – 启用zlib.compress压缩val的最小长度,如果val的长度大于此值,则启用压缩,0表示不压缩。
add(key, val, min_compress_len=0)

同set,但只在key不存在时起作用

replace(key, val, min_compress_len=0)

同set,但只在key存在时起作用

delete(key)

删除key。

get(key)

从KVDB中获取一个key的值,存在返回key的值,不存在则返回None

get_multi(keys, key_prefix='')

从KVDB中一次获取多个key的值。返回一个key/value的dict。

参数:
  • keys – key的列表,类型必须为list。
  • key_prefix – 所有key的前缀。请求时会在所有的key前面加上该前缀,返回值里所有的key都会去掉该前缀。
get_by_prefix(prefix, limit=100, marker=None)

从KVDB中查找指定前缀的 key/value pair。返回一个generator,yield的item为一个(key, value)的tuple。

参数:
  • prefix – 需要查找的key的前缀。
  • limit – 最多返回的item个数,默认为100。
  • marker – 指定从哪一个key开始继续查找,只返回该key后面的结果(该key不含在内)。
getkeys_by_prefix(prefix, limit=100, marker=None)

从KVDB中查找指定前缀的key。返回符合条件的key的generator。

参数:
  • prefix – 需要查找的key的前缀。
  • limit – 最多返回的key的个数,默认为100。
  • marker – 指定从哪一个key开始继续查找,只返回该key后面的结果(该key不含在内)。
disconnect_all()

关闭KVDB连接

使用示例

import sae.kvdb

kv = sae.kvdb.Client()

k = 'foo'
kv.set(k, 2)
kv.delete(k)

kv.add(k, 3)
kv.get(k)

kv.replace(k, 4)
kv.get(k)