博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
memcached的使用-----php中的常规操作
阅读量:7062 次
发布时间:2019-06-28

本文共 4188 字,大约阅读时间需要 13 分钟。

hot3.png

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);?>

 

转载于:https://my.oschina.net/OSrainn/blog/722735

你可能感兴趣的文章
JAVA高级--异常处理概念和异常处理机制
查看>>
AngularJS code converage
查看>>
【ASP.NET Process Model 笔记 二】ASP.NET Http Runtime Pipeline
查看>>
c# 抓取 js动态生成的HTML的工具:NHtmlUnit‎
查看>>
1849: Cool number
查看>>
【小知识】为什么负数除二和右移一位的结果不一样?
查看>>
ecshop调用指定分类(包含子分类)下所有产品的评论信息
查看>>
树莓派板子中的灯光的信息
查看>>
前端常见的设计模式
查看>>
Java基础——数组Array
查看>>
053(四十五)
查看>>
SQL Server 2008 安全性——透明数据加密(TDE)【转】
查看>>
cmake 增加math.h 标准库
查看>>
Linux下 保存 git账号密码
查看>>
PHP扩展开发--编写一个helloWorld扩展
查看>>
Feature Scaling
查看>>
Java基础班学习笔记(5)
查看>>
PHP 报错:Deprecated: Methods with the same name as their class will not be constructor...
查看>>
自问自答-hadoop自带哪些案例(0.20.2)
查看>>
tachyon 集群安装
查看>>