PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例


Posted in PHP onAugust 04, 2018

本文实例讲述了PHP操作redis实现的分页列表,新增,删除功能封装类与用法。分享给大家供大家参考,具体如下:

<?php
/*
 * redis 分页数据类库
 */
class redisPage{
  protected $_redis;
  protected $_redis_ip = '127.0.0.1'; //ip
  protected $_redis_port = 6379; //端口
  protected $_redis_db = 0; //数据库号
  protected $_hash_prefix = 'my_data'; //前缀名称
  public function __construct($ip='',$port='',$db='',$hash_prefix=''){
    if($ip != '') $this->_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 = new Redis();
    $this->_redis->connect($this->_redis_ip, $this->_redis_port);
    $this->_redis->select($this->_redis_db);
  }
  /*
   * 添加记录
   * @param $id id
   * @param $data hash数据
   * @param $hashName Hash 记录名称
   * @param $SortName Redis SortSet 记录名称
   * @param $redis Redis 对象
   * @return bool
   */
  public function set_redis_page_info($id,$data){
    if(!is_numeric($id) || !is_array($data)) return false;
    $hashName = $this->_hash_prefix.'_'.$id;
    $this->_redis->hMset($hashName, $data);
    $this->_redis->zAdd($this->_hash_prefix.'_sort',$id,$id);
    return true;
  }
  /*
   * 获取分页数据
   * @param $page 当前页数
   * @param $pageSize 每页多少条
   * @param $hashName Hash 记录名称
   * @param $SortName Redis SortSet 记录名称
   * @param $redis Redis 对象
   * @param $key 字段数组 不传为取出全部字段
   * @return array
   */
  public function get_redis_page_info($page,$pageSize,$key=array()){
    if(!is_numeric($page) || !is_numeric($pageSize)) return false;
    $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($range as $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 $id id
   * @param $hashName Hash 记录名称
   * @param $SortName Redis SortSet 记录名称
   * @param $redis Redis 对象
   * @return bool
   */
  public function del_redis_page_info($id){
    if(!is_array($id)) return false;
    foreach($id as $value){
      $hashName = $this->_hash_prefix.'_'.$value;
      $this->_redis->del($hashName);
      $this->_redis->zRem($this->_hash_prefix.'_sort',$value);
    }
    return true;
  }
  /*
   * 清空数据
   * @param string $type db:清空当前数据库 all:清空所有数据库
   * @return bool
   */
  public function clear($type='db'){
    if($type == 'db'){
      $this->_redis->flushDB();
    }elseif($type == 'all'){
      $this->_redis->flushAll();
    }else{
      return false;
    }
    return true;
  }
}
//数据库
$host='localhost';
$user='root';
$psd='';
$dbname='china';
$link = @mysql_connect($host,$user,$psd);
mysql_select_db($dbname,$link);
mysql_query("set names utf8");
$SQL = "SELECT * FROM js_collection_node order by nodeid asc limit 100 ";
$query = mysql_query($SQL);
$redis = new redisPage('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 相关文章推荐
如何在PHP中使用Oracle数据库(1)
Oct 09 PHP
杏林同学录(九)
Oct 09 PHP
PHP获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
php学习之 循环结构实现代码
Jun 09 PHP
PHP的加密方式及原理
Jun 14 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
实现获取http内容的php函数分享
Feb 16 PHP
php实现aes加密类分享
Feb 16 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
php文件缓存类汇总
Nov 21 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 #PHP
PHP实现的函数重载功能示例
Aug 03 #PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 #PHP
PHP命名空间namespace及use的简单用法分析
Aug 03 #PHP
PHP后台实现微信小程序登录
Aug 03 #PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 #PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 #PHP
You might like
模仿OSO的论坛(四)
2006/10/09 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
python简单实现获取当前时间
2016/08/27 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
python实现kmp算法的实例代码
2019/04/03 Python
python实现祝福弹窗效果
2019/04/07 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
简单了解python数组的基本操作
2019/11/26 Python
django queryset相加和筛选教程
2020/05/18 Python
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
户外拓展活动方案
2014/02/11 职场文书
白血病捐款倡议书
2014/05/14 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
2014年法务工作总结
2014/12/11 职场文书
行为习惯主题班会
2015/08/14 职场文书
建房合同协议书
2016/03/21 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS