寶塔中ThinkPHP框架使用Redis的一系列教程
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)擊安裝。

2.安裝完redis后,點(diǎn)擊設(shè)置, 設(shè)置個密碼
3.php環(huán)境安裝redis擴(kuò)展
一定要在網(wǎng)站使用的php版本中,安裝redis擴(kuò)展。
4.創(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密碼
5.在要使用Redis的Controller中,引入文件
import('RedisPackage', EXTEND_PATH);6.簡單使用Redis
#設(shè)置
\RedisPackage::set('要設(shè)置的key','這是value');
#獲取
$key = \RedisPackage::get('已設(shè)置的key'));7.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');到此這篇關(guān)于寶塔中ThinkPHP框架使用Redis的一系列教程的文章就介紹到這了,更多相關(guān)寶塔中ThinkPHP使用Redis的教程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis?SortedSet數(shù)據(jù)類型及其常用命令總結(jié)
Redis的SortedSet是一個可排序的set集合,與Java中的TreeSet有些類似,但底層數(shù)據(jù)結(jié)構(gòu)卻差別很大,這篇文章主要介紹了Redis?SortedSet數(shù)據(jù)類型及其常用命令詳解,需要的朋友可以參考下2024-06-06
Redis模擬延時隊(duì)列實(shí)現(xiàn)日程提醒的方法
文章介紹了如何使用Redis實(shí)現(xiàn)一個簡單的延時任務(wù)隊(duì)列,通過Redis的有序集合特性來存儲和管理延時任務(wù),通過定期檢查集合中小于等于當(dāng)前時間的任務(wù)并執(zhí)行,可以實(shí)現(xiàn)延時任務(wù)的管理,感興趣的朋友跟隨小編一起看看吧2024-11-11
Redis數(shù)據(jù)結(jié)構(gòu)之跳躍表使用學(xué)習(xí)
這篇文章主要為大家介紹了Redis數(shù)據(jù)結(jié)構(gòu)之跳躍表使用學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析
這篇文章主要介紹了Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動態(tài)泛型傳參的問題
這篇文章主要介紹了使用Redis獲取數(shù)據(jù)轉(zhuǎn)json,解決動態(tài)泛型傳參的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

