国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP使用Redis實(shí)戰(zhàn)實(shí)錄2:Redis擴(kuò)展方法和PHP連接Redis的多種方案

這篇具有很好參考價(jià)值的文章主要介紹了PHP使用Redis實(shí)戰(zhàn)實(shí)錄2:Redis擴(kuò)展方法和PHP連接Redis的多種方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

PHP使用Redis實(shí)戰(zhàn)實(shí)錄系列

  • PHP使用Redis實(shí)戰(zhàn)實(shí)錄1:寶塔環(huán)境搭建、6379端口配置、Redis服務(wù)啟動(dòng)失敗解決方案
  • PHP使用Redis實(shí)戰(zhàn)實(shí)錄2:Redis擴(kuò)展方法和PHP連接Redis的多種方案

PHP 中使用 Redis 前, 我們需要確保已經(jīng)安裝了 redis 服務(wù)及 PHP redis 驅(qū)動(dòng),且你的機(jī)器上能正常使用 PHP:

echo phpinfo();

PHP使用Redis實(shí)戰(zhàn)實(shí)錄2:Redis擴(kuò)展方法和PHP連接Redis的多種方案,漏刻有時(shí),php,php,redis,開發(fā)語言
出現(xiàn)上面提示,代表可以正常使用PHP操作Redis。

一、Redis擴(kuò)展方法

Redis擴(kuò)展提供了一系列方法用于與Redis服務(wù)器進(jìn)行交互。以下是一些常用的$redis對(duì)象可用的方法:

  1. 連接和關(guān)閉連接:

    • connect($host, $port, $timeout): 連接到Redis服務(wù)器。
    • close(): 關(guān)閉Redis連接。
  2. 數(shù)據(jù)操作:

    • set($key, $value): 設(shè)置指定鍵的值。
    • get($key): 獲取指定鍵的值。
    • del($key1, $key2, ...): 刪除一個(gè)或多個(gè)鍵。
    • incr($key): 增加鍵對(duì)應(yīng)的值。
    • decr($key): 減少鍵對(duì)應(yīng)的值。
    • exists($key): 檢查鍵是否存在。
    • 其他諸如appendstrlen、mset、mget等等。
  3. 列表操作:

    • lpush($key, $value1, $value2, ...): 在列表左側(cè)插入一個(gè)或多個(gè)值。
    • rpush($key, $value1, $value2, ...): 在列表右側(cè)插入一個(gè)或多個(gè)值。
    • lpop($key): 彈出列表左側(cè)的值。
    • rpop($key): 彈出列表右側(cè)的值。
    • llen($key): 獲取列表長度。
    • 其他諸如lindexlrange、ltrim等等。
  4. 哈希操作:

    • hset($key, $field, $value): 設(shè)置哈希中指定字段的值。
    • hget($key, $field): 獲取哈希中指定字段的值。
    • hdel($key, $field1, $field2, ...): 刪除一個(gè)或多個(gè)哈希字段。
    • hgetall($key): 獲取哈希中所有字段和對(duì)應(yīng)的值。
    • 其他諸如hincrby、hkeys、hvals等等。
  5. 集合操作:

    • sadd($key, $member1, $member2, ...): 向集合添加一個(gè)或多個(gè)成員。
    • srem($key, $member1, $member2, ...): 從集合中移除一個(gè)或多個(gè)成員。
    • smembers($key): 獲取集合的所有成員。
    • sismember($key, $member): 檢查成員是否存在于集合中。
    • 其他諸如sinter、sunion、sdiff等等。

這只是Redis提供的一些常見操作方法的示例列表,還有更多其他方法可供使用。具體可以參考Redis擴(kuò)展的文檔或官方網(wǎng)站來了解更多關(guān)于Redis操作的詳細(xì)信息。

二、php操作Redis語法

在PHP中,可以使用Redis擴(kuò)展來操作Redis服務(wù)器。下面是一些常用的PHP操作Redis的語法示例:

  1. 連接到Redis服務(wù)器:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 或者使用連接池連接
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
  1. 設(shè)置和獲取鍵值對(duì):
// 設(shè)置鍵的值
$redis->set('key', 'value');

// 獲取鍵的值
$value = $redis->get('key');
  1. 刪除鍵:
$redis->del('key');
  1. 判斷鍵是否存在:
if ($redis->exists('key')) {
    // 鍵存在的處理邏輯
} else {
    // 鍵不存在的處理邏輯
}
  1. 進(jìn)行哈希操作:
