memcached的使用
连接memcached
public bool Memcached::addServer ( string $host , int $port [, int $weight = 0 ] )Memcached::addServer()增加指定服务器到服务器池中。此时不会建立与服务端的连接, 但是,如果你使用一致性key分布选项(Memcached::DISTRIBUTION_CONSISTENT或 Memcached::OPT_LIBKETAMA_COMPATIBLE),一些内部的数据结构将会被更新。 因此,如果你需要增加多台服务器,更好的方式是使用Memcached::addServers() 以确保这种更新只发生一次。
同一台服务器可以在服务器池中多次出现,因为这里没有做重复检测。但这是不推荐的做法,对于期望提高某台服务器 权重的需求,请使用weight参数。
host memcached服务端主机名。如果主机名无效,相关的数据操作的返回代码将被设置为Memcached::RES_HOST_LOOKUP_FAILURE。 port memcached服务端端口号,通常是11211。 weight 此服务器相对于服务器池中所有服务器的权重。此参数用来控制服务器在操作时被选种的概率。这个仅用于一致性 分布选项,并且这个值通常是由服务端分配的内存来设置的。存取数据
public bool Memcached::add ( string $key , mixed $value [, int $expiration ] ) Memcached::add()与Memcached::set()类似,但是如果 key已经在服务端存在,此操作会失败。 key用于存储值的键名。value存储的值。expiration到期时间,默认为0。替换数据
public bool Memcached::replace ( string $key , mixed $value [, int $expiration ] ) Memcached::replace()和Memcached::set()类似,但是如果 服务端不存在key, 操作将失败。 key用于存储值的键名。value存储的值。expiration到期时间,默认为0。删除数据
public bool Memcached::delete ( string $key [, int $time = 0 ] ) Memcached::delete()从服务端删除key对应的元素. 参数time是一个秒为单位的时间(或一个UNIX时间戳表明直到那个时间), 用来表明 客户端希望服务端在这段时间拒绝对这个key的add和replace命令. 由于这个时间段的存在, 元素被放入一个删除队列, 表明它不可以通过get命令获取到值, 但是同时 add和replace命令也会失败(无论如何set命令都会成功). 在这段时间过去后, 元素最终被从服务端内存删除.time参数默认0(表明元素会被立即删除并且之后对这个 key的存储命令也会成功). key要删除的key。time服务端等待删除该元素的总时间(或一个Unix时间戳表明的实际删除时间).使所有缓存失效
public bool Memcached::flush ([ int $delay = 0 ] ) Memcached::flush()立即(默认)或者在delay延迟后作废所有缓存中已经存在的元素。 在作废之后检索命令将不会有任何返回(除非在执行Memcached::flush()作废之后,该key下被重新存储过)。flush不会 真正的释放已有元素的内存, 而是逐渐的存入新元素重用那些内存。获取上一次操作的结果状态码,消息
public int Memcached::getResultCode ( void ),public string Memcached::getResultMessage ( void )RES_SUCCESS = 0
RES_FAILURE = 1 RES_HOST_LOOKUP_FAILURE = 2 RES_UNKNOWN_READ_FAILURE = 7 RES_PROTOCOL_ERROR = 8 RES_CLIENT_ERROR = 9 RES_SERVER_ERROR = 10 RES_WRITE_FAILURE = 5 RES_DATA_EXISTS = 12 RES_NOTSTORED = 14 RES_NOTFOUND = 16 RES_PARTIAL_READ = 18 RES_SOME_ERRORS = 19 RES_NO_SERVERS = 20 RES_END = 21 RES_ERRNO = 26 RES_BUFFERED = 32 RES_TIMEOUT = 31 RES_BAD_KEY_PROVIDED = 33 RES_CONNECTION_SOCKET_CREATE_FAILURE = 11 RES_PAYLOAD_FAILURE = -1001 00 = MEMCACHED_SUCCESS 01 = MEMCACHED_FAILURE 02 = MEMCACHED_HOST_LOOKUP_FAILURE // getaddrinfo() and getnameinfo() only 03 = MEMCACHED_CONNECTION_FAILURE 04 = MEMCACHED_CONNECTION_BIND_FAILURE // DEPRECATED see MEMCACHED_HOST_LOOKUP_FAILURE 05 = MEMCACHED_WRITE_FAILURE 06 = MEMCACHED_READ_FAILURE 07 = MEMCACHED_UNKNOWN_READ_FAILURE 08 = MEMCACHED_PROTOCOL_ERROR 09 = MEMCACHED_CLIENT_ERROR 10 = MEMCACHED_SERVER_ERROR // Server returns "SERVER_ERROR" 11 = MEMCACHED_ERROR // Server returns "ERROR" 12 = MEMCACHED_DATA_EXISTS 13 = MEMCACHED_DATA_DOES_NOT_EXIST 14 = MEMCACHED_NOTSTORED 15 = MEMCACHED_STORED 16 = MEMCACHED_NOTFOUND 17 = MEMCACHED_MEMORY_ALLOCATION_FAILURE 18 = MEMCACHED_PARTIAL_READ 19 = MEMCACHED_SOME_ERRORS 20 = MEMCACHED_NO_SERVERS 21 = MEMCACHED_END 22 = MEMCACHED_DELETED 23 = MEMCACHED_VALUE 24 = MEMCACHED_STAT 25 = MEMCACHED_ITEM 26 = MEMCACHED_ERRNO 27 = MEMCACHED_FAIL_UNIX_SOCKET // DEPRECATED 28 = MEMCACHED_NOT_SUPPORTED 29 = MEMCACHED_NO_KEY_PROVIDED /* Deprecated. Use MEMCACHED_BAD_KEY_PROVIDED! */ 30 = MEMCACHED_FETCH_NOTFINISHED 31 = MEMCACHED_TIMEOUT 32 = MEMCACHED_BUFFERED 33 = MEMCACHED_BAD_KEY_PROVIDED 34 = MEMCACHED_INVALID_HOST_PROTOCOL 35 = MEMCACHED_SERVER_MARKED_DEAD 36 = MEMCACHED_UNKNOWN_STAT_KEY 37 = MEMCACHED_E2BIG 38 = MEMCACHED_INVALID_ARGUMENTS 39 = MEMCACHED_KEY_TOO_BIG 40 = MEMCACHED_AUTH_PROBLEM 41 = MEMCACHED_AUTH_FAILURE 42 = MEMCACHED_AUTH_CONTINUE 43 = MEMCACHED_PARSE_ERROR 44 = MEMCACHED_PARSE_USER_ERROR 45 = MEMCACHED_DEPRECATED 46 = MEMCACHED_IN_PROGRESS 47 = MEMCACHED_SERVER_TEMPORARILY_DISABLED 48 = MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE 49 = MEMCACHED_MAXIMUM_RETURN /* Always add new error code before */ 11 = MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE = MEMCACHED_ERROR一个简单的memcached应用
addServer('127.0.0.1',11211);$uid = (int)$_GET('user_id');$sql = "SELECT * FROM tr_user WHERE uid={$uid}";$key = md5($sql);if(!($data = $mc->get($key))) { #获取data操作,省略 $mc->set($key,$data,10);}var_dump($data);?>