当前位置: 首页 > 后端技术 > PHP

Redis实现分页排序功能--文件系统业务核心功能

时间:2023-03-30 00:56:22 PHP

思路就不说了,直接上传结果,一共使用了四个redis命令:Hmset、Zadd、Zrange、Zrevrange;hmset:将数据存储在哈希数据结构中Zadd:将数据存储在有序集合中Zrange:取出顺序集合区间内的值(成员)按照score值从小到大排序。zrevrange:取出有序集合区间内的值(成员),按照score值从大到小排序。代码:/***设置redis缓存*@param$id*@param$data*@returnbool*/publicfunctionsetRedisInfo($id,$data){$redis=newredis();if(isset($id)&&isset($data)){//存储数据$redis->hMSet($id,$data);//按id排序$redis->zAdd('zadd:file',$id,$id);//按updated_at排序$redis->zAdd('zadd:file:updated_at',$data['updated_at'],$id);//根据文件大小排序$redis->zAdd('zadd:file:file_size',$data['file_size'],$id);}返回假;}/***获取缓存*@param$page*@param$pagesize*/publicfunctiongetRedisInfo($page,$pagesize){$redis=newredis();如果(isset($page)&&isset($pagesize)){//分页设置$li_start=($page-1)*$pagesize;$li_end=$li_start+$pagesize;//根据id从小到大排序得到数据$id_arr=$redis->zRange('zadd:file',$li_start,$li_end);//根据id从大到小对数据进行排序$id_arr=$redis->zRevRange('zadd:file',$li_start,$li_end);//按照updated_at从小到大Data排序$id_arr=$redis->zRange('zadd:file:updated_at',$li_start,$li_end);//根据updated_at从大到小对数据进行排序$id_arr=$redis->zRevRange('zadd:file:updated_at',$li_start,$li_end);....如果($id_arr){$list=[];foreach($id_arras$v){$list[]=$redis->hGetAll($v);}返回$列表;}返回假;}返回假;}/***删除缓存*/publicfunctiondelRedis($id){if(isset($id))$redis=newrediss();$redis->zRem('zadd:file',$id);$redis->zRem('zadd:file:updated_at',$id);$redis->del($id);返回真;}返回假;}