// 設(shè)置哈希表字段的值
$redis->hset('hash_key', 'field', 'value');

// 獲取哈希表字段的值
$value = $redis->hget('hash_key', 'field');

// 刪除哈希表字段
$redis->hdel('hash_key', 'field');
  1. 進(jìn)行列表操作:
// 在列表左側(cè)插入值
$redis->lpush('list_key', 'value1', 'value2');

// 在列表右側(cè)插入值
$redis->rpush('list_key', 'value3', 'value4');

// 彈出列表左側(cè)的值
$value = $redis->lpop('list_key');

// 彈出列表右側(cè)的值
$value = $redis->rpop('list_key');
  1. 進(jìn)行集合操作:
// 向集合添加成員
$redis->sadd('set_key', 'member1', 'member2');

// 從集合中移除成員
$redis->srem('set_key', 'member1');

// 檢查成員是否存在于集合中
if ($redis->sismember('set_key', 'member1')) {
    // 成員存在的處理邏輯
} else {
    // 成員不存在的處理邏輯
}
  1. 鍵設(shè)置過期時(shí)間
    在Redis中,你可以使用EXPIRE命令為一個(gè)鍵設(shè)置過期時(shí)間,從而控制該鍵的有效期。以下是一些在Redis中設(shè)置鍵的有效期的方法:

  2. EXPIRE key seconds:設(shè)置key的過期時(shí)間為seconds秒。當(dāng)seconds秒鐘過去后,鍵將會(huì)自動(dòng)過期并被刪除。

例如,下面的代碼將名為mykey的鍵設(shè)置為過期時(shí)間為60秒:

$redis->expire('mykey', 60);
  1. PEXPIRE key milliseconds:類似于EXPIRE命令,但時(shí)間以毫秒為單位。

例如,下面的代碼將名為mykey的鍵設(shè)置為過期時(shí)間為3000毫秒(即3秒):

$redis->pexpire('mykey', 3000);
  1. EXPIREAT key timestamp:設(shè)置key的過期時(shí)間戳,以秒為單位。timestamp參數(shù)是一個(gè)UNIX時(shí)間戳,表示鍵的過期時(shí)間點(diǎn)。

例如,下面的代碼將名為mykey的鍵設(shè)置為在1612266625秒之后過期:

$redis->expireat('mykey', 1612266625);
  1. PEXPIREAT key milliseconds-timestamp:類似于EXPIREAT命令,但時(shí)間戳以毫秒為單位。

例如,下面的代碼將名為mykey的鍵設(shè)置為在1654123456789毫秒之后過期:

$redis->pexpireat('mykey', 1654123456789);

這些命令可用于設(shè)置Redis中鍵的過期時(shí)間。一旦過期時(shí)間到達(dá),鍵將被自動(dòng)刪除。注意,只有在鍵被設(shè)置為字符串、哈希表、列表等類型時(shí),過期設(shè)置才有效。

另外,如果你想獲取鍵的剩余過期時(shí)間,你可以使用TTL命令或PTTL命令。如ttl('mykey')返回鍵mykey的剩余過期時(shí)間(以秒為單位),pttl('mykey')返回鍵mykey的剩余過期時(shí)間(以毫秒為單位)。如果鍵已過期或不存在,這些命令返回負(fù)數(shù)。

這些是一些常用的Redis操作示例,你可以根據(jù)具體的業(yè)務(wù)需求,使用相應(yīng)的方法來進(jìn)行操作。記得在操作完成后,及時(shí)關(guān)閉Redis連接,以釋放資源。

三、PHP連接Redis

1.PHP中使用帶密碼的連接Redis

若要在PHP中使用帶密碼的連接Redis,你可以使用Redis擴(kuò)展的auth方法進(jìn)行身份驗(yàn)證。以下是設(shè)置密碼并連接到Redis服務(wù)器的示例代碼:

<?php
$redis = new Redis();

// 連接到Redis服務(wù)器
$redis->connect('127.0.0.1', 6379);

// 身份驗(yàn)證
$redis->auth('your_password');

// 執(zhí)行一些操作
$redis->set('key', 'value');
$value = $redis->get('key');

echo $value; // 輸出 'value'
?>

在上述代碼中,your_password是在Redis服務(wù)器上設(shè)置的密碼。使用auth方法將密碼傳遞給Redis實(shí)例進(jìn)行身份驗(yàn)證。如果密碼不正確或與服務(wù)器配置不匹配,將會(huì)引發(fā)REDIS_AUTH異常。因此,確保提供正確的密碼以及與服務(wù)器配置相匹配的密碼。

