redis实战php,Redis实战源码之Model类结合

# Redis实战源码之Model类结合

[TOC]

## RedisHash基类使用方法

### 新建一个模型 继承 BaseHash

~~~

/**

* Created by PhpStorm.

* Power By Mikkle

* Email:776329498@qq.com

* Date: 2017/8/24

* Time: 16:45

*/

namespace app\base\model;

class AdminHash extends BaseHash

{

protected $table="my_admin_hash";

protected $autoWriteTimestamp = true;

protected $hashKey="id";

}

~~~

### 新建一个控制器 调用新建的model方法进行操作

~~~

/**

* Created by PhpStorm.

* User: Mikkle

* Q Q:776329498

* Date: 2017/8/25/025

* Time: 23:23

*/

namespace app\api\controller;

use app\base\model\AdminHash;

class Demo extends Base

{

public function index(){

echo "课程演示页面";

}

public function RedisModelHash(){

$model = new AdminHash();

$data= [

'name'=>'Mikkle\' RedisHash',

"hash_edit"=>'要修改的字段',

];

echo "添加的数据".PHP_EOL;

dump($data);

$model->save($data);

$id = $model->id;

echo "添加Id为 $id ".PHP_EOL;

echo "添加后查询Hash数据为".PHP_EOL;

dump($model->RedisHash->setKey($id )->get());

$model->data(['hash_edit'=>'这个字段修改了',])->isUpdate(true,['id'=>$id ])->save();

echo "修改后查询Hash数据为".PHP_EOL;

dump($model->RedisHash->setKey($id )->get());

echo "添加后Hash库所有 key列表".PHP_EOL;

dump($model->RedisHash->keys("*"));

$model->destroy($id );

echo "删除后Hash库所有 key列表".PHP_EOL;

dump($model->RedisHash->keys("*"));

}

}

~~~

接下来 打开 http://study.mikkle.cn/api/demo/RedisModelHash

查看运行结果

![](https://box.kancloud.cn/ec4d5d2c6eed32b0472ddd905db06e2a_534x836.png)

结果显示 redis的Hash缓存 会通过model类的事件回调中同步修改

## 模型的便捷Hash类 使用作用和适用范围

* 增加数据查询速度 提高查询便捷性

使用静态方法快捷获取需要的数值,同时不必担心查询效率.

* 减轻数据库压力

Redis缓存推荐使用高访问量的数据查询,如果你的系统使用主从配置后,仍有很大压力,你可以考虑使用

* 用于数据统计信息表

如存储在线会员列表 存储数据统计报表等

hash用于存储在线会员玩家 有着非常大的用处

* 用于快速获取指定索引的数据

根据指定值 进行快速查询

## 模型的便捷Hash类 快速使用方法

为了方便便捷使用Redis Hash缓存查询需要的数据

~~~

function hash($guid = "PU592FB8F95842F575356"){

// RedisHash::instance()->clear();

//通过模型的静态方法获取

$user = PersonnelUser::quickGet("$guid");

dump($user);

//快速获取用户部门名称

$guid = $user["department_id"] ;

$table="mk_personnel_department";

//这个的示例用的redis示例

$department = RedisHash::quickGet("$table:$guid");

dump($department["department_name"]);

dump(RedisHash::quickGet("$table:$guid",["department_name"]));

}

~~~

运行结果如下:

![](https://box.kancloud.cn/1c70d61935835cfa5d64f48b1d24f4b3_521x485.png)

# 注意事项

> 如果使用了 redis的 HASH 缓存,那么新增修改时候务必使用model进行修改

> 目前所知 使用Loader 加载model也是无效的

> 换句话说 就是不能使用db类 也不能适应loader加载

>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值