加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP Memcache 详解和简单应用

发布时间:2022-02-15 21:08:40 所属栏目:PHP教程 来源:互联网
导读:简介:memcached是一个高性能的、分布式内存对象缓存系统,通常被用于降低数据库教程加载压力以提高动态web应用的响应速度. 此扩展使用了libmemcached库提供的api与memcached服务端进行交互,它同样提供了一个session处理器(memcached),它同时提供了一个sessi
  简介:memcached是一个高性能的、分布式内存对象缓存系统,通常被用于降低数据库教程加载压力以提高动态web应用的响应速度.
 
  此扩展使用了libmemcached库提供的api与memcached服务端进行交互,它同样提供了一个session处理器(memcached),它同时提供了一个session处理器.
 
  关于libmemcached的更多信息可以在http://libmemcached.org/libmemcached.html查看.
 
  memcache 需求:
 
  这个扩展需要libmemcached客户端库.
 
  memcache 安装:
 
  安装此 pecl 扩展相关的信息可在手册中标题为 pecl 扩展的安装 章节中找到。另外的信息,如新的发行版本、下载、源文件、 additional information such as new releases,维护人员信息及变更日志等,都在此处:http://pecl.php.net/package/memcached.
 
  如果libmemcached被安装在一个非标准路径,使用--with-libmemcached-dir=dir 来指定路径,dir就是libmemcached安装时的prefix参数。这个路径需要包含文件include/libmemcached/memcached.h。
 
  如果要支持压缩就需要zlib。对于非标准安装的zlib库,使用--with-zlib-dir=dir 来指定zlib安装路径,dir就是zib安装时的prefix参数。
 
  session处理器的支持默认是开启的。如果要关闭它,使用选项--disable-memcached-session 。
 
  预定义常量:
 
  下列常量由此扩展定义,且仅在此扩展编译入 php 或在运行时动态载入时可用.
 
  memcached::opt_compression
 
  开启或关闭压缩功能。当开启的时候,item的值超过某个阈值(当前是100bytes)时,会首先对值进行压缩然后存储,并 在获取该值时进行解压缩然后返回,使得压缩对应用层透明。
 
  类型:boolean,默认:true.
 
  memcached::opt_serializer
 
  指定对于非标量值进行序列化的序列化工具。可用的值有memcached::serializer_php 和memcached::serializer_igbinary。后者仅在memcached配置时开启 --enable-memcached-igbinary选项并且 igbinary扩展被加载时才有效。
 
  类型: integer, 默认: memcached::serializer_php.
 
  memcached::serializer_php
 
  默认的php序列化工具(即serialize方法).
 
  memcached::serializer_igbinary
 
  » igbinary序列化工具,它将php的数据结构 存储为紧密的二进制形式,在时间和空间上都有所改进.
 
  memcached::serializer_json
 
  json序列化,需要 php 5.2.10以上。
 
  memcached::opt_prefix_key
 
  可以用于为key创建“域”。这个值将会被作为每个key的前缀,它不能长于128个字符, 并且将会缩短最大可允许的key的长度。这个前缀仅仅用于被存储的元素的key,而不会用于服务器key。
 
  类型: string, 默认: "".
 
  memcached::opt_hash
 
  指定存储元素key使用的hash算法。可用的值是memcached::hash_*系列的常量。 每种hash算法都有它的优势和劣势,在你不了解或不确定哪种算法对你更有利时,请使用默认值。
 
  类型: integer, 默认: memcached::hash_default
 
  memcached::hash_default
 
  默认的(jenkins one-at-a-time)元素key hash算法
 
  memcached::hash_md5
 
  md5元素key hash算法。
 
  memcached::hash_crc
 
  crc元素key hash算法。
 
  memcached::hash_fnv1_64
 
  fnv1_64元素key hash算法。
 
  memcached::hash_fnv1a_64
 
  fnv1_64a元素key hash算法。
 
  memcached::hash_fnv1_32
 
  fnv1_32元素key hash算法。
 
  memcached::hash_fnv1a_32
 
  fnv1_32a元素key hash算法。
 
  memcached::hash_hsieh
 
  hsieh元素key hash算法。
 
  memcached::hash_murmur
 
  murmur元素key hash算法。
 
  memcached::opt_distribution
 
  指定元素key分布到各个服务器的方法。当前支持的方法有余数分步法合一致性hash算法两种。一致性hash算法提供 了更好的分配策略并且在添加服务器到集群时可以最小化缓存丢失。
 
  类型: integer, 默认: memcached::distribution_modula.
 
  memcached::distribution_modula
 
  余数分布算法。
 
  memcached::distribution_consistent
 
  一致性分布算法(基于libketama).
 
  memcached::opt_libketama_compatible
 
  开启或关闭兼容的libketama类行为,当开启此选项后,元素key的hash算法将会被设置为md5并且分布算法将会 采用带有权重的一致性hash分布,这一点非常有用因为其他基于libketama的客户端(比如python,urby)在同样 的服务端配置下可以透明的访问key。
 
  note:
 
  如果你要使用一致性hash算法强烈建议开启此选项,并且这个选项可能在未来的发布版中被设置为默认开启。
 
  类型: boolean, 默认: false.
 
  memcached::opt_buffer_writes
 
  开启或关闭i/o缓存。开启i/o缓存会导致存储命令不实际发送而是存储到缓冲区中。任意的检索数据操作都会导致 缓存中的数据被发送到远程服务端。退出连接或关闭连接也会导致缓存数据被发送到远程服务端。
 
  类型: boolean, 默认: false.
 
  memcached::opt_binary_protocol
 
  开启使用二进制协议。请注意这个选项不能在一个打开的连接上进行切换。
 
  类型: boolean, 默认: false.
 
  memcached::opt_no_block
 
  开启或关闭异步i/o。这将使得存储函数传输速度最大化。
 
  类型: boolean, 默认:false.
 
  memcached::opt_tcp_nodelay
 
  开启或关闭已连接socket的无延迟特性(在某些幻境可能会带来速度上的提升)。
 
  类型:boolean, 默认: false.
 
  memcached::opt_socket_send_size
 
  socket发送缓冲的最大值。
 
  类型: integer, 默认: 根据不同的平台/内核配置不同
 
  memcached::opt_socket_recv_size
 
  socket接收缓冲的最大值。
 
  类型: integer, 默认: 根据不同的平台/内核配置不同
 
  memcached::opt_connect_timeout
 
  在非阻塞模式下这里设置的值就是socket连接的超时时间,单位是毫秒。
 
  类型: integer, 默认: 1000.
 
  memcached::opt_retry_timeout
 
  等待失败的连接重试的时间,单位秒。
 
  类型: integer, 默认: 0.
 
  memcached::opt_send_timeout
 
  socket发送超时时间,单位毫秒,在这种情况下您不能使用非阻塞i/o,这将使得您仍然有数据会发送超时.
 
  类型:integer,默认: 0.
 
  memcached::opt_recv_timeout
 
  socket读取超时时间,单位毫秒。在这种情况下您不能使用非阻塞i/o,这将使得您仍然有数据会读取超时。
 
  类型: integer, 默认: 0.
 
  memcached::opt_poll_timeout
 
  poll连接超时时间,单位毫秒。
 
  类型: integer, 默认: 1000.
 
  memcached::opt_cache_lookups
 
  开启或禁用dns查找缓存。
 
  类型: boolean, 默认: false.
 
  memcached::opt_server_failure_limit
 
  指定一个服务器连接的失败重试次数限制。在达到此数量的失败重连后此服务器将被从服务器池中移除。
 
  类型: integer, 默认: 0.
 
  memcached::have_igbinary
 
  指示是否支持igbinary的序列化。
 
  类型: boolean.
 
  memcached::have_json
 
  指示是否支持json的序列化。
 
  memcached::res_protocol_error
 
  错误的memcached协议命令。
 
  memcached::res_client_error
 
  客户端错误。
 
  memcached::res_server_error
 
  服务端错误。
 
  memcached::res_write_failure
 
  向网络写数据失败。
 
  memcached::res_data_exists
 
  比较并交换值操作失败(cas方法):尝试向服务端存储数据时由于自此连接最后一次取此key对应数据之后被改变导致失败。
 
  memcached::res_notstored
 
  元素没有被存储,但并不是因为一个错误。这通常表明add(元素已存在)或replace(元素不存在)方式存储数据失败或者元素已经在一个删除序列中(延时删除)。
 
  memcached::res_notfound
 
  元素未找到(通过get或cas操作时)。
 
  memcached::res_partial_read
 
  局部网络数据读错误。
 
  memcached::res_some_errors
 
  在多key获取的时候发生错误。
 
  memcached::res_no_servers
 
  服务器池空。
 
  memcached::res_end
 
  结果集到结尾了。
 
  memcached::res_errno
 
  系统错误。
 
  memcached::res_buffered
 
  操作被缓存。
 
  memcached::res_timeout
 
  操作超时。
 
  memcached::res_bad_key_provided
 
  提供了无效的key。
 
  memcached::res_connection_socket_create_failure
 
  创建网络socket失败。
 
  memcached::res_payload_failure
 
  不能压缩/解压缩或序列化/反序列化值。

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!