X
活动推荐

阿里云高性能云主机2折293元/年

企业级性能云服务器限时2折起
新用户5折爆款服务器会场
查看详情 293元/年
阅读模式:

封装php redis缓存操作类

查看:7076  回复:0  类型:  来源:php自学网  标签 php redis

        封装php redis缓存操作类,集成了连接redis并判断连接是否成功,redis数据库选择,检测redis键是否存在,获取,写入值,设置生存时间删除清空操作。

        php redis类代码:

<?php
/**
*  redisdrive.class.php
* php redis 操作类
**/
class redisdrive{
    //键名
    public $key;
    //值
    public $value;
    //默认生存时间
    public $expire = 86400; /*60*60*24*/
    //连接是否成功
    public $redis;
    //连接redis服务器ip
    public $ip = '127.0.0.1';
    //端口
    public $port = 6379;
    //密码
    private $password = null;
    //数据库
    public $dbindex = 0;

    /**
     * 自动连接到redis缓存
     */
    public function __construct(){
        //判断php是否支持redis扩展
        if(extension_loaded('redis')){
            //实例化redis
            if($this->redis = new redis()){
                //ping连接
                if(!$this->ping()){
                    $this->redis = false;
                }else{
                        //连接通后的数据库选择和密码验证操作
                    $this->redis -> select($this->dbindex);
                    $this->redis->auth($this->password);
                }
            }else{
                $this->redis = false;
            }
        }else{
            $this->redis = false;
        }
    }

    /**
     * ping redis 的连通性
     */
    public function ping(){
        if($this->redis->connect($this->ip,$this->port)){
            return true;
        }else{
           return false;
        }
    }

    /**
     * 检测redis键是否存在
     */
    public function exists(){
        if($this->redis->exists($this->key)){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 获取redis键的值
     */
    public function get(){
        if($this->exists()){
            return json_decode($this->redis->get($this->key),true);
        }else{
            return false;
        }
    }

    /**
     * 带生存时间写入key
     */
    public function setex(){
        return $this->redis->setex($this->key,$this->expire,json_encode($this->value));
    }

    /**
     * 设置redis键值
     */
    public function set(){
        if($this->redis->set($this->key,json_encode($this->value))){
            return $this->redis->expire($this->key,$this->expire);
        }else{
            return false;
        }
    }

    /**
     * 获取key生存时间
     */
    public function ttl(){
        return $this->redis->ttl($this->key);
    }

    /**
     *删除key
     */
    public function del(){
        return $this->redis->del($this->key);
    }

    /**
     * 清空所有数据
     */
    public function flushall(){
        return $this->redis->flushall();
    }

    /**
     * 获取所有key
     */
    public function keys(){
        return $this->redis->keys('*');
    }

}

        

        实例化调用:

        判断redis是否可用和当设置了redis session 时redis不可用转回session文件操作。当redis可用时获取指定的键值如果存在就从redis中获取数据,如果不能存在就重新从数据库获取数据再写入redis,redis不可用时直接从数据库获取操作。

//实例化
$redis = new redisdrive();
$redis = false;
//是否可用判断
if($redis->redis==false){
    $redis = false;
    //如果把session存入了redis则在redis不可用时把session切换回文件存储
    ini_set('session.save_handler','files');
    ini_set('session.save_path','/tmp');
}else{
    $redis = true;
}

//redis判断和数据读取缓存操作设置
if($redis){
    //设置redis键
    $redis->key = 'res';
    //获取redis键的值
    $res_mysql = $redis->get();
    //如果没获取到redis键的值得数据则从数据库获取并写入缓存
    if(!$res){
        //设置生存时间
        $redis->expire = 60*60*6;
        //设置键
        $redis->key = 'res';

        //数据库获取数据$res
        
        //获取到数据$res,赋值
        $redis->value = $res;
        //写入到redis中
        $redis->set();    
    }
}else{
    //数据库获取数据
}


分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
给网站添加一键qq登录的功能   阅读:5926centos 7 安装 redis 3.2.9   阅读:5483HTTP 1.1 协议详解   阅读:6973栈和堆的区别   阅读:3972shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:7120一步步带你,如何网站架构   阅读:3269PHP 鸟哥:我也曾经是“不适合”编程的人   阅读:10692给网站添加一键qq登录的功能   阅读:5926shell脚本统计当前服务器并发连接数   阅读:5590php设置cookie为HttpOnly防止XSS攻击   阅读:9981mongodb设置shell开机启动脚本   阅读:7471javascript获取两个日期间的所有日期   阅读:4833centos 7 忘记root密码   阅读:3839nginx安装mysql和json模块   阅读:2811web性能测试工具ab的测试方法   阅读:3771centos 7 忘记root密码   阅读:3839php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:6339web性能测试工具ab的测试方法   阅读:3771简单的DOS攻击之死亡之ping详解   阅读:36208php冒泡排序法   阅读:11126php设置cookie为HttpOnly防止XSS攻击   阅读:9981面试的时候回去等通知,等电话的真实意思   阅读:18984shell发送邮件脚本   阅读:4682php 获取当前前后年、月、星期、日、时分秒的时间   阅读:5149centos 7 安装 nginx-1.11.10   阅读:6799小米手机端商城rem适配原理   阅读:5792浅谈javascript的函数节流   阅读:3725centos 7 安装 redis 3.2.9   阅读:5483php文件下载防盗链   阅读:8154人性漫画:打工与创业的残酷区别   阅读:3736人性漫画:打工与创业的残酷区别   阅读:3736centos 7 修改系统屏幕分辨率   阅读:35677mysql中文分词全文搜索索引讯搜的安装   阅读:5363linux教程,鸟哥私房菜(pdf全集)   阅读:7131用php从1乘到100的值   阅读:5203crontab+shell脚本实现定时备份mysql数据库   阅读:5917linux教程,鸟哥私房菜(pdf全集)   阅读:7131用php从1乘到100的值   阅读:5203php连接redis   阅读:4527关于PHP程序员技术职业生涯规划   阅读:1712mysql 为什么添加索引可以提高访问速度   阅读:4922最简单的Banner轮播左右切换效果代码及实现思路(附带源码)   阅读:26443web性能测试工具ab的测试方法   阅读:3771mysql数据一键导出到csv文件   阅读:4466面试的时候和你谈理想,是理想or入坑?   阅读:7746nginx安装mysql和json模块   阅读:2811给网站添加一键新浪微博登录的功能   阅读:5536把php session 会话保存到redis   阅读:5906浅谈javascript的函数节流   阅读:3725php显示刚刚、几分钟前、几小时前、几天前的函数   阅读:6339