首页 > 数据库 > Redis > 宝塔中ThinkPHP框架使用Redis的方法是什么

宝塔中ThinkPHP框架使用Redis的方法是什么

王林
发布: 2023-06-02 20:31:01
转载
1039 人浏览过

Redis是一种常用的非关系型数据库,主要用作数据缓存,数据保存形式为key-value,键值相互映射。它的数据存储跟MySQL不同,它数据存储在内存之中,所以数据读取相对而言很快,用来做高并发非常不错。

关于redis的安装,在服务器或者虚拟机上安装宝塔面板安装redis,这样很简单就可以使用redis了,记得安装redis的时候不仅要安装redis软件,还要进入项目使用的php版本中安装redis扩展,然后开启redis软件

1.首先在宝塔的安装面板,找到redis,点击安装。

宝塔中ThinkPHP框架使用Redis的方法是什么

2.安装完redis后,点击设置, 设置个密码

3.php环境安装redis扩展

一定要在网站使用的php版本中,安装redis扩展。

创建插件

ThinkPHP根目录的extend文件夹中创建文件 RedisPackage.php,内容如下:

<?php
 
class RedisPackage
{
    protected static $handler = null;
    protected $options = [
        &#39;host&#39; => &#39;127.0.0.1&#39;,
        &#39;port&#39; => 6379,
        &#39;password&#39; => &#39;这是你是之前设置的redis密码&#39;,
        &#39;select&#39; => 0,
        &#39;timeout&#39; => 20,//关闭时间 0:代表不关闭
        &#39;expire&#39; => 0,
        &#39;persistent&#39; => false,
        &#39;prefix&#39; => &#39;&#39;,
    ];
 
    public function __construct($options = [])
    {
        if (!extension_loaded(&#39;redis&#39;)) {   //判断是否有扩展(如果你的apache没reids扩展就会抛出这个异常)
            throw new \BadFunctionCallException(&#39;not support: redis&#39;);
        }
        if (!empty($options)) {
            $this->options = array_merge($this->options, $options);
        }
        $func = $this->options[&#39;persistent&#39;] ? &#39;pconnect&#39; : &#39;connect&#39;;     //判断是否长连接
        self::$handler = new \Redis;
        self::$handler->$func($this->options[&#39;host&#39;], $this->options[&#39;port&#39;], $this->options[&#39;timeout&#39;]);
 
        if (&#39;&#39; != $this->options[&#39;password&#39;]) {
            self::$handler->auth($this->options[&#39;password&#39;]);
        }
 
        if (0 != $this->options[&#39;select&#39;]) {
            self::$handler->select($this->options[&#39;select&#39;]);
        }
    }
 
    /**
     * 写入缓存
     * @param string $key 键名
     * @param string $value 键值
     * @param int $exprie 过期时间 0:永不过期
     * @return bool
     */
    public static function set($key, $value, $exprie = 0)
    {
        if ($exprie == 0) {
            $set = self::$handler->set($key, $value);
        } else {
            $set = self::$handler->setex($key, $exprie, $value);
        }
        return $set;
    }
 
    /**
     * 读取缓存
     * @param string $key 键值
     * @return mixed
     */
    public static function get($key)
    {
        $fun = is_array($key) ? &#39;Mget&#39; : &#39;get&#39;;
        return self::$handler->{$fun}($key);
    }
 
    /**
     * 获取值长度
     * @param string $key
     * @return int
     */
    public static function lLen($key)
    {
        return self::$handler->lLen($key);
    }
 
    /**
     * 将一个或多个值插入到列表头部
     * @param $key
     * @param $value
     * @return int
     */
    public static function LPush($key, $value, $value2 = null, $valueN = null)
    {
        return self::$handler->lPush($key, $value, $value2, $valueN);
    }
 
    /**
     * 移出并获取列表的第一个元素
     * @param string $key
     * @return string
     */
    public static function lPop($key)
    {
        return self::$handler->lPop($key);
    }
 
 
}
登录后复制

类RedisPackage中的定义数组$options,有个健名是password,这里填入上面设置的redis密码

在要使用Redis的Controller中,引入文件

import(&#39;RedisPackage&#39;, EXTEND_PATH);
登录后复制

简单使用Redis

#设置
\RedisPackage::set(&#39;要设置的key&#39;,&#39;这是value&#39;);
 
#获取
$key = \RedisPackage::get(&#39;已设置的key&#39;));
登录后复制

Redis扩展

连接redis

$redis = new \Redis(); 
//创建一个redis对象,下面可以直接使用$redis访问到redis对象

$redis->connect(&#39;127.0.0.1&#39;, 6379);
//连接redis数据库,127.0.0.1表示本地(如果线上redis和php目录在同一个IP,则一样使用127.0.0.1),6379为redis端口号,若线上没有修改则默认是这个
登录后复制

验证连接是否成功(可写可不写,仅做验证)

$redis ->set( "test" , "redis 连接成功");
echo $redis ->get( "test");
登录后复制

exists() 判断键是否存在,参数为键名

$redis->exists(&#39;active_worker_list&#39;)
登录后复制

set()

set() 存储键值,第一个参数为自己定义的键名,第二个参数为要存储的数据,通过该方法可以将数据命名之后存入缓存

$result = $redis->set(&#39;active_worker_list&#39;,$r)
登录后复制

很多时候我们存储的是数组类型的数据,但redis不支持读写数组,所以我们需要将数组转成json格式

$result = $redis->set(&#39;active_worker_list&#39;,json_encode($r,true))
登录后复制

get()

get() 获取键值,参数为键名,通过该方法可以获取到对应键中存储的值

$result = $redis->get(&#39;active_worker_list&#39;)
登录后复制

同set一样,很多时候我们需要的是数组类型的数据,所以我们需要将json格式的数据转成数组

$result = json_decode($redis->get(&#39;active_worker_list&#39;),true);
登录后复制

del()

有时候因为一些原因(有可能只是单纯赋值的时候赋错了......)我们需要删除键值,所以我们要用到del(),参数为键名

$redis->del(&#39;active_worker_list&#39;);
登录后复制

以上是宝塔中ThinkPHP框架使用Redis的方法是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:yisu.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板