PHP - Memcache 函数


Memcache 模块可以为 Memcached 提供方便的过程和面向对象的接口,Memcached 是一个高效的缓存守护进程,专门为减少动态 Web 应用程序中的数据库负载而设计。

Memcache 模块还可以提供会话处理程序 (Memcache)。

有关 Memcached 的更多信息,请访问 » http://www.danga.com/memcached/

安装

PHP 中未包含此 PECL 扩展。可以在此处找到新版本、下载、源文件、开发人员信息和变更日志等其他信息:» https://pecl.php.net/package/memcache

要使用这些函数,我们必须使用 --enable-memcache [= DIR] 选项编译具有 memcache 支持的 PHP。我们可以通过指定 --disable-memcache-session 来选择禁用 memcache 会话处理程序支持。

Windows 用户可以在 php.ini 中启用 php_memcache.dll 来使用这些功能。我们需要从 »PHP Downloads 或 » http://snaps.php.net/page下载此 PECL 扩展的 DLL 。

要求

Memcache 模块可以使用 » zlib 的功能来支持即时数据压缩。Zlib 需要安装此模块。

资源类型

emcache 模块中仅使用一种资源类型 - 它是缓存服务器连接的链接标识符。

PHP 4.3.3 或更高版本需要使用 Memcache 扩展。

运行时配置

这些函数的行为取决于 php.ini 中的设置。

内存缓存配置选项

姓名 默认 多变 变更日志
memcache.allow_failover “1” PHP_INI_ALL 自 memcache 2.0.2 起可用。
memcache.max_failover_attempts “20” PHP_INI_ALL 自 memcache 2.1.0 起可用。
memcache.chunk_size “8192” PHP_INI_ALL 自 memcache 2.0.2 起可用。
memcache.default_port “11211” PHP_INI_ALL 自 memcache 2.0.2 起可用。
memcache.hash_strategy “标准” PHP_INI_ALL 自 memcache 2.2.0 起可用。
memcache.hash_function “CRC32” PHP_INI_ALL 自 memcache 2.2.0 起可用。
会话.save_handler “文件” PHP_INI_ALL 从 memcache 2.1.2 开始支持
会话.保存路径 ”” PHP_INI_ALL 从 memcache 2.1.2 开始支持
内存缓存协议 ASCII码 >PHP_INI_ALL 从 memcache 3.0.0 开始支持
memcache.冗余 1 >PHP_INI_ALL 从 memcache 3.0.0 开始支持
memcache.session_redundancy 2 >PHP_INI_ALL 从 memcache 3.0.0 开始支持
memcache.compress_threshold 20000 >PHP_INI_ALL 从 memcache 3.0.3 开始支持
memcache.lock_timeout 15 >PHP_INI_ALL 从 memcache 3.0.4 开始支持

有关 PHP_INI_* 常量的详细说明,请参阅可以设置配置设置的文档。

  • memcache.allow_failover boolean - 发生错误时是否透明地故障转移到其他服务器。

  • memcache.max_failover_attempts 整数- 定义设置和获取数据时要尝试的服务器数量。仅与 memcache.allow_failover 结合使用。

  • memcache.chunk_size 整数- 数据将以该大小的块传输,设置较低的值需要更多的网络写入。如果发现无法解释的速度下降,请尝试将此值增加到 32768。

  • memcache.default_port string - 如果未指定其他端口,则连接到 memcached 服务器时使用的默认 TCP 端口号。

  • memcache.hash_strategy string - 控制将键映射到服务器时使用哪种策略。将此值设置为一致以启用一致哈希,从而允许在池中添加或删除服务器而不会导致密钥重新映射。将此值设置为使用旧策略的标准结果。

  • memcache.hash_function string - 控制将密钥映射到服务器时应用哪个哈希函数,crc32 使用标准 CRC32 哈希,而 fnv 使用 FNV-1a。

  • session.save_handler string - 通过将此值设置为memcache,使用memcache作为会话处理程序。

  • session.save_path string - 定义用于会话存储的服务器 URL 的逗号分隔,例如“tcp://host1:11211, tcp://host2:11211”。每个 url 可能包含应用于该服务器的参数,它们与 Memcache::addServer() 方法相同。例如“tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15”

  • memcache.协议字符串

  • memcache.redundancy 整数

  • memcache.session_redundancy 整数

  • memcache.compress_threshold 整数

  • memcache.lock_timeout 整数

