Data


>i 本文档的最新修订日期是: > **2021-01-25** # Data ## 模块简述 将数据缓存至指定的位置,并在需要时读取/清除它。 ## 模块配置 配置文件位于 `/Config/Data.php` 。 * **`Handle`** `(String)` `'File'` : 指定缓存数据的方式。 `File` 代表通过在硬盘中建立缓存文件的方式进行缓存。 `Redis` 代表通过使用Redis进行缓存。 * **`Connect`** `(Array)` `无` : 缓存各存储介质的配置项集合。 * **`file`** `(Array)` `无` : 使用硬盘缓存时的配置项集合。 * **`level`** `(Int)` `3` : 指定文件夹的层级,取值范围为 `1``15` 。 >w 当缓存数量较多(例如有数千个商品的数据需要缓存)时,应适当增大此配置项的值。 过多或过少的层级,都将影响缓存的性能,请根据实际情况调优,或选择性能更佳的内存式缓存。 * **`clean`** `(Int)` `1000` : 指定当被读取的缓存过期时,清理此缓存(删除该缓存对应的缓存文件)的概率。 即过期的缓存被读取 `多少次` 时,当中有 `1` 次可能会触发缓存的清理。 >w 由于清理缓存是概率性触发,因此在指定的读取次数中,可能不会触发缓存清理,也可能会多次触发缓存清理。 过大的概率将影响磁盘的性能,请根据实际情况调优,或选择性能更佳的内存式缓存。 * **`redis`** `(Array)` `无` : 使用redis数据库缓存时的配置项集合。 * **`address`** `(String)` `'localhost'` : redis数据库的连接地址。 * **`password`** `(String)` `''` : redis数据库的认证密码。 * **`dbnumber`** `(Int)` `0` : 需要使用的redis数据库的编号。 * **`port`** `(Int)` `6379` : redis数据库的连接端口。 * **`timeout`** `(Int)` `15` : redis数据库的连接超时时间。 ## 公共参数 * **`key(键)`** `(String)` `默认值见方法参数`: 用以指定缓存数据的名称。 * **`prefix(前缀)`** `(String)` `默认值见方法参数`: 用以指定缓存数据的前缀,以便区分不同类型的缓存数据。 在使用 `File(文件模式)` 的缓存时,可使用 `URI` 的形式设置前缀,例如 `User/Info/Password` ,则框架会在 `/Temp/Data` (即缓存目录)下自动自动建立前述的三级文件夹,并将缓存文件放置其内。 ## :: Set()方法 ### 语法 **Data :: Set ( 传参数组 ) ** ### 说明 缓存数据。 此方法 `支持` 中文参数名。 ### 参数 * **`prefix(前缀)`** `(String)` `''`: 详见本模块 `公共参数` 部分的说明。 * **`key(键)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`value(值)`** `(Mix)` `<必须>`: 指定缓存数据的值,值的类型可为 `Bool | Array | Int | Float | String | Object` 中的其中一种。 当传入的值为 `NULL` 时,将会自动替换为 `空字符串` ,读取该缓存时也将得到一个空字符串。 * **`time(时间)`** `(Int)` `3600`: 指定缓存的有效时间,单位为秒(s)。 当传入的值 `小于1` 时,将会主动 `删除` 该缓存,无论该缓存是否过期。 >w 在使用Redis作为缓存数据的方式时,缓存的实际过期时间可能因数据库服务器与Web服务器时间不一致而发生变更。 ### 返回 `(Bool)` 类型。 返回值为 `TRUE` 时代表操作成功完成、`FALSE` 代表操作失败。 ## :: Get()方法 ### 语法 **Data :: Get ( 传参数组 ) ** ### 说明 获取缓存数据。 此方法 `支持` 中文参数名。 ### 参数 * **`prefix(前缀)`** `(String)` `''`: 详见本模块 `公共参数` 部分的说明。 * **`key(键)`** `(String)` `<必须>`: 详见本模块 `公共参数` 部分的说明。 * **`callback(回调)`** `(Function Obiect)` `NULL`: 用以指定当缓存不存在时,框架执行的回调函数。 请参见下方的示例。 ### 返回 数据类型由缓存的数据类型决定。 当返回值为 `NULL` 时代表缓存已过期/不存在,或者操作失败。 ### 示例 读取并输出一个键为random的缓存,如果未能取到该缓存(缓存不存在或已过期),则通过回调的方式,获取一个随机数,写入新的缓存值。 ```php function GetNumbert(){ return mt_rand(11111,99999); } echo Data::Get([ 'key'=>'random', 'callback'=>function(){ $Random = GetNumbert(); Data::Set([ 'key'=>'random', 'value'=>$Random, 'time'=>5 ]); return $Random; } ]); ```