acl  3.5.3.0
acl::memcache类 参考

#include <memcache.hpp>

+ 类 acl::memcache 继承关系图:
+ acl::memcache 的协作图:

Public 成员函数

 memcache (const char *addr="127.0.0.1:11211", int conn_timeout=30, int rw_timeout=10)
 
 ~memcache ()
 
memcacheset_prefix (const char *keypre)
 
memcacheauto_retry (bool onoff)
 
memcacheencode_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 ()
 
- Public 成员函数 继承自 acl::connect_client
 connect_client (void)
 
virtual ~connect_client ()
 
time_t get_when ()
 
void set_when (time_t when)
 
connect_poolget_pool () const
 
virtual void set_timeout (int conn_timeout, int rw_timeout)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::connect_client
void set_pool (connect_pool *pool)
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 
- Protected 属性 继承自 acl::connect_client
int conn_timeout_
 
int rw_timeout_
 
time_t when_
 
connect_poolpool_
 

详细描述

memcached 客户端通信协议库,支持长连接与自动重连

在文件 memcache.hpp19 行定义.

构造及析构函数说明

◆ 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 中删除数据

参数
key{const char*} 字符串键值
返回
{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 ( )

列出 memcached 连接的一些属性,调试用

◆ 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&}

该类的文档由以下文件生成: