# Redis实战源码之Model类结合 [TOC] ## RedisHash基类使用方法 ### 新建一个模型 继承 BaseHash ~~~ <?php /** * 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方法进行操作 ~~~ <?php /** * 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加载 >