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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。