溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2023-04-19 11:09:57 來源:億速云 閱讀:178 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下寶塔中ThinkPHP框架使用Redis的方法是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Redis是一種常用的非關(guān)系型數(shù)據(jù)庫,主要用作數(shù)據(jù)緩存,數(shù)據(jù)保存形式為key-value,鍵值相互映射。它的數(shù)據(jù)存儲跟MySQL不同,它數(shù)據(jù)存儲在內(nèi)存之中,所以數(shù)據(jù)讀取相對而言很快,用來做高并發(fā)非常不錯。

關(guān)于redis的安裝,在服務(wù)器或者虛擬機(jī)上安裝寶塔面板安裝redis,這樣很簡單就可以使用redis了,記得安裝redis的時候不僅要安裝redis軟件,還要進(jìn)入項(xiàng)目使用的php版本中安裝redis擴(kuò)展,然后開啟redis軟件

1.首先在寶塔的安裝面板,找到redis,點(diǎn)擊安裝。

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

2.安裝完redis后,點(diǎn)擊設(shè)置, 設(shè)置個密碼

3.php環(huán)境安裝redis擴(kuò)展

一定要在網(wǎng)站使用的php版本中,安裝redis擴(kuò)展。

創(chuàng)建插件

ThinkPHP根目錄的extend文件夾中創(chuàng)建文件 RedisPackage.php,內(nèi)容如下:

<?php
 
class RedisPackage
{
    protected static $handler = null;
    protected $options = [
        'host' => '127.0.0.1',
        'port' => 6379,
        'password' => '這是你是之前設(shè)置的redis密碼',
        'select' => 0,
        'timeout' => 20,//關(guān)閉時間 0:代表不關(guān)閉
        'expire' => 0,
        'persistent' => false,
        'prefix' => '',
    ];
 
    public function __construct($options = [])
    {
        if (!extension_loaded('redis')) {   //判斷是否有擴(kuò)展(如果你的apache沒reids擴(kuò)展就會拋出這個異常)
            throw new \BadFunctionCallException('not support: redis');
        }
        if (!empty($options)) {
            $this->options = array_merge($this->options, $options);
        }
        $func = $this->options['persistent'] ? 'pconnect' : 'connect';     //判斷是否長連接
        self::$handler = new \Redis;
        self::$handler->$func($this->options['host'], $this->options['port'], $this->options['timeout']);
 
        if ('' != $this->options['password']) {
            self::$handler->auth($this->options['password']);
        }
 
        if (0 != $this->options['select']) {
            self::$handler->select($this->options['select']);
        }
    }
 
    /**
     * 寫入緩存
     * @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) ? 'Mget' : 'get';
        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中的定義數(shù)組$options,有個健名是password,這里填入上面設(shè)置的redis密碼

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

import('RedisPackage', EXTEND_PATH);

簡單使用Redis

#設(shè)置
\RedisPackage::set('要設(shè)置的key','這是value');
 
#獲取
$key = \RedisPackage::get('已設(shè)置的key'));

Redis擴(kuò)展

連接redis

$redis = new \Redis(); 
//創(chuàng)建一個redis對象,下面可以直接使用$redis訪問到redis對象

$redis->connect('127.0.0.1', 6379);
//連接redis數(shù)據(jù)庫,127.0.0.1表示本地(如果線上redis和php目錄在同一個IP,則一樣使用127.0.0.1),6379為redis端口號,若線上沒有修改則默認(rèn)是這個

驗(yàn)證連接是否成功(可寫可不寫,僅做驗(yàn)證)

$redis ->set( "test" , "redis 連接成功");
echo $redis ->get( "test");

exists() 判斷鍵是否存在,參數(shù)為鍵名

$redis->exists('active_worker_list')

set()

set() 存儲鍵值,第一個參數(shù)為自己定義的鍵名,第二個參數(shù)為要存儲的數(shù)據(jù),通過該方法可以將數(shù)據(jù)命名之后存入緩存

$result = $redis->set('active_worker_list',$r)

很多時候我們存儲的是數(shù)組類型的數(shù)據(jù),但redis不支持讀寫數(shù)組,所以我們需要將數(shù)組轉(zhuǎn)成json格式

$result = $redis->set('active_worker_list',json_encode($r,true))

get()

get() 獲取鍵值,參數(shù)為鍵名,通過該方法可以獲取到對應(yīng)鍵中存儲的值

$result = $redis->get('active_worker_list')

同set一樣,很多時候我們需要的是數(shù)組類型的數(shù)據(jù),所以我們需要將json格式的數(shù)據(jù)轉(zhuǎn)成數(shù)組

$result = json_decode($redis->get('active_worker_list'),true);

del()

有時候因?yàn)橐恍┰颍ㄓ锌赡苤皇菃渭冑x值的時候賦錯了......)我們需要刪除鍵值,所以我們要用到del(),參數(shù)為鍵名

$redis->del('active_worker_list');

以上就是“寶塔中ThinkPHP框架使用Redis的方法是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI