在使用UML
组件之前,我们要先对需要用到缓存的数据表进行结构建模,可以理解成Mysql的创建数据表。
1、所有UML模型均需要继承\x\redis\UML
类(注意大小写区分)。
2、所有UML模型不限制存放目录,但建议统一存放在\box\uml\
或\app\uml\
目录下。
3、所有UML模型的类名就是需要缓存的数据表名。
4、所有UML模型的类名建均建议首字母大写。
例如,现在需要创建一个对应user
表的UML模型。
namespace app\uml;
use x\redis\UML;
class User extends UML
{
/**
* 使用的Redis连接池标识
*/
protected $driver = 'default';
/**
* 使用哪个Redis表存储
*/
protected $database = 12;
/**
* 是否开启回写记录
*/
protected $timer = false;
/**
* 主键字段
*/
protected $primary = 'id';
/**
* 建模必传对象
*/
protected $field_rule = [
'id',
'status',
'phone',
'region_id',
'lng',
'lat',
'create_time',
];
/**
* 普通查询规则
*/
protected $query_rule = [
'id' => ['equal'], // 等于查询
'status' => ['equal'], // 等于查询
'phone' => ['equal'], // 等于查询
'region_id' => ['equal'], // 等于查询
'create_time' => ['range'], // 日期查询
];
/**
* geo配置规则
*/
protected $geo_rule = [
'longitude' => 'lng', // 经度
'latitude' => 'lat', // 纬度
];
}
其中$primary
跟$field_rule
都是必须设置的。
将$timer
设置为true
则表示开启更新标记,可用于查询更新记录回写到Mysql中,若不需要回写更新,使用默认false
即可。
$query_rule
为查询规则,若不设置该属性,则不能在where()
中进行条件查询,规则仅支持equal
和range
,表示等于和范围查询。
$geo_rule
表示是否使用Redis的geo地理位置管理库,longitude
和latitude
的值为需要存储进去对应经纬度的字段名,若不需要开启,将其改成下面的数据结构即可:
/**
* geo配置规则
*/
protected $geo_rule = [];
默认不启用。