同樣地,如果在使用Laravel框架,你可以在config/database.php文件中配置Redis連接的密碼。在對(duì)應(yīng)的'redis'配置數(shù)組中添加'password' => 'your_password'以設(shè)置密碼。

記得使用適當(dāng)?shù)陌踩胧﹣肀Wo(hù)Redis密碼,如避免將密碼明文存儲(chǔ)在代碼中或通過不安全的方式傳輸密碼。

2.PHP連接Redis拋出異常

try {
    $redis = new Redis();

    // 連接到Redis服務(wù)器
    $redis->connect('127.0.0.1', 6379);

    // 身份驗(yàn)證
    $redis->auth('kYABzc8u3zNs7cq');

    // 執(zhí)行一些操作
    $redis->set('key', 'lockdata');
    $value = $redis->get('key');

    echo $value; // 輸出 'value'

    // 關(guān)閉Redis連接
    $redis->close();
} catch (RedisException $e) {
    echo "連接Redis時(shí)發(fā)生異常:" . $e->getMessage();
}

3.PHP連接Redis:$redis->ping()

$redis->ping()是Redis擴(kuò)展提供的一個(gè)方法,用于檢測(cè)與Redis服務(wù)器的連接是否存活。

它的使用很簡單,只需要調(diào)用$redis->ping()方法即可。若連接正常且服務(wù)器可響應(yīng),則該方法返回字符串PONG。若連接異常或服務(wù)器未響應(yīng),則會(huì)拋出RedisException異常。

以下是一個(gè)示例:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

try {
    $response = $redis->ping();

    if ($response === 'PONG') {
        echo "Redis連接正常";
    } else {
        echo "Redis連接異?;蚍?wù)器未響應(yīng)";
    }
} catch (RedisException $e) {
    echo "Redis連接異常:" . $e->getMessage();
}

$redis->close();

在上述示例中,我們首先創(chuàng)建一個(gè)Redis對(duì)象,然后使用connect()方法連接到Redis服務(wù)器。接下來,我們調(diào)用ping()方法來檢測(cè)連接狀態(tài),并通過返回的響應(yīng)值進(jìn)行判斷。如果返回值為PONG,則表示連接正常;如果返回值為其他內(nèi)容,或拋出了異常,則表示連接異?;蚍?wù)器未響應(yīng)。

記得在使用ping()方法前確保已經(jīng)成功建立了與Redis服務(wù)器的連接,并在使用完成后及時(shí)關(guān)閉連接以釋放資源。

4.PHP連接Redis 條件語句寫法

如果你不想使用try語句來捕獲異常,你可以通過檢查連接和操作返回的結(jié)果來判斷是否發(fā)生了異常。以下是一個(gè)示例代碼:

$redis = new Redis();

// 連接到Redis服務(wù)器
$connected = $redis->connect('127.0.0.1', 6379);

if ($connected === false) {
    echo "無法連接到Redis服務(wù)器";
} else {
    // 執(zhí)行一些操作
    $setResult = $redis->set('key', 'value');
    if ($setResult === false) {
        echo "設(shè)置鍵值對(duì)發(fā)生了異常";
    } else {
        $value = $redis->get('key');
        if ($value === false) {
            echo "獲取鍵值對(duì)發(fā)生了異常";
        } else {
            echo $value; // 輸出 'value'
        }
    }
    // 關(guān)閉Redis連接
    $redis->close();
}

在上述示例中,我們首先檢查$redis->connect()方法的返回值來確定是否成功連接到Redis服務(wù)器。如果連接失敗,我們可以輸出相應(yīng)的錯(cuò)誤信息。如果連接成功,我們?cè)賵?zhí)行一些操作,如$redis->set()、$redis->get()等,并檢查每個(gè)操作的返回結(jié)果來判斷是否發(fā)生了異常。

使用這種寫法,你可以根據(jù)返回結(jié)果進(jìn)行邏輯判斷和處理,而無需使用trycatch塊來捕獲異常。這種寫法相對(duì)簡單,但在處理多個(gè)操作和嵌套邏輯時(shí)可能會(huì)導(dǎo)致代碼變得復(fù)雜。

記得在代碼中適當(dāng)處理連接和操作過程中的異常,確保你的程序具備健壯性并能正確處理錯(cuò)誤情況。

四、避坑指南

NOAUTH Authentication required 錯(cuò)誤

