1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264:
<?php
/**
* SAE KV 服务 API
*
* @author Chen Lei <simpcl2008@gmail.com>
* @version $Id$
* @package sae
*/
/**
* SAE KV 服务 API
*
* <code>
* <?php
* $kv = new SaeKV();
*
* // 初始化SaeKV对象
* $ret = $kv->init("accesskey"); //访问授权应用的数据
* var_dump($ret);
*
* // 增加key-value
* $ret = $kv->add('abc', 'aaaaaa');
* var_dump($ret);
*
* // 更新key-value
* $ret = $kv->set('abc', 'bbbbbb');
* var_dump($ret);
*
* // 替换key-value
* $ret = $kv->replace('abc', 'cccccc');
* var_dump($ret);
*
* // 获得key-value
* $ret = $kv->get('abc');
* var_dump($ret);
*
* // 删除key-value
* $ret = $kv->delete('abc');
* var_dump($ret);
*
* // 一次获取多个key-values
* $keys = array();
* array_push($keys, 'abc1');
* array_push($keys, 'abc2');
* array_push($keys, 'abc3');
* $ret = $kv->mget($keys);
* var_dump($ret);
*
* // 前缀范围查找key-values
* $ret = $kv->pkrget('abc', 3);
* var_dump($ret);
*
* // 循环获取所有key-values
* $ret = $kv->pkrget('', 100);
* while (true) {
* var_dump($ret);
* end($ret);
* $start_key = key($ret);
* $i = count($ret);
* if ($i < 100) break;
* $ret = $kv->pkrget('', 100, $start_key);
* }
*
* // 获取选项信息
* $opts = $kv->get_options();
* print_r($opts);
*
* // 设置选项信息 (关闭默认urlencode key选项)
* $opts = array('encodekey' => 0);
* $ret = $kv->set_options($opts);
* var_dump($ret);
*
* </code>
*
* 错误代码及错误提示消息:
*
* - 0 "Success"
*
* - 10 "AccessKey Error"
* - 20 "Failed to connect to KV Router Server"
* - 21 "Get Info Error From KV Router Server"
* - 22 "Invalid Info From KV Router Server"
*
* - 30 "KV Router Server Internal Error"
* - 31 "KVDB Server is uninited"
* - 32 "KVDB Server is not ready"
* - 33 "App is banned"
* - 34 "KVDB Server is closed"
* - 35 "Unknown KV status"
*
* - 40 "Invalid Parameters"
* - 41 "Interaction Error (%d) With KV DB Server"
* - 42 "ResultSet Generation Error"
* - 43 "Out Of Memory"
* - 44 "SaeKV constructor was not called"
* - 45 "Key does not exist"
*
* @author Chen Lei <simpcl2008@gmail.com>
* @version $Id$
* @package sae
*/
class SaeKV
{
/**
* 空KEY前缀
*/
const EMPTY_PREFIXKEY = '';
/**
* mget获取的最大KEY个数
*/
const MAX_MGET_SIZE = 32;
/**
* pkrget获取的最大KEY个数
*/
const MAX_PKRGET_SIZE = 100;
/**
* KEY的最大长度
*/
const MAX_KEY_LENGTH = 200;
/**
* VALUE的最大长度 (4 * 1024 * 1024)
*/
const MAX_VALUE_LENGTH = 4194304;
/**
* 构造函数
* @param int $timeout KV操作超时时间,默认为3000ms
*/
function __construct($timeout=3000) {
}
/**
* 初始化Sae KV 服务
* 若不加参数,则使用本应用的Kvdb数据,若传入被授权应用的AccessKey,则使用
* 被授权应用的Kvdb
* @return bool
*/
function init($accesskey="") {
}
/**
* 获得key对应的value
*
* @param string $key 长度小于MAX_KEY_LENGTH字节
* @return string|bool 成功返回value值,失败返回false
* 时间复杂度 O(log N)
*/
function get($key) {
}
/**
* 更新key对应的value
*
* @param string $key 长度小于MAX_KEY_LENGTH字节,当不设置encodekey选项时,key中不允许出现非可见字符
* @param string $value 长度小于MAX_VALUE_LENGTH
* @return bool 成功返回true,失败返回false
* 时间复杂度 O(log N)
*/
function set($key, $value) {
}
/**
* 增加key-value对,如果key存在则返回失败
*
* @param string $key 长度小于MAX_KEY_LENGTH字节,当不设置encodekey选项时,key中不允许出现非可见字符
* @param string $value 长度小于MAX_VALUE_LENGTH
* @return bool 成功返回true,失败返回false
* 时间复杂度 O(log N)
*/
function add($key, $value) {
}
/**
* 替换key对应的value,如果key不存在则返回失败
*
* @param string $key 长度小于MAX_KEY_LENGTH字节,当不设置encodekey选项时,key中不允许出现非可见字符
* @param string $value 长度小于MAX_VALUE_LENGTH
* @return bool 成功返回true,失败返回false
* 时间复杂度 O(log N)
*/
function replace($key, $value) {
}
/**
* 删除key-value
*
* @param string $key 长度小于MAX_KEY_LENGTH字节
* @return bool 成功返回true,失败返回false
* 时间复杂度 O(log N)
*/
function delete($key) {
}
/**
* 批量获得key-values
*
* @param array $ary 一个包含多个key的数组,数组长度小于等于MAX_MGET_SIZE
* @return array|bool 成功返回key-value数组,失败返回false
* 时间复杂度 O(m * log N), m为获取key-value对的个数
*/
function mget($ary) {
}
/**
* 前缀范围查找key-values
*
* @param string $prefix_key 前缀,长度小于MAX_KEY_LENGTH字节
* @param int $count 前缀查找最大返回的key-values个数,小于等于MAX_PKRGET_SIZE
* @param string $start_key 在执行前缀查找时,返回大于该$start_key的key-values;默认值为空字符串(即忽略该参数)
* @return array|bool 成功返回key-value数组,失败返回false
* 时间复杂度 O(m + log N), m为获取key-value对的个数
*/
function pkrget($prefix_key, $count, $start_key) {
}
/**
* 获得错误代码
*
* @return int 返回错误代码
*/
function errno() {
}
/**
* 获得错误提示消息
*
* @return string 返回错误提示消息字符串
*/
function errmsg() {
}
/**
* 获取选项值
*
* @return array 成功返回选项数组,失败返回false
* array(1) {
* "encodekey" => 1 // 默认为1
* // 1: 使用urlencode编码key;0:不使用urlencode编码key
* }
*/
function get_options() {
}
/**
* 设置选项值
*
* @param array $options array (1) {
* "encodekey" => 1 // 默认为1
* // 1: 使用urlencode编码key;0:不使用urlencode编码key
* }
* @return bool 成功返回true,失败返回false
*/
function set_options($options) {
}
}
?>