没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\caching\MemCache

继承yii\caching\MemCache » yii\caching\Cache » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\caching\CacheInterface
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/caching/MemCache.php

MemCache 是基于 memcachememcached 实现的缓存应用组件。

MemCache 支持 memcachememcached。通过设置 $useMemcached 为 true 或者 false, 你可以让 MemCache 在使用 memcached 或者 memcache 之间随意切换。

MemCache 通过设置 $servers 属性来配置 memcache 服务器列表。 默认情况下,MemCache 会认为有一个服务器运行在 localhost 的 11211 端口。

可以参考 yii\caching\Cache 查看 MemCache 支持的通用的缓存操作方法。

注意,存入 memcache 的数据并不会有任何安全保障措施。 这些都可以被运行在同一个服务器上的任何其它进程访问。

要把 MemCache 当作缓存应用组件使用,参考下述的配置,

[
    'components' => [
        'cache' => [
            'class' => 'yii\caching\MemCache',
            'servers' => [
                [
                    'host' => 'server1',
                    'port' => 11211,
                    'weight' => 60,
                ],
                [
                    'host' => 'server2',
                    'port' => 11211,
                    'weight' => 40,
                ],
            ],
        ],
    ],
]

上述配置使用了两个 memcache 服务器:server1 和 server2。你也可以给每个服务器配置更多的属性, 比如 persistentweighttimeout。可用的配置选项可以参考 yii\caching\MemCacheServer

在 Cache 上更多的详情和详细的使用信息,请参考 guide article on caching

公共属性

隐藏继承的属性

