thinkphp 使用redis 整理(二) mark 一下
参考手册???http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html redis? 几种数据类型选择,参考 : ?? ?https://blog.csdn.net/xlgen157387/article/details/60958657 https://www.cnblogs.com/George1994/p/7191011.html ? PHP + redis 类库: https://www.cnblogs.com/whoamme/p/5379469.html 实际代码中应用: 参考 :?http://www.runoob.com/redis/redis-data-types.html? 整理如下: 数组 排序? array_multisort(array_column($list,‘order_no‘),SORT_DESC,$list); // 根据数组中某个字段 倒序排序 ? $findkey = $this->redis->Keys(‘product:news:‘.$pro_id); // zset??? 或者 string $this->redis->delete($findkey); 可直接 使用 $this->redis->del(‘product:news:1‘);? ??即指定key 进行删除 $this->redis->del(‘index_info‘); 删除 所有detail : ? ??$ret = $this->redis->Keys(‘news:detail:*‘); ? ? $this->redis->delete($ret); 几种常用数据类型 1.String? 字符串类型, key value 的数据类型? ?(推荐/置顶? 的几条数据) 当查询返回的数据$data是数组时,(单个值时,不需要json_encode … 处理) ?注意:两数组合并时,避免null 影响合并,需转换数据类型。 $data=array_merge((array)$pushdata,(array)$data);? ? array_merge_recursive()?与?array_merge()?函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。 二维数组 选择某个字段 作为key? 键名: 出处 https://blog.csdn.net/m0_38030271/article/details/80660271 ?==========
赋值:$this->redis->set(‘news:topdata‘,json_encode($data)); 取值:json_decode($this->redis->get(‘news: topdata’),true);? 数据转换成数组 2.Hash 哈希 类型,一个string 类型的field ,value 的映射表,适合 存储对象(详情页detail时? 利用该类型) 注意 :获取多条数据时,hMget;??? 单条数据时,hGet,例如 上下篇: Json_decode($this->redis->hGet(‘news:list’,$preno),true); // 上下篇 ? ?========== ? ?==========? 删除: $this->redis->del(‘news:list’);// 删除 全部 移除某一条:$this->redis->hDel(‘news:list’,$id);? // 注意 hDel 需要传递两个参数 赋值: 多条数据:$this->redis->hMset(‘news:list’,$data);// $data 即查询返回的二维数组 单条数据:$this->redis->hSet(‘news:list’,$id,json_encode($data) ); 判断news:list是否有数据?可使用:$this->redis->hLen(‘news:list’); 取值:$this->redis->hMget(‘news:list’,$ids);// 返回json 格式?? $news =?jsonToArray($news);// 转换成 数组 function?jsonToArray($array) {????? return array_map(‘arrayMapHandler‘,$array);?? } function arrayMapHandler($v){ ? ? 详情 detail ?==========? ? ?==========? 赋值:$this->redis->hMset(‘news:detail:’.$id,$detail);// …->field(‘…’)->find(); 取值:$this->redis->hMget(‘news:detail:’.$id,[‘id’,’title’,’content’]);? // 获取 某个字段的值 $data=?$this->redis->hMGet(‘solution:detail:213‘,[‘status‘]);? echo $data[‘status‘]; $stu = $this->redis->hGet(‘solution:detail:213‘,‘status‘);? echo $stu; 判断detail 是否存在:?If(!$this->redis->exists(‘news:detail:’.$id)){// 不存在,此时需要记入redis} 3.ZSET(sorted set :有序集合) 类型,和set 一样也是string类型元素的集合不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。成员是唯一的,但分数 score 却可以重复 ?==========? ? ? ?==========? 删除:$this->redis->del(‘news:id’);// 多条 移除某一条:$this->redis ->zRem(‘news:id’,$id); 赋值: 多条数据: $ids = $model->…->getField(‘order_no,id’);// 返回以 order_no 为key 的数组 $this->redis->zAddArray?(‘news:id’,$ids); ? $arr = $model->...->field(‘id,name,sex,sort,....‘)->order(‘sort desc‘)->select(); $data = []; foreach($arr as $key =>$val){ $arr[$val[‘sort‘]] = $val; // 返回 以sort 为主键的数组 } ? ?$this->redis->zAddArray("product:",$data?); ? 单条数据:$this->redis->zAdd(‘news:id’,$cur_orderno,$cur_id); 获取个数 或者 判断news:id?是否存在,可使用:$sum = $this->redis->zCard(‘news:id’);// zCard? 返回有序集合的成员数 ? 取值: 取新闻为例,分页读取新闻列表数据时 $page = I(‘get.page’,1,’intval’); $row =10; $start?= ($page-1)*$row; $end?= $start +($row-1); $ids = $this->redis->zRevRange(‘news:id’,?$start?,?$end);// 返回 有序集中指定区间内成员,通过索引,分数从高到低 【$ids = $this->redis->zRevRange(‘news:id‘,-1)】 即返回全部 $news = $this->redis->hMget(‘news:list‘,?? $ids); $news =jsonToArray($news); 上下篇处理 ? zRevRangeByScore?:从高到低的分数排序 ,读取范围内的数据? ? http://blog.csdn.net/chwshuang/article/details/52834380 zRangeByScore?:?读取范围内的数据 参数:?有序集合键名称,??max ,min,?[WITHSCORES]?[LIMIT offset count] +inf和-inf分别表示Sorted-Sets中分数的最大值和最小值?? $order_no = $this->redis->zScore(‘news:id‘,$id); //?返回名称为key的zset中元素 $id 的score $nextno = $this->redis->zRevRangeByScore(‘news:id‘,$order_no,‘-inf‘,[‘limit‘=>[1,1]] ); // 下一篇? ?? $preno = $this->redis->zRangeByScore(‘news:id‘,‘+inf‘,1]] ); // 上一篇 zset? ?并集zUnion,交集?zInter?? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- php – 简单正则表达式从WordPress标题返回文本 – qtransl
- swoole 4.2.11 async-io must be used in PHP CLI mode 怎
- php – 如何在每10条记录中插入foreach循环
- 自定义page.tpl.php为drupal视图
- 在WordPress中使用wp-cron插件来设置定时任务
- php – 我们称这是什么?
- php简单隔行变色功能实现代码 <font color=red>原创
- php – 任何好的Zend Framework Minify实现?
- php – 如何使用str_replace替换单引号和双引号
- php – RecursiveDirectoryIterator对“打开的文件过多”抛