Fatal error: Uncaught exception ‘RedisException’ with message ‘NOAUTH Authentication required.’ in /www/wwwroot/redis.lockdata.cn/index.php:12 Stack trace: #0 /www/wwwroot/redis.lockdata.cn/index.php(12): Redis->set(‘key1’, ‘value1’) #1 {main} thrown in /www/wwwroot/redis.lockdata.cn/index.php on line 12

**原因:**未配置Redis密碼導(dǎo)致。

// 身份驗(yàn)證
$redis->auth('kYABzc8u3zNs7cq');

@漏刻有時(shí)文章來源地址http://www.zghlxwxcb.cn/news/detail-617210.html

到了這里,關(guān)于PHP使用Redis實(shí)戰(zhàn)實(shí)錄2:Redis擴(kuò)展方法和PHP連接Redis的多種方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • windows11 phpstudy_pro php8.2 安裝redis擴(kuò)展

    windows11 phpstudy_pro php8.2 安裝redis擴(kuò)展

    環(huán)境:windows11 phpstudy_pro php8.2.9 一、命令查看是否安裝redis擴(kuò)展 在對(duì)應(yīng)網(wǎng)站中通過打開, ,選擇對(duì)應(yīng)的PHP版本,用命令 php -m 查看自己的php 有沒有redis擴(kuò)展 上面如果有,說明已經(jīng)安裝了,如果沒有安裝; 二、下載適用于 PHP 8.2 的 Redis 動(dòng)態(tài)鏈接庫擴(kuò)展文件 使phpinfo()函數(shù)查看PH

    2024年01月24日
    瀏覽(22)
  • 【Redis實(shí)戰(zhàn)】有MQ為啥不用?用Redis作消息隊(duì)列?。縍edis作消息隊(duì)列使用方法及底層原理高級(jí)進(jìn)階

    【Redis實(shí)戰(zhàn)】有MQ為啥不用?用Redis作消息隊(duì)列!?Redis作消息隊(duì)列使用方法及底層原理高級(jí)進(jìn)階

    ?????歡迎光臨???? ??我是蘇澤,一位對(duì)技術(shù)充滿熱情的探索者和分享者。???? ??特別推薦給大家我的最新專欄 《Redis實(shí)戰(zhàn)與進(jìn)階》 本專欄純屬為愛發(fā)電永久免費(fèi)!??! 這是蘇澤的個(gè)人主頁可以看到我其他的內(nèi)容哦???? 努力的蘇澤 http://suzee.blog.csdn.net/ 我們用的是云

    2024年02月20日
    瀏覽(15)
  • 自然語言處理實(shí)戰(zhàn)項(xiàng)目17-基于多種NLP模型的詐騙電話識(shí)別方法研究與應(yīng)用實(shí)戰(zhàn)

    自然語言處理實(shí)戰(zhàn)項(xiàng)目17-基于多種NLP模型的詐騙電話識(shí)別方法研究與應(yīng)用實(shí)戰(zhàn)

    大家好,我是微學(xué)AI,今天給大家介紹一下自然語言處理實(shí)戰(zhàn)項(xiàng)目17-基于NLP模型的詐騙電話識(shí)別方法研究與應(yīng)用,相信最近小伙伴都都看過《孤注一擲》這部寫實(shí)的詐騙電影吧,電影主要圍繞跨境網(wǎng)絡(luò)詐騙展開,電影取材自上萬起真實(shí)詐騙案例。隨著科技的快速發(fā)展,詐騙電

    2024年02月09日
    瀏覽(34)
  • 【Linux】CentOS7操作系統(tǒng)安裝nginx實(shí)戰(zhàn)(多種方法,超詳細(xì))

    【Linux】CentOS7操作系統(tǒng)安裝nginx實(shí)戰(zhàn)(多種方法,超詳細(xì))

    大家好,又見面了,我是沐風(fēng)曉月,本文是專欄【運(yùn)維系列-架構(gòu)與服務(wù)】專欄中的[linux基本功-系統(tǒng)服務(wù)實(shí)戰(zhàn)篇],主要講解nginx的編譯安裝和yum安裝的方式 此專欄是沐風(fēng)曉月對(duì)Linux常見的服務(wù)和架構(gòu)進(jìn)行總結(jié),希望能夠加深自己的印象,以及幫助到其他的小伙伴????。 如果

    2024年02月02日
    瀏覽(24)
  • 本機(jī)安裝docker,redis并進(jìn)行連接實(shí)戰(zhàn)

    本機(jī)安裝docker,redis并進(jìn)行連接實(shí)戰(zhàn)

    win10系統(tǒng),想要在本機(jī)搭建一套開發(fā)環(huán)境,需要安裝zk,redis等組件,一個(gè)個(gè)的安裝顯然效率太低且復(fù)雜,這里考慮安裝docker及相關(guān)鏡像 docker官網(wǎng)下載:https://docs.docker.com/desktop/install/windows-install/ 下載完成后直接安裝即可,安裝完成會(huì)有一個(gè)docker desktop圖標(biāo) 打開powershell ,輸入

    2024年02月15日
    瀏覽(20)
  • PHP連接Apache不成功的解決方法

    PHP是一種在Web開發(fā)中非常常用的編程語言,但在使用PHP時(shí),有時(shí)會(huì)遇到連接Apache不成功的問題。這個(gè)問題主要是因?yàn)榉?wù)器的配置問題所導(dǎo)致的。在本文中,我們將探討如何解決PHP連接Apache不成功的問題。 檢查配置文件 首先,我們需要檢查PHP和Apache的配置文件是否正確。在

    2023年04月11日
    瀏覽(15)
  • CentOS系列:【Linux】CentOS7操作系統(tǒng)安裝nginx實(shí)戰(zhàn)(多種方法,超詳細(xì))

    CentOS系列:【Linux】CentOS7操作系統(tǒng)安裝nginx實(shí)戰(zhàn)(多種方法,超詳細(xì))

    本次的實(shí)驗(yàn)環(huán)境見下表: 操作系統(tǒng) 服務(wù)器IP hostname centos7.6 192.168.1.41 mufengrow41 如何查看相應(yīng)的參數(shù): 查看操作系統(tǒng): 查看ip 2.1 添加yum源 nginx不在的默認(rèn)的yum源中, 可以使用epel或者官網(wǎng)提供的yum源來安裝。 以下兩種方法,選擇任意一種即可,也就是2.1.1和2.1.2兩個(gè)小節(jié)的內(nèi)

    2024年04月15日
    瀏覽(28)
  • go~連接redis的方法

    在Go語言中使用Redis,通常需要使用第三方庫來實(shí)現(xiàn)與Redis服務(wù)器的交互。目前比較流行的Go語言Redis客戶端庫有 go-redis 和 redigo 等。這里以 go-redis 為例,簡單介紹如何在Go語言中使用Redis。 安裝go-redis庫 : 可以使用go命令行工具安裝 go-redis 庫: 示例代碼 : 下面是一個(gè)簡單的

    2024年04月08日
    瀏覽(13)
  • 微信小程序?qū)W習(xí)實(shí)錄2(下拉刷新、下拉加載更多、小程序事件、PHP后端代碼、刷新無數(shù)據(jù)解決方案)

    微信小程序?qū)W習(xí)實(shí)錄2(下拉刷新、下拉加載更多、小程序事件、PHP后端代碼、刷新無數(shù)據(jù)解決方案)

    lazyCodeLoading基礎(chǔ)庫 2.11.1 及以上版本支持,2.11.1 以下兼容但無優(yōu)化效果 通常情況下,在小程序啟動(dòng)期間,所有頁面及自定義組件的代碼都會(huì)進(jìn)行注入,當(dāng)前頁面沒有使用到的自定義組件和頁面在注入后其實(shí)并沒有被使用。自基礎(chǔ)庫版本 2.11.1 起,小程序支持有選擇地注入必要

    2024年02月05日
    瀏覽(20)
  • 考慮從IP、網(wǎng)關(guān)、DNS方面解決Linux不能上網(wǎng)問題,nmtui和nmcli等多種方法為Linux網(wǎng)卡連接配置靜態(tài)IP

    考慮從IP、網(wǎng)關(guān)、DNS方面解決Linux不能上網(wǎng)問題,nmtui和nmcli等多種方法為Linux網(wǎng)卡連接配置靜態(tài)IP

    本文基于Linux上CentOS 7和rocky 9版本進(jìn)行演示 目錄 IP地址 一.圖形界面直接設(shè)置 二.nmtui命令工具 三.nm-connection-editor命令工具 四.終端nmcli命令 網(wǎng)關(guān) 確認(rèn)虛擬機(jī)VMnet8網(wǎng)卡網(wǎng)關(guān)地址一致,一般為x.x.x.1 ?DNS 設(shè)置有效的DNS地址,114.114.114.114或8.8.8.8 無法上網(wǎng)考慮三個(gè)問題,IP地址是否有

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包