博主信息
博文 3
粉丝 0
评论 0
访问量 3000
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP初探Redis
人傻钱少好说话
原创
644人浏览过
<?php
//auth: yaodunyuan
//QQ:398123185
class RedisClass {
    public $redis;
    private $redis_domain;
    private $redis_point;
    private $redis_password;
    //实例化
    function __construct(){
        //实例化redis
        $this->redis = new Redis();
        //获取域名
        $this->domain  = $_SERVER['HTTP_HOST'];
        $this->redis_domain ;  //IP地址
        $this->redis_point ; //端口
        $this->redis_password ;//庙貌
        if ($this->domain == '127.0.0.1') {
            $this->redis_domain = $this->domain;
            $this->redis_password = 123456;
            $this->redis_point = 6379;
        } else {
            //设置成服务器地址
        }
        //redis 连接
        $this->redis->connect($this->redis_domain,$this->redis_point);
        //使用密码
        $this->redis->auth($this->redis_password);
        //选择库
        $this->redis->select(1);
    }
    
    //返回redis对象
    function return_redis():Redis{
        return $this->redis;
    }
}


/**
 * 测试类
 * 1.抽奖
 * 2.队列
 * 3.锁
 * 4.微信access_token
 */
class Test{
    //定义redis 
    public $redis;
    //实例化
    function __construct(){
        $this->RedisCalss = new RedisClass();
        $this->redis = $this->RedisCalss->return_redis();
    }

    /**
     * 1抽奖,使用Key
     */
    function luck_draw(){
        //首先看看奖品池内,是否有奖品
        if(!$this->redis->exists('luck')){
            //没有奖品,添加奖品到redis内
            $arrary = json_encode(['一等奖' ,'二等奖','二等奖','三等奖','三等奖','三等奖'],true);
            $this->redis->set('luck',$arrary);
        }
        //在随机取出奖品
        $rand = random_int(1,7);
        //反序列化
        $luck_arr = json_decode($this->redis->get('luck'));
        //取出中奖
        $return_luck = $luck_arr[$rand];
        //去除数组
        unset($luck_arr[$rand]);
        //重新装入key钟
        $this->redis->set('luck',json_encode($luck_arr,true));
        return  $return_luck;
    }

    /**
     * 2.队列
     */
    function queue(){
        //放入队列
        $arr = array('h','e','l','l','o','w','o','r','l','d');
        foreach($arr as $k=>$v){
            $this->redis->rpush('mylist',$v);
        }
        //获取尾部单个
        //return $this->redis->rpop('mylist');

        //获取头部单个
        //return $this->redis->lpop('mylist');

        //移除某个
        //return $this->redis->lrem('mylist',1);
        
        //获取长度
        //return $this->redis->llen('mylist');

        //获取全部
        return $this->redis->lrange('mylist',0,9);
        
    }

    /**
     * 锁
     */
    function lock(){
        //设置redis锁
        $randValue = rand(10000, 99999);
        $lockKey = 'lock_key';
        //声明锁
        $lock = $this->redis->set($lockKey, $randValue, ['NX', 'EX'=>1]);
        while ($lock) {
            //返回第一个物品
            $luck = $this->redis->rpop('mylist');
            //移除奖品
            $this->redis->lrem('mylist', 1);
            return ['redis' => $this->redis,'lock' => $lock,'luck'=>$luck];
        }
    }

    /**
     * 微信access_token
     */
    function accesstoken($appid,$secret){
        if (!$this->redis->exists('Wx_access_token')) {
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
            $res = json_decode(curl('GET', $url, []), true);
            //dump($res);die;
            if (isset($res['access_token'])) {
                $this->redis->set('Wx_access_token', $res['access_token'], ['ex'=> 7100]);
                return $this->redis ->get('Wx_access_token');
            } else {
                json_encode([0, '获取ACCESS_TOKEN错误:'.$res['errcode'].",msg:".$res['errmsg']]);
            }
        }
        return $this->redis->get('Wx_access_token');
    }
}
 $class = new Test();
 //1.抽奖
 print_r($class->luck_draw());

 //2.队列
 print_r($class->queue());

 //3锁
  $arr = $class->lock();
 //解除锁
  $arr['redis']->del($arr['lock']);
  print_r($arr['luck']);

 //4微信accesstoken appid 和secret 纯属乱打
 print_r($class->accesstoken('sdfssdfsldkfjsldkfs','sldkjflskdjflksjdlkf'));
?>


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学