没有命名空间的类 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\DbCache

继承yii\caching\DbCache » 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/DbCache.php

DbCache 是使用数据库系统实现的缓存组件。

默认情况下,DbCache 把会话数据存入名为 'cache' 的数据库表。 该表必须提前创建好。表名可以通过设置 $cacheTable 来修改。

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

下面的例子展示了如何配置应用来使用 DbCache 组件:

'cache' => [
    'class' => 'yii\caching\DbCache',
    // 'db' => 'mydb',
    // 'cacheTable' => 'my_cache',
]

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

公共属性

隐藏继承的属性

属性类型描述被定义在
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$cacheTable string 存储缓存内容的数据库表名。 表应该像下面这样提前创建好: `php CREATE TABLE cache ( id char(128) NOT NULL PRIMARY KEY, expire int(11), data BLOB ); ` 上面的 'BLOB' 表示数据库管理系统的 BLOB 类型。 下面是主流数据库管理系统中可以使用的 BLOB 类型: - MySQL: LONGBLOB - PostgreSQL: BYTEA - MSSQL: BLOB 当在生产环境中使用 DbCache 时, 我们建议为表中的 'expire' 字段增加索引来提高性能。 yii\caching\DbCache
$db yii\db\Connection|array|string DB 连接对象或者表示 DB 连接的组件 ID。 如果在 DbCache 对象创建后想要再修改这个属性, 那么你只能设置为 DB 连接对象。 从 2. yii\caching\DbCache
$defaultDuration integer 以秒为单位的默认的缓存持续时间。默认是 0,意味着永不过期。 在使用 set() 时并且没有明确传递时间参数时才会使用这个属性。 yii\caching\Cache
$gcProbability integer 当往缓存中存入一块数据时, 启动垃圾回收机制(GC)的可能性(百万分之一)。默认是 100,也就是 0. yii\caching\DbCache
$keyPrefix string 每个缓存键的一个字符串前缀,据此可以保证在整个缓存系统层面上它都是全局唯一的。 如果出现相同的缓存驱动在多个不同的应用环境下使用,建议你为每个应用环境里的这个缓存系统 设置一个唯一的缓存键前缀。 为保证系统的共用性,你应该只使用由字母和数字组成的字符串。 yii\caching\Cache
$serializer null|array|false 用来序列化和反序列化缓存数据的函数。默认是 null,这意味着 默认使用 PHP 的 serialize()unserialize() 两个函数。如果你想使用更高效的序列化功能 (比如 [igbinary](http://pecl. yii\caching\Cache

公共方法

隐藏继承的方法

方法描述被定义在
__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\DbCache
flush() 从缓存中删除所有的值。 如果缓存系统在多个应用中共享的话,请谨慎执行该操作。 yii\caching\Cache
gc() 删除过期的缓存数据。 yii\caching\DbCache
get() 根据指定的键从缓存中获取数据。 yii\caching\Cache
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getOrSet() 联合了 set()get() 两个方法的大方法,可以根据 $key 获取值, 或者在 $key 对应的缓存数据不存在的情况下,存入 $callable 执行后的结果作为缓存数据。 yii\caching\Cache
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() 初始化 DbCache 组件。 该方法将会把 $db 属性初始化,确保它指向一个有效的 DB 连接。 yii\caching\DbCache
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
trigger() Triggers an event. yii\base\Component

受保护的方法

隐藏继承的方法

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

属性详情

$cacheTable 公共 属性

存储缓存内容的数据库表名。 表应该像下面这样提前创建好:

CREATE TABLE cache (
    id char(128) NOT NULL PRIMARY KEY,
    expire int(11),
    data BLOB
);

上面的 'BLOB' 表示数据库管理系统的 BLOB 类型。 下面是主流数据库管理系统中可以使用的 BLOB 类型:

  • MySQL: LONGBLOB
  • PostgreSQL: BYTEA
  • MSSQL: BLOB

当在生产环境中使用 DbCache 时, 我们建议为表中的 'expire' 字段增加索引来提高性能。

public string $cacheTable '{{%cache}}'
$db 公共 属性

DB 连接对象或者表示 DB 连接的组件 ID。 如果在 DbCache 对象创建后想要再修改这个属性, 那么你只能设置为 DB 连接对象。 从 2.0.2 版本开始,该属性也支持配置为一个数组来创建 DB 连接对象。

$gcProbability 公共 属性

当往缓存中存入一块数据时, 启动垃圾回收机制(GC)的可能性(百万分之一)。默认是 100,也就是 0.01% 的概率。 这个数字的范围应该是 0 到 1000000。0 表示关闭 GC 功能。

public integer $gcProbability 100

方法详情

addValue() 受保护 方法

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

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

指明缓存值的键。

$value string

要缓存的值。其它的数据类型(如果禁用了 $serializer 方法),不能保存。

$duration integer

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

return boolean

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

deleteValue() 受保护 方法

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

protected boolean deleteValue($key)
$key string

指明要删除缓存的键。

return boolean

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

exists() 公共 方法

检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 注意,如果缓存数据有缓存依赖, 该方法不会检测缓存依赖是否发生变化。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。

public boolean exists($key)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

return boolean

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

flushValues() 受保护 方法

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

protected boolean flushValues()
return boolean

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

gc() 公共 方法

删除过期的缓存数据。

public void gc($force false)
$force boolean

是否强制执行垃圾回收,不论 $gcProbability 概率。 默认是 false,意味着是否发生垃圾回收还得参考由 $gcProbability 指明的可能性概率。

getValue() 受保护 方法

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

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

指明缓存数据的唯一键。

return string|false

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

getValues() 受保护 方法

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

protected array getValues($keys)
$keys array

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

return array

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

init() 公共 方法

初始化 DbCache 组件。 该方法将会把 $db 属性初始化,确保它指向一个有效的 DB 连接。

public void init()
throws yii\base\InvalidConfigException

如果 $db 连接无效。

setValue() 受保护 方法

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

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

指明缓存值的键。

$value string

要缓存的值。其它的数据类型(如果禁用了 $serializer 方法),不能保存。

$duration integer

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

return boolean

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