基本用法

在此示例中,对象被保存在缓存中,然后被检索回来。对象和其他非标量类型在保存之前会被序列化,因此不可能将资源(即连接标识符等)存储在缓存中。

实施例1

<?php
   $memcache = new Memcache;
   $memcache->connect("localhost", 11211) or die ("Could not connect");
   $version = $memcache->getVersion();
   
   echo "Server's version: ".$version."<br/>\n";

   $tmp_object = new stdClass;
   $tmp_object->str_attr = "test";
   $tmp_object->int_attr = 123;
   $memcache->set("key", $tmp_object, false, 10) or die ("Failed to save data at the server");
   echo "Store data in the cache (data will expire in 10 seconds) <br/>\n";

   $get_result = $memcache->get("key");
   echo "Data from the cache: <br/>\n";

   var_dump($get_result);
?>

使用 memcache 会话处理程序

实施例2

<?php
   $session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10,,tcp://$host:$port"; 

   ini_set("session.save_handler", "memcache"); 
   ini_set("session.save_path", $session_save_path); 
?>

预定义常量

内存缓存常量

先生编号 名称和描述
1

MEMCACHE_COMPRESSED(整数)

用于通过 Memcache::set()、Memcache::add() 和 Memcache::replace() 打开动态数据压缩。

2

PMEMCACHE_HAVE_SESSION(整数)

如果此 Memcache 会话处理程序可用,则为 1,否则为 0。

3

MEMCACHE_USER1(整数)

用于通过 Memcache::set()、Memcache::add() 和 Memcache::replace() 打开用户定义的应用程序标志。

4

MEMCACHE_USER2(整数)

用于使用 Memcache::set()、Memcache::add() 和 Memcache::replace() 启用用户定义的应用程序标志。

5

MEMCACHE_USER3(整数)

用于通过 Memcache::set()、Memcache::add() 和 Memcache::replace() 打开用户定义的应用程序标志。

6

MEMCACHE_USER4(整数)

用于通过 Memcache::set()、Memcache::add() 和 Memcache::replace() 打开用户定义的应用程序标志。

内存缓存功能

以下是 Memcache 功能 -

先生编号 功能说明
1

内存缓存::add()

该函数可以向服务器添加一个项目。

2

Memcache::addServer()

该函数可以将memcached服务器添加到连接池中。

3

内存缓存::关闭()

该函数可以关闭memcached服务器连接。

4

内存缓存::连接()

该函数可以打开memcached服务器连接。

5

memcache_debug()

该函数可以打开/关闭调试输出。

6

内存缓存::减量()

此功能可以减少物品的价值。

7

内存缓存::删除()

该函数可以从服务器中删除一个项目。

8

内存缓存::flush()

该函数可以刷新服务器上所有现有的项目。

9

内存缓存::get()

该函数可以从服务器检索项目。

10

Memcache::getExtendedStats()

该函数可以获取池中所有服务器的统计信息。

11

Memcache::getServerStatus()

该函数可以返回服务器状态。

12

Memcache::getStats()

该函数可以获取服务器的统计信息。

13

Memcache::getVersion()

该函数可以返回服务器的版本。

14

内存缓存::increment()

此功能可以增加物品的价值。

15

内存缓存::pconnect()

该函数可以打开一个memcached服务器持久连接。

16

内存缓存::替换()

此功能可以替换现有项目的值。

17 号

内存缓存::设置()

该功能可以将数据存储在服务器上。

18

Memcache::setCompressThreshold()

此功能可以自动压缩大值。

19

Memcache::setServerParams()

该函数可以在运行时更改服务器参数和状态。