博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用redis完成搜索/分页/排序
阅读量:5102 次
发布时间:2019-06-13

本文共 1347 字,大约阅读时间需要 4 分钟。

 
功能:根据用户展示pn的相关信息,能搜索具体的pn, 可以分页思路:redis常用结构第一就想到了hash,可以搜索和存储信息;Sorted Set 可以搜索和截取      将Pn存储在两种结构中,先从set分页后,在去hash获取具体内容
数据格式:'用户ID1' => [    'pnNumber1' => [        'pnName' => 'E',        'pnCategory' => 'A',        'pnDesc' => 'C'    ],    'pnNumber2' => [        'pnName' => 'E',        'pnCategory' => 'A',        'pnDesc' => 'C'    ]    //...],//...redis数据格式://sorted set'setName' => [    'pnNumber1',    'pnNumber2'],//hash 将pn号作为hash的field, 相关信息编码成json格式作为field的value'hashName' => [    'pnNumber1' => '{pnName: "E", pnCategory: "A", pnDesc: "C"}']代码实现://add to sorted set (sorted set 可以用来排序,有个分数的概念,所以这里用time())Yii::$app->redis->zadd($this->setName, time(), $pn);//add to hash$data = [    'pn' => $pn,    'desc' => $desc,    'category' => $category];Yii::$app->redis->hset($this->hashName, $pn, json_encode($data));//分页的实现,结合redis的两种数据格式public function getPartByLimit($start, $end){    $result = [];    //先从set中取出pn(从大到小排列)    $pns = Yii::$app->redis->zrevrange($this->setName, $start, $end);    //循环pn从hash中取出相应信息    foreach ($pns as $pn) {        $result[] = json_decode(Yii::$app->redis->hget($this->hashName, $pn), true);    }    return $result;}//搜索的实现if (Yii::$app->redis->hexists($this->hashName, $pn)) {    return json_decode(Yii::$app->redis->hget($this->hashName, $pn), true);}

 

转载于:https://www.cnblogs.com/yangqi7/p/7133494.html

你可能感兴趣的文章
1.linux ping:unknown host www.***.***
查看>>
无向图求桥 UVA 796
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
五分钟搭建WordPress博客(二)
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
Something-Summary
查看>>
Spring学习笔记
查看>>
6个有用的MySQL语句
查看>>
linux c/c++ IP字符串转换成可比较大小的数字
查看>>
我对前端MVC的理解
查看>>
剑指offer系列32-----对称二叉树的判断
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
算法为啥子那么难【转】
查看>>
对数器的使用
查看>>
OracleOraDb11g_home1TNSListener服务启动后停止,某些服务在未由其他服务或程序使用时将自己主动停止...
查看>>