属性类型描述被定义在
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$defaultDuration integer 以秒为单位的默认的缓存持续时间。默认是 0,意味着永不过期。 在使用 set() 时并且没有明确传递时间参数时才会使用这个属性。 yii\caching\Cache
$keyPrefix string 每个缓存键的一个字符串前缀,据此可以保证在整个缓存系统层面上它都是全局唯一的。 如果出现相同的缓存驱动在多个不同的应用环境下使用,建议你为每个应用环境里的这个缓存系统 设置一个唯一的缓存键前缀。 为保证系统的共用性,你应该只使用由字母和数字组成的字符串。 yii\caching\Cache
$memcache \Memcache|\Memcached 应用组件使用的 memcache(或者 memcached)对象。 yii\caching\MemCache
$options array Memcached 的配置选项。它在 $useMemcached 为 true 时使用。 yii\caching\MemCache
$password string Memcached sasl 密码。它在 $useMemcached 为 true 时使用。 yii\caching\MemCache
$persistentId string 一个表示 Memcached 实例的字符串 ID。它在 $useMemcached 为 true 时使用。 默认情况下 Memcached 实例会在请求结束后销毁。为了创建一个在多请求间持久稳定的实例, 你可以为实例指定一个唯一的 ID。 这样所有基于同样的 ID 创建的实例都共享同一个连接。 yii\caching\MemCache
$serializer null|array|false 用来序列化和反序列化缓存数据的函数。默认是 null,这意味着 默认使用 PHP 的 serialize()unserialize() 两个函数。如果你想使用更高效的序列化功能 (比如 [igbinary](http://pecl. yii\caching\Cache
$servers yii\caching\MemCacheServer[] Memcache 服务器配置列表。 yii\caching\MemCache
$useMemcached boolean 使用 memcached 还是 memcache 作为底层的缓存扩展。 如果是 true,[memcached](http://pecl. yii\caching\MemCache
$username string Memcached sasl 用户名。它在 $useMemcached 为 true 时使用。 yii\caching\MemCache

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
add() 如果对应缓存键不存在,那么把由它指明的缓存数据存入缓存中, 如果缓存键存在,那么什么也不会做。 yii\caching\Cache
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
buildKey() 根据给定的键构建标准的缓存键。 yii\caching\Cache
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
delete() 根据指定的键从缓存中删除数据值。 yii\caching\Cache
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
exists() 检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 如果当前环境的缓存系统不支持该特性,该方法将会尝试模拟实现该特性, 但是相比直接从缓存中获取数据在性能上没有什么提高。 注意,缓存数据如果有关联的依赖存在,并且确实发生了变化, 但是该方法不会检测缓存依赖的变化情况。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。 yii\caching\Cache
flush() 从缓存中删除所有的值。 如果缓存系统在多个应用中共享的话,请谨慎执行该操作。 yii\caching\Cache
get() 根据指定的键从缓存中获取数据。 yii\caching\Cache
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getMemcache() 返回底层的 memcache(或者 memcached)对象。 yii\caching\MemCache
getOrSet() 联合了 set()get() 两个方法的大方法,可以根据 $key 获取值, 或者在 $key 对应的缓存数据不存在的情况下,存入 $callable 执行后的结果作为缓存数据。 yii\caching\Cache
getServers() 返回 memcache 或者 memcached 服务器的配置。 yii\caching\MemCache
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() 初始化应用组件。 它将完成 memcache 实例化并添加 memcache 服务器。 yii\caching\MemCache
madd() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果缓存中已经存在了对应的键,那么这个存在的缓存值和过期时间将会继续保留。 yii\caching\Cache
mget() 根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 一些缓存驱动(比如 memcache,apc)允许一次性获取多个缓存数据,这无疑会提高性能。 如果当前环境的缓存系统不支持该特性的话, 该方法也会尝试模拟实现。 yii\caching\Cache
mset() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\Cache
multiAdd() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果缓存中已经存在了对应的键,那么这个存在的缓存值和过期时间将会继续保留。 yii\caching\Cache
multiGet() 根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 一些缓存驱动(比如 memcache,apc)允许一次性获取多个缓存数据,这无疑会提高性能。 如果当前环境的缓存系统不支持该特性的话, 该方法也会尝试模拟实现。 yii\caching\Cache
multiSet() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\Cache
off() Detaches an existing event handler from this component. yii\base\Component
offsetExists() 返回是否指定的键存在缓存中的布尔值。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
offsetGet() 根据指定的键从缓存中获取数据。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
offsetSet() 把由键指定的值存入缓存中。 如果缓存中已经有来这个键,那么之前存在的缓存值 将会被新值替换。如果要增加过期参数和依赖,请使用 set() 方法。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
offsetUnset() 根据指定的键从缓存中删除数据。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
on() Attaches an event handler to an event. yii\base\Component
set() 根据键存入缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\Cache
setServers() yii\caching\MemCache
trigger() Triggers an event. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述被定义在
addMemcacheServers() 添加服务器到缓存对象的服务器池。 这是使用 memcache PECL 扩展的情况。 yii\caching\MemCache
addMemcachedServers() 添加服务器到缓存对象的服务器池。 这是使用 memcached PECL 扩展的情况。 yii\caching\MemCache
addServers() 添加服务器到缓存对象的服务器池。 yii\caching\MemCache
addValue() 在指定的键不存在的情况下,才存入指定的缓存值。 该方法从父类中声明,在子类里实现。 yii\caching\MemCache
addValues() 一次性存入多个 键-值 对到缓存中。 默认的实现就是通过循环调用 addValue() 方法添加缓存值。如果当前环境的缓存驱动 支持 multi-add,该方法将会被覆盖而是尽量使用 multi-add 来发挥它的特性。 yii\caching\Cache
deleteValue() 根据指定的键把数据从缓存中删除。 该方法从父类中声明,在子类这里实现。 yii\caching\MemCache
flushValues() 从缓存中删除所有值。 该方法从父类中声明,在子类这里实现。 yii\caching\MemCache
getValue() 根据指定的键从缓存中获取缓存数据。 该方法从父类中声明,在子类这里实现。 yii\caching\MemCache
getValues() 根据多个缓存键从缓存中一次获取多个缓存数据。 yii\caching\MemCache
setValue() 根据指定的键把数据存入缓存中。 该方法从父类中声明,在子类这里实现。 yii\caching\MemCache
setValues() 一次性存入多个 键-值 对到缓存中。 yii\caching\MemCache

属性详情

$memcache 公共 只读 属性

应用组件使用的 memcache(或者 memcached)对象。

public \Memcache|\Memcached getMemcache ( )
$options 公共 属性

Memcached 的配置选项。它在 $useMemcached 为 true 时使用。

参见 http://ca2.php.net/manual/en/memcached.setoptions.php.

public array $options null
$password 公共 属性

Memcached sasl 密码。它在 $useMemcached 为 true 时使用。

参见 http://php.net/manual/en/memcached.setsaslauthdata.php.

public string $password null
$persistentId 公共 属性

一个表示 Memcached 实例的字符串 ID。它在 $useMemcached 为 true 时使用。 默认情况下 Memcached 实例会在请求结束后销毁。为了创建一个在多请求间持久稳定的实例, 你可以为实例指定一个唯一的 ID。 这样所有基于同样的 ID 创建的实例都共享同一个连接。

参见 http://ca2.php.net/manual/en/memcached.construct.php.

public string $persistentId null
$servers 公共 属性

Memcache 服务器配置列表。

public yii\caching\MemCacheServer[] getServers ( )
public void setServers ( $config )
$useMemcached 公共 属性

使用 memcached 还是 memcache 作为底层的缓存扩展。 如果是 true,memcached 将会使用。 如果是 false,memcache 将会使用。 默认是 false。

public boolean $useMemcached false
$username 公共 属性

Memcached sasl 用户名。它在 $useMemcached 为 true 时使用。

参见 http://php.net/manual/en/memcached.setsaslauthdata.php.

public string $username null

方法详情

addMemcacheServers() 受保护 方法

添加服务器到缓存对象的服务器池。 这是使用 memcache PECL 扩展的情况。

protected void addMemcacheServers($cache, $servers)
$cache \Memcache
$servers yii\caching\MemCacheServer[]
addMemcachedServers() 受保护 方法

添加服务器到缓存对象的服务器池。 这是使用 memcached PECL 扩展的情况。

protected void addMemcachedServers($cache, $servers)
$cache \Memcached
$servers yii\caching\MemCacheServer[]
addServers() 受保护 方法

添加服务器到缓存对象的服务器池。

protected void addServers($cache, $servers)
$cache \Memcache|\Memcached
$servers yii\caching\MemCacheServer[]
throws yii\base\InvalidConfigException
addValue() 受保护 方法

在指定的键不存在的情况下,才存入指定的缓存值。 该方法从父类中声明,在子类里实现。

参见 Memcache::set().

protected boolean addValue($key, $value, $duration)
$key string

指明缓存值的键。

$value mixed

要缓存的值。

$duration integer

缓存值过期的秒数。0 表示永不过期。

return boolean

如果成功存入缓存返回 true,否则返回 false。

deleteValue() 受保护 方法

根据指定的键把数据从缓存中删除。 该方法从父类中声明,在子类这里实现。

protected boolean deleteValue($key)
$key string

指明要删除缓存的键。

return boolean

如果删除过程没有发生错误。

flushValues() 受保护 方法

从缓存中删除所有值。 该方法从父类中声明,在子类这里实现。

protected boolean flushValues()
return boolean

是否成功执行了删除操作。

getMemcache() 公共 方法

返回底层的 memcache(或者 memcached)对象。

public \Memcache|\Memcached getMemcache()
return \Memcache|\Memcached

应用组件使用的 memcache(或者 memcached)对象。

throws yii\base\InvalidConfigException

如果 memcache 或者 memcached 扩展没有加载。

getServers() 公共 方法

返回 memcache 或者 memcached 服务器的配置。

public yii\caching\MemCacheServer[] getServers()
return yii\caching\MemCacheServer[]

Memcache 服务器配置列表。

getValue() 受保护 方法

根据指定的键从缓存中获取缓存数据。 该方法从父类中声明,在子类这里实现。

protected mixed|false getValue($key)
$key string

指明缓存数据的唯一键。

return mixed|false

缓存中的值,如果缓存值不存在或者已经过期则返回 false。

getValues() 受保护 方法

根据多个缓存键从缓存中一次获取多个缓存数据。

protected array getValues($keys)
$keys array

指明缓存数据的缓存键列表。

return array

由缓存键组成下标的缓存数据列表。

init() 公共 方法

初始化应用组件。 它将完成 memcache 实例化并添加 memcache 服务器。

public void init()
setServers() 公共 方法
public void setServers($config)
$config array

Memcache 或者 memcached 服务器配置列表。每个元素必须是一个数组, 数组的键可以是:host,port,persistent,weight,timeout,retryInterval,status。

setValue() 受保护 方法

根据指定的键把数据存入缓存中。 该方法从父类中声明,在子类这里实现。

参见 Memcache::set().

protected boolean setValue($key, $value, $duration)
$key string

指明缓存值的键。

$value mixed

要缓存的值。

$duration integer

缓存值过期的秒数。0 表示永不过期。

return boolean

如果成功存入缓存返回 true,否则返回 false。

setValues() 受保护 方法

一次性存入多个 键-值 对到缓存中。

protected array setValues($data, $duration)
$data array

数组,数组的键对应缓存的键而值就是要缓存的值。

$duration integer

缓存数据过期的秒数,0 意味着永不过期。

return array

未能存入缓存数据的键列表。