thinkphp6 配置redis

thinkphp6 配置redis

 

官方文档写法就是坑 自己实现一个吧

<?php
class RedisClient
{
    private static $instance = null;

    /**
     * Get a instance of MyRedisClient
     *
     * @param string $key
     * @return object
     */
    public static function getInstance()
    {
        if (!self::$instance) {
            $redis = new \Redis();
            $redis->connect('127.0.0.1', 6379);
            self::$instance = $redis;
        }
        return self::$instance;
    }
    public static function lock($key, $expire = 5)
    {
        $_redis  = self::getInstance();
        $is_lock = $_redis->setnx($key, time() + $expire);

        // 不能获取锁
        if (!$is_lock) {

            // 判断锁是否过期
            $lock_time = $_redis->get($key);

            // 锁已过期,删除锁,重新获取
            if (time() > $lock_time) {
                self::unlock($key);
                $is_lock = $_redis->setnx($key, time() + $expire);
            }
        }

        return $is_lock ? true : false;
    }

    /**
     * 释放锁
     * @param  String $key 锁标识
     * @return Boolean
     */
    public static function unlock($key)
    {
        $_redis = self::getInstance();
        return $_redis->del($key);
    }
}

放到extend目录下 就好了

posted @ 2023-03-14 16:05  newmiracle宇宙  阅读(286)  评论(0编辑  收藏  举报