#include <memcache.hpp>
|
| memcache (const char *addr="127.0.0.1:11211", int conn_timeout=30, int rw_timeout=10) |
|
| ~memcache () |
|
memcache & | set_prefix (const char *keypre) |
|
memcache & | auto_retry (bool onoff) |
|
memcache & | encode_key (bool onoff) |
|
bool | set (const char *key, size_t klen, const void *dat, size_t dlen, time_t timeout=0, unsigned short flags=0) |
|
bool | set (const char *key, const void *dat, size_t dlen, time_t timeout=0, unsigned short flags=0) |
|
bool | set (const char *key, size_t klen, time_t timeout=0) |
|
bool | set (const char *key, time_t timeout=0) |
|
bool | set_begin (const char *key, size_t dlen, time_t timeout=0, unsigned short flags=0) |
|
bool | set_data (const void *data, size_t len) |
|
bool | get (const char *key, size_t klen, string &buf, unsigned short *flags=NULL) |
|
bool | get (const char *key, string &buf, unsigned short *flags=NULL) |
|
int | get_begin (const void *key, size_t klen, unsigned short *flags=NULL) |
|
int | get_begin (const char *key, unsigned short *flags=NULL) |
|
int | get_data (void *buf, size_t size) |
|
bool | del (const char *key, size_t klen) |
|
bool | del (const char *key) |
|
const char * | last_serror () const |
|
int | last_error () const |
|
virtual bool | open () |
|
void | close () |
|
void | property_list () |
|
| connect_client (void) |
|
virtual | ~connect_client () |
|
time_t | get_when () |
|
void | set_when (time_t when) |
|
connect_pool * | get_pool () const |
|
virtual void | set_timeout (int conn_timeout, int rw_timeout) |
|
memcached 客户端通信协议库,支持长连接与自动重连
在文件 memcache.hpp 第 19 行定义.
◆ memcache()
acl::memcache::memcache |
( |
const char * |
addr = "127.0.0.1:11211" , |
|
|
int |
conn_timeout = 30 , |
|
|
int |
rw_timeout = 10 |
|
) |
| |
构造函数
- 参数
-
addr | {const char*} memcached 服务器监听地址,格式为: ip:port,如: 127.0.0.1:11211 |
conn_timeout | {int} 连接服务器的超时时间(秒) |
rw_timeout | {int} 网络 IO 超时时间(秒) |
◆ ~memcache()
acl::memcache::~memcache |
( |
| ) |
|
◆ auto_retry()
memcache& acl::memcache::auto_retry |
( |
bool |
onoff | ) |
|
在保持的长连接中断时是否要求自动重连,缺省为自动重连
- 参数
-
onoff | {bool} 为 true 时表示长连接意外断开后自动重连 |
- 返回
- {memcache&}
◆ close()
void acl::memcache::close |
( |
| ) |
|
关闭与 memcached 的连接,一般该函数不需要调用,因为类对象在 析构时会自动调用此函数
◆ del() [1/2]
bool acl::memcache::del |
( |
const char * |
key, |
|
|
size_t |
klen |
|
) |
| |
从 memcached 中删除数据
- 参数
-
key | {const char*} 键值 |
klen | {size_t} 键值长度 |
- 返回
- {bool} 删除是否成功
◆ del() [2/2]
bool acl::memcache::del |
( |
const char * |
key | ) |
|
从 memcached 中删除数据
- 参数
-
- 返回
- {bool} 删除是否成功
◆ encode_key()
memcache& acl::memcache::encode_key |
( |
bool |
onoff | ) |
|
设置是否针对 KEY 键值进行编码,缺少时不对 key 编码,当应用的 key 中 可能会有特殊字符或二进制值时,建议调用此函数对 key 进行编码
- 参数
-
onoff | {bool} 为 true 表示内部需要对 key 进行编码 |
- 返回
- {memcache&}
◆ get() [1/2]
bool acl::memcache::get |
( |
const char * |
key, |
|
|
size_t |
klen, |
|
|
string & |
buf, |
|
|
unsigned short * |
flags = NULL |
|
) |
| |
从 memcached 中获得对应键值的缓存数据
- 参数
-
key | {const char*} 字符串键值 |
klen | {size_t} 键值长度 |
buf | {string&} 存储结果的缓冲区,内部首先会清空该缓冲区 |
flags | {unsigned short*} 存储附属的标志位 |
- 返回
- {bool} 返回 true 表示正确获得结果值,否则表示键值对应的 数据不存在或出错
◆ get() [2/2]
bool acl::memcache::get |
( |
const char * |
key, |
|
|
string & |
buf, |
|
|
unsigned short * |
flags = NULL |
|
) |
| |
从 memcached 中获得对应键值的缓存数据
- 参数
-
key | {const char*} 字符串键值 |
buf | {string&} 存储结果的缓冲区,内部首先会清空该缓冲区 |
flags | {unsigned short*} 存储附属的标志位 |
- 返回
- {bool} 返回 true 表示正确获得结果值,否则表示键值对应的 数据不存在或出错
◆ get_begin() [1/2]
int acl::memcache::get_begin |
( |
const void * |
key, |
|
|
size_t |
klen, |
|
|
unsigned short * |
flags = NULL |
|
) |
| |
流式方式从服务端获取数据,本函数发送请求协议
- 参数
-
key | {const void*} 键值 |
klen | {size_t} key 键值长度 |
flags | {unsigned short*} 存储附属的标志位 |
- 返回
- {int} 返回数据体的长度,分以下三种情形: 0:表示不存在 -1:表示出错 >0:表示数据体的长度
◆ get_begin() [2/2]
int acl::memcache::get_begin |
( |
const char * |
key, |
|
|
unsigned short * |
flags = NULL |
|
) |
| |
流式方式从服务端获取数据,本函数发送请求协议
- 参数
-
key | {const char*} 键值字符串 |
flags | {unsigned short*} 存储附属的标志位 |
- 返回
- {int} 返回数据体的长度,分以下三种情形: 0:表示不存在 -1:表示出错 >0:表示数据体的长度
◆ get_data()
int acl::memcache::get_data |
( |
void * |
buf, |
|
|
size_t |
size |
|
) |
| |
流式方式从服务端获取数据,循环调用本函数接收数据
- 参数
-
buf | {void*} 缓冲区地址 |
size | {size_t} 缓冲区大小 |
- 返回
- {int} 已读到的数据大小,分为以下三种情形: 0:表示数据读完
0: 表示本次读到的数据长度
-1:表示出错
◆ last_error()
int acl::memcache::last_error |
( |
| ) |
const |
获得上次操作 memcached 的错误号
- 返回
- {int} 错误号
◆ last_serror()
const char* acl::memcache::last_serror |
( |
| ) |
const |
获得上次操作 memcached 错误描述信息
- 返回
- {const char*} 错误描述信息,永不为空
◆ open()
virtual bool acl::memcache::open |
( |
| ) |
|
|
virtual |
打开与 memcached 的连接, 因为 set/get/del 操作都会自动打开与 memcached 的连接,所以不必显示地调用此函数来打开与 memcached 的连接
- 返回
- {bool} 打开是否成功
实现了 acl::connect_client.
◆ property_list()
void acl::memcache::property_list |
( |
| ) |
|
◆ set() [1/4]
bool acl::memcache::set |
( |
const char * |
key, |
|
|
size_t |
klen, |
|
|
const void * |
dat, |
|
|
size_t |
dlen, |
|
|
time_t |
timeout = 0 , |
|
|
unsigned short |
flags = 0 |
|
) |
| |
向 memcached 中修改或添加新的数据缓存对象
- 参数
-
key | {const char*} 键值 |
klen | {size_t} key 键值长度 |
dat | {const void*} 数据 |
dlen | {size_t} data 数据长度 |
timeout | {time_t} 缓存超时时间(秒) |
flags | {unsigned short} 附属的标志位 |
- 返回
- {bool} 是否成功
◆ set() [2/4]
bool acl::memcache::set |
( |
const char * |
key, |
|
|
const void * |
dat, |
|
|
size_t |
dlen, |
|
|
time_t |
timeout = 0 , |
|
|
unsigned short |
flags = 0 |
|
) |
| |
向 memcached 中修改或添加新的数据缓存对象
- 参数
-
key | {const char*} 字符串键值 |
dat | {const void*} 数据 |
dlen | {size_t} data 数据长度 |
timeout | {time_t} 缓存超时时间(秒) |
flags | {unsigned short} 附属的标志位 |
- 返回
- {bool} 是否成功
◆ set() [3/4]
bool acl::memcache::set |
( |
const char * |
key, |
|
|
size_t |
klen, |
|
|
time_t |
timeout = 0 |
|
) |
| |
更新 memcached 中已经存在的键的过期日期,因为目前 libmemcached 没有 提供此接口,所以该函数实现的方式是先调用 get 取出对应键的值,然后再 调用 set 重新设置该键的值及过期时间
- 参数
-
key | {const char*} 键值 |
klen | {size_t} key 键值长度 |
timeout | {time_t} 过期时间(秒) |
- 返回
- {bool} 是否成功
◆ set() [4/4]
bool acl::memcache::set |
( |
const char * |
key, |
|
|
time_t |
timeout = 0 |
|
) |
| |
更新 memcached 中已经存在的键的过期日期,因为目前 libmemcached 没有 提供此接口,所以该函数实现的方式是先调用 get 取出对应键的值,然后再 调用 set 重新设置该键的值及过期时间
- 参数
-
key | {const char*} 字符串键值 |
timeout | {time_t} 过期时间(秒) |
- 返回
- {bool} 是否成功
◆ set_begin()
bool acl::memcache::set_begin |
( |
const char * |
key, |
|
|
size_t |
dlen, |
|
|
time_t |
timeout = 0 , |
|
|
unsigned short |
flags = 0 |
|
) |
| |
以流式方式上传大数据时,该函数发送数据头
- 参数
-
key | {const char*} 键值字符串 |
dlen | {size_t} 数据体的数据总长度 |
timeout | {time_t} 数据的过期时间(秒) |
flags | {unsigned short} 附属的标志位 |
- 返回
- {bool} 是否成功
◆ set_data()
bool acl::memcache::set_data |
( |
const void * |
data, |
|
|
size_t |
len |
|
) |
| |
循环调用本函数上传数据值,内部会自动计算已经上传的数据总和是否达到 了 set_begin 中设置的数据总长度,当达到后会自动补一个 "\r\n",调用 者不应再调用此函数上传数据,除非是一个新的上传过程开始了
- 参数
-
data | {const void*} 数据地址指针 |
len | {data} data 数据长度 |
- 返回
- {bool} 是否成功
◆ set_prefix()
memcache& acl::memcache::set_prefix |
( |
const char * |
keypre | ) |
|
设置 key 的前缀,即实际的 key 将由 该前缀+原始key 组成,缺省时不设 前缀,当多个应用共用同一个 memcached 服务时,建议应用设置自身的 key 前缀,这样可以避免与其它应用的 key 产生重复问题
- 参数
-
keypre | {const char*} 非空时设置 key 前缀,否则取消 key 前缀 |
- 返回
- {memcache&}
该类的文档由以下文件生成: