PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
本文实例讲述了PHP操作redis实现的分页列表,新增,删除功能封装类与用法。分享给大家供大家参考,具体如下:
_redis_ip=$ip; if($port!='')$this->_redis_port=$port; if($db!='')$this->_redis_db=$db; if($hash_prefix!='')$this->_hash_prefix=$hash_prefix; $this->_redis=newRedis(); $this->_redis->connect($this->_redis_ip,$this->_redis_port); $this->_redis->select($this->_redis_db); } /* *添加记录 *@param$idid *@param$datahash数据 *@param$hashNameHash记录名称 *@param$SortNameRedisSortSet记录名称 *@param$redisRedis对象 *@returnbool */ publicfunctionset_redis_page_info($id,$data){ if(!is_numeric($id)||!is_array($data))returnfalse; $hashName=$this->_hash_prefix.'_'.$id; $this->_redis->hMset($hashName,$data); $this->_redis->zAdd($this->_hash_prefix.'_sort',$id,$id); returntrue; } /* *获取分页数据 *@param$page当前页数 *@param$pageSize每页多少条 *@param$hashNameHash记录名称 *@param$SortNameRedisSortSet记录名称 *@param$redisRedis对象 *@param$key字段数组不传为取出全部字段 *@returnarray */ publicfunctionget_redis_page_info($page,$pageSize,$key=array()){ if(!is_numeric($page)||!is_numeric($pageSize))returnfalse; $limit_s=($page-1)*$pageSize; $limit_e=($limit_s+$pageSize)-1; $range=$this->_redis->ZRANGE($this->_hash_prefix.'_sort',$limit_s,$limit_e);//指定区间内,带有score值(可选)的有序集成员的列表。 $count=$this->_redis->zCard($this->_hash_prefix.'_sort');//统计ScoreSet总数 $pageCount=ceil($count/$pageSize);//总共多少页 $pageList=array(); foreach($rangeas$qid){ if(count($key)>0){ $pageList[]=$this->_redis->hMGet($this->_hash_prefix.'_'.$qid,$key);//获取hash表中所有的数据 }else{ $pageList[]=$this->_redis->hGetAll($this->_hash_prefix.'_'.$qid);//获取hash表中所有的数据 } } $data=array( 'data'=>$pageList,//需求数据 'page'=>array( 'page'=>$page,//当前页数 'pageSize'=>$pageSize,//每页多少条 'count'=>$count,//记录总数 'pageCount'=>$pageCount//总页数 ) ); return$data; } /* *删除记录 *@param$idid *@param$hashNameHash记录名称 *@param$SortNameRedisSortSet记录名称 *@param$redisRedis对象 *@returnbool */ publicfunctiondel_redis_page_info($id){ if(!is_array($id))returnfalse; foreach($idas$value){ $hashName=$this->_hash_prefix.'_'.$value; $this->_redis->del($hashName); $this->_redis->zRem($this->_hash_prefix.'_sort',$value); } returntrue; } /* *清空数据 *@paramstring$typedb:清空当前数据库all:清空所有数据库 *@returnbool */ publicfunctionclear($type='db'){ if($type=='db'){ $this->_redis->flushDB(); }elseif($type=='all'){ $this->_redis->flushAll(); }else{ returnfalse; } returntrue; } } //数据库 $host='localhost'; $user='root'; $psd=''; $dbname='china'; $link=@mysql_connect($host,$user,$psd); mysql_select_db($dbname,$link); mysql_query("setnamesutf8"); $SQL="SELECT*FROMjs_collection_nodeorderbynodeidasclimit100"; $query=mysql_query($SQL); $redis=newredisPage('127.0.0.1',6379,0,'collection_node');//实例化对象 $redis->clear();//测试清空数据 while($info=mysql_fetch_assoc($query)){ $redis->set_redis_page_info($info['nodeid'],$info);//插入数据 } $redis->del_redis_page_info(array(61));//删除数据 $data=$redis->get_redis_page_info(1,10,array('nodeid','name'));//获取分页数据 print_r($data); ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。