PHP操作Redis常用技巧總結(jié)
本文實(shí)例講述了PHP操作Redis常用技巧。分享給大家供大家參考,具體如下:
一、Redis連接與認(rèn)證
//連接參數(shù):ip、端口、連接超時(shí)時(shí)間,連接成功返回true,否則返回false $ret = $redis->connect('127.0.0.1', 6379, 30); //密碼認(rèn)證:成功返回true,否則返回false $ret = $redis->auth('123456');
二、String操作
//設(shè)置鍵值:成功返回true,否則返回false $redis->set('mystr', 'Welcome!'); //獲取鍵值:成功返回String類型鍵值,若key不存在或不是String類型則返回false $ret = $redis->get('mystr'); //從某個(gè)key所存儲(chǔ)的字符串的指定偏移量開始,替換為另一指定字符串,成功返回替換后新字符串的長(zhǎng)度。 $ret = $redis->setRange('mystr', 7, ' to Beijing!'); //獲取存儲(chǔ)在指定key中字符串的子字符串。 $ret = $redis->getRange('mystr', 0, 6); //設(shè)置新值,返回舊值:若key不存在則設(shè)置值,返回false $ret = $redis->getSet('mystr', 'hi man'); //一次設(shè)置多個(gè)鍵值對(duì):成功返回true。 $ret = $redis->mset(['name' => 'jet', 'age' => 18]); //一次獲取多個(gè)key的值:返回一個(gè)鍵值對(duì)數(shù)組,其中不存在的key值為false。 $ret = $redis->mget(['name', 'age']); //設(shè)置指定key的值及其過(guò)期時(shí)間,單位:秒。 //參數(shù):鍵名,過(guò)期時(shí)間,鍵值。成功返回true。 $ret = $redis->setex('name', 10, 'jetwu'); //以毫秒為單位設(shè)置指定key的值和過(guò)期時(shí)間。成功返回true。 $ret = $redis->psetex('name', 10, 'jetwu'); //key的值不存在時(shí),才為其設(shè)置值。key不存在且設(shè)置成功返回true,否則返回false。 $ret = $redis->setnx('name', 'boby'); //setnx命令的批量操作。只有在給定所有key都不存在的時(shí)候才能設(shè)置成功,只要其中一個(gè)key存在,所有key都無(wú)法設(shè)置成功。 $ret = $redis->msetnx(['country' => 'China', 'city' => 'Shenzhen']); //獲取指定key存儲(chǔ)的字符串的長(zhǎng)度,key不存在返回0,不為字符串返回false。 $ret = $redis->strlen('name'); //將指定key存儲(chǔ)的數(shù)字值增加1。若key不存在會(huì)先初始化為0再增加1,若key存儲(chǔ)的不是整數(shù)值則返回false。成功返回key新值。 $ret = $redis->incr('age'); //給指定key存儲(chǔ)的數(shù)字值增加指定增量值。 $ret = $redis->incrBy('age', 10); //給指定key存儲(chǔ)的數(shù)字值增加指定浮點(diǎn)數(shù)增量。 $ret = $redis->incrByFloat('age', 1.5); //將指定key存儲(chǔ)的數(shù)字值減一。 $ret = $redis->decr('age'); //將指定key存儲(chǔ)的數(shù)字值減去指定減量值。 $ret = $redis->decrBy('age', 10); //為指定key追加值到原值末尾,若key不存在則相對(duì)于set()函數(shù)。 $ret = $redis->append('mystr', 'haha');
三、Hash操作
//為hash表中的字段賦值。成功返回1,失敗返回0。若hash表不存在會(huì)先創(chuàng)建表再賦值,若字段已存在會(huì)覆蓋舊值。 $ret = $redis->hSet('user', 'realname', 'jetwu'); //獲取hash表中指定字段的值。若hash表不存在則返回false。 $ret = $redis->hGet('user', 'realname'); //查看hash表的某個(gè)字段是否存在,存在返回true,否則返回false。 $ret = $redis->hExists('user', 'realname'); //刪除hash表的一個(gè)字段,不支持刪除多個(gè)字段。成功返回1,否則返回0。 $ret = $redis->hDel('user', 'realname'); //同時(shí)設(shè)置某個(gè)hash表的多個(gè)字段值。成功返回true。 $ret = $redis->hMset('user', ['name' => 'jet', 'age' => 18]); //同時(shí)獲取某個(gè)hash表的多個(gè)字段值。其中不存在的字段值為false。 $ret = $redis->hMget('user', ['name', 'age']); //獲取某個(gè)hash表所有的字段和值。 $ret = $redis->hGetAll('user'); //獲取某個(gè)hash表所有字段名。hash表不存在時(shí)返回空數(shù)組,key不為hash表時(shí)返回false。 $ret = $redis->hKeys('user'); //獲取某個(gè)hash表所有字段值。 $ret = $redis->hVals('user'); //為hash表中不存在的字段賦值。若hash表不存在則先創(chuàng)建,若字段已存在則不做任何操作。設(shè)置成功返回true,否則返回false。 $ret = $redis->hSetNx('user', 'realname', 'jetwu'); //獲取某個(gè)hash表的字段數(shù)量。若hash表不存在返回0,若key不為hash表則返回false。 $ret = $redis->hLen('user'); //為hash表中的指定字段加上指定增量值,若增量值為負(fù)數(shù)則相當(dāng)于減法操作。若hash表不存在則先創(chuàng)建,若字段不存在則先初始化值為0再進(jìn)行操作,若字段值為字符串則返回false。設(shè)置成功返回字段新值。 $ret = $redis->hIncrBy('user', 'age', 10); //為hash表中的指定字段加上指定浮點(diǎn)數(shù)增量值。 $ret = $redis->hIncrBy('user', 'age', 1.5);
四、List操作
//從list頭部插入一個(gè)值。 $ret = $redis->lPush('city', 'guangzhou'); //從list尾部插入一個(gè)值。 $ret = $redis->rPush('city', 'guangzhou'); //獲取列表指定區(qū)間中的元素。0表示列表第一個(gè)元素,-1表示最后一個(gè)元素,-2表示倒數(shù)第二個(gè)元素。 $ret = $redis->lrange('city', 0, -1);//查看隊(duì)列所有元素 //將一個(gè)插入已存在的列表頭部,列表不存在時(shí)操作無(wú)效。 $ret = $redis->lPushx('city', 'hangzhou'); //將一個(gè)或多個(gè)值插入已存在的列表尾部,列表不存在時(shí)操作無(wú)效。 $ret = $redis->rPushx('city', 'hangzhou'); //移除并返回列表的第一個(gè)元素,若key不存在或不是列表則返回false。 $ret = $redis->lPop('city'); //移除并返回列表的最后一個(gè)元素,若key不存在或不是列表則返回false。 $ret = $redis->rPop('city'); //移除并獲取列表的第一個(gè)元素。如果列表沒(méi)有元素則會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 //參數(shù):key,超時(shí)時(shí)間(單位:秒) //返回值:[0=>key,1=>value],超時(shí)返回[] $ret = $redis->blPop('city', 10); //移除并獲取列表的最后一個(gè)元素。如果列表沒(méi)有元素則會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 //參數(shù):key,超時(shí)時(shí)間(單位:秒) //返回值:[0=>key,1=>value],超時(shí)返回[] $ret = $redis->brPop('city', 10); //移除列表中最后一個(gè)元素,將其插入另一個(gè)列表頭部,并返回這個(gè)元素。若源列表沒(méi)有元素則返回false。 $ret = $redis->rpoplpush('city', 'city2'); //移除列表中最后一個(gè)元素,將其插入另一個(gè)列表頭部,并返回這個(gè)元素。如果列表沒(méi)有元素則會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 //參數(shù):源列表,目標(biāo)列表,超時(shí)時(shí)間(單位:秒) //超時(shí)返回false $ret = $redis->brpoplpush('city', 'city2', 10); //返回列表長(zhǎng)度。 $ret = $redis->lLen('city'); //通過(guò)索引獲取列表中的元素。若索引超出列表范圍則返回false。 $ret = $redis->lindex('city', 0); //通過(guò)索引設(shè)置列表中元素的值。若是索引超出范圍,或?qū)σ粋€(gè)空列表進(jìn)行l(wèi)set操作,則返回false。 $ret = $redis->lSet('city', 2, 'changsha'); //在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在時(shí),不執(zhí)行任何操作。 //參數(shù):列表key,Redis::AFTER或Redis::BEFORE,基準(zhǔn)元素,插入元素 //返回值:插入成功返回插入后列表元素個(gè)數(shù),若基準(zhǔn)元素不存在返回-1,若key不存在返回0,若key不是列表返回false。 $ret = $redis->lInsert('city', Redis::AFTER, 'changsha', 'nanjing'); //根據(jù)第三個(gè)參數(shù)count的值,移除列表中與參數(shù)value相等的元素。 //count > 0 : 從表頭開始向表尾搜索,移除與value相等的元素,數(shù)量為count。 //count < 0 : 從表尾開始向表頭搜索,移除與value相等的元素,數(shù)量為count的絕對(duì)值。 //count = 0 : 移除表中所有與value相等的值。 //返回實(shí)際刪除元素個(gè)數(shù) $ret = $redis->lrem('city', 'guangzhou', -2); //對(duì)一個(gè)列表進(jìn)行修剪,只保留指定區(qū)間的元素,其他元素都刪除。成功返回true。 $ret = $redis->ltrim('city', 1, 4);
五、Set操作
//將一個(gè)元素加入集合,已經(jīng)存在集合中的元素則忽略。若集合不存在則先創(chuàng)建,若key不是集合類型則返回false,若元素已存在返回0,插入成功返回1。 $ret = $redis->sAdd('myset', 'hello'); //返回集合中所有成員。 $ret = $redis->sMembers('myset'); //判斷指定元素是否是指定集合的成員,是返回true,否則返回false。 $ret = $redis->sismember('myset', 'hello'); //返回集合中元素的數(shù)量。 $ret = $redis->scard('myset'); //移除并返回集合中的一個(gè)隨機(jī)元素。 $ret = $redis->sPop('myset'); //返回集合中的一個(gè)或多個(gè)隨機(jī)成員元素,返回元素的數(shù)量和情況由函數(shù)的第二個(gè)參數(shù)count決定: //如果count為正數(shù),且小于集合基數(shù),那么命令返回一個(gè)包含count個(gè)元素的數(shù)組,數(shù)組中的元素各不相同。 //如果count大于等于集合基數(shù),那么返回整個(gè)集合。 //如果count為負(fù)數(shù),那么命令返回一個(gè)數(shù)組,數(shù)組中的元素可能會(huì)重復(fù)出現(xiàn)多次,而數(shù)組的長(zhǎng)度為count的絕對(duì)值。 $ret = $redis->sRandMember('myset', 2); //移除集合中指定的一個(gè)元素,忽略不存在的元素。刪除成功返回1,否則返回0。 $ret = $redis->srem('myset', 'hello'); //迭代集合中的元素。 //參數(shù):key,迭代器變量,匹配模式,每次返回元素?cái)?shù)量(默認(rèn)為10個(gè)) $ret = $redis->sscan('myset', $it, 'a*', 5); //將指定成員從一個(gè)源集合移動(dòng)到一個(gè)目的集合。若源集合不存在或不包含指定元素則不做任何操作,返回false。 //參數(shù):源集合,目標(biāo)集合,移動(dòng)元素 $ret = $redis->sMove('myset', 'myset2', 'aaa'); //返回所有給定集合之間的差集,不存在的集合視為空集。 $ret = $redis->sDiff('myset', 'myset2', 'myset3'); //將所有給定集合之間的差集存儲(chǔ)在指定的目的集合中。若目的集合已存在則覆蓋它。返回差集元素個(gè)數(shù)。 //參數(shù):第一個(gè)參數(shù)為目標(biāo)集合,存儲(chǔ)差集。 $ret = $redis->sDiffStore('myset3', 'myset', 'myset2'); //返回所有給定集合的交集,不存在的集合視為空集。 $ret = $redis->sInter('myset', 'myset2', 'myset3'); //將所有給定集合的交集存儲(chǔ)在指定的目的集合中。若目的集合已存在則覆蓋它。返回交集元素個(gè)數(shù)。 //參數(shù):第一個(gè)參數(shù)為目標(biāo)集合,存儲(chǔ)交集。 $ret = $redis->sInterStore('myset4', 'myset', 'myset2', 'myset3'); //返回所有給定集合的并集,不存在的集合視為空集。 $ret = $redis->sUnion('myset', 'myset2', 'myset3'); //將所有給定集合的并集存儲(chǔ)在指定的目的集合中。若目的集合已存在則覆蓋它。返回并集元素個(gè)數(shù)。 //參數(shù):第一個(gè)參數(shù)為目標(biāo)集合,存儲(chǔ)并集。 $ret = $redis->sUnionStore('myset4', 'myset', 'myset2', 'myset3');
六、Zset操作
//將一個(gè)或多個(gè)成員元素及其分?jǐn)?shù)值加入到有序集當(dāng)中。如果某個(gè)成員已經(jīng)是有序集的成員,則更新這個(gè)成員的分?jǐn)?shù)值,并通過(guò)重新插入這個(gè)成員元素,來(lái)保證該成員在正確的位置上。分?jǐn)?shù)值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。 $ret = $redis->zAdd('scores', 98, 'English', 90, 'physics'); //返回有序集中指定區(qū)間內(nèi)的成員。成員按分?jǐn)?shù)值遞增排序,分?jǐn)?shù)值相同的則按字典序來(lái)排序。 //參數(shù):第四個(gè)參數(shù)表示是否返回各個(gè)元素的分?jǐn)?shù)值,默認(rèn)為false。 $ret = $redis->zRange('scores', 0, -1, true);//查看Zset所有成員以及它們各自的分?jǐn)?shù)值 //返回有序集中指定區(qū)間內(nèi)的成員。成員按分?jǐn)?shù)值遞減排序,分?jǐn)?shù)值相同的則按字典序的逆序來(lái)排序。 $ret = $redis->zReverseRange('scores', 0, -1, true); //返回有序集中指定分?jǐn)?shù)區(qū)間的成員列表,按分?jǐn)?shù)值遞增排序,分?jǐn)?shù)值相同的則按字典序來(lái)排序。默認(rèn)使用閉區(qū)間。 $ret = $redis->zRangeByScore('scores', 90, 100, ['withscores'=>true]); //返回有序集中指定分?jǐn)?shù)區(qū)間的成員列表,按分?jǐn)?shù)值遞減排序,分?jǐn)?shù)值相同的則按字典序的逆序來(lái)排序。注意,區(qū)間表示的時(shí)候大值在前,小值在后,默認(rèn)使用閉區(qū)間。 $ret = $redis->zRevRangeByScore('scores', 100, 90, ['withscores'=>true]); //迭代有序集合中的元素。 //返回值:[元素名=>分?jǐn)?shù)值,,..] $ret = $redis->zscan('scores', $it, '', 10); //返回指定有序集的元素?cái)?shù)量。 $ret = $redis->zCard('scores'); //返回有序集中指定分?jǐn)?shù)區(qū)間的成員數(shù)量。 $ret = $redis->zCount('scores', 90, 100); //返回有序集中指定成員的分?jǐn)?shù)值。若成員不存在則返回false。 $ret = $redis->zScore('scores', 'math'); //返回有序集中指定成員的排名,按分?jǐn)?shù)值遞增排序。分?jǐn)?shù)值最小者排名為0。 $ret = $redis->zRank('scores', 'chemistry'); //返回有序集中指定成員的排名,按分?jǐn)?shù)值遞減排序。分?jǐn)?shù)值最大者排名為0。 $ret = $redis->zRevRank('scores', 'chemistry'); //移除有序集中的一個(gè)或多個(gè)成員,忽略不存在的成員。返回刪除的元素個(gè)數(shù)。 $ret = $redis->zRem('scores', 'chemistry', 'English'); //移除有序集中指定排名區(qū)間的所有成員。 $ret = $redis->zRemRangeByRank('scores', 0, 2); //移除有序集中指定分?jǐn)?shù)值區(qū)間的所有成員。 $ret = $redis->zRemRangeByScore('scores', 80, 90); //對(duì)有序集中指定成員的分?jǐn)?shù)值增加指定增量值。若為負(fù)數(shù)則做減法,若有序集不存在則先創(chuàng)建,若有序集中沒(méi)有對(duì)應(yīng)成員則先添加,最后再操作。 $ret = $redis->zIncrBy('scores', 2, 'Chinese'); //計(jì)算給定一個(gè)或多個(gè)有序集的交集,并將其存儲(chǔ)到一個(gè)目的有序集中。結(jié)果集中某個(gè)成員的分?jǐn)?shù)值是所有給定集下該成員分?jǐn)?shù)值之和。 $ret = $redis->zinterstore('zset3', 'zset2', 'zset1'); //計(jì)算給定一個(gè)或多個(gè)有序集的并集,并將其存儲(chǔ)到一個(gè)目的有序集中。結(jié)果集中某個(gè)成員的分?jǐn)?shù)值是所有給定集下該成員分?jǐn)?shù)值之和。 $ret = $redis->zunionstore('zset3', 'zset2', 'zset1');
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+redis數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語(yǔ)法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php操作redis數(shù)據(jù)庫(kù)常見方法實(shí)例總結(jié)
- PHP操作Redis數(shù)據(jù)庫(kù)常用方法示例
- PHP數(shù)據(jù)庫(kù)操作三:redis用法分析
- PHP實(shí)現(xiàn)的redis主從數(shù)據(jù)庫(kù)狀態(tài)檢測(cè)功能示例
- PHP的Laravel框架結(jié)合MySQL與Redis數(shù)據(jù)庫(kù)的使用部署
- php實(shí)現(xiàn)redis數(shù)據(jù)庫(kù)指定庫(kù)號(hào)遷移的方法
- 30個(gè)php操作redis常用方法代碼例子
- redis 隊(duì)列操作的例子(php)
- php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購(gòu)、秒殺功能的實(shí)例
- php Session存儲(chǔ)到Redis的方法
- php+redis實(shí)現(xiàn)商城秒殺功能
- php操作redis緩存方法分享
- php操作Redis數(shù)據(jù)庫(kù)基本示例【安裝、連接、設(shè)置、查詢、斷開】
相關(guān)文章
PHP讀取配置文件類實(shí)例(可讀取ini,yaml,xml等)
這篇文章主要介紹了PHP讀取配置文件類,可讀取ini,yaml,xml等配置文件,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07淺析php過(guò)濾html字符串,防止SQL注入的方法
本篇文章是對(duì)php中過(guò)濾html字符串,防止SQL注入的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07php將xml轉(zhuǎn)化對(duì)象的實(shí)例詳解
在本篇文章里小編給大家整理的是一篇關(guān)于php將xml轉(zhuǎn)化對(duì)象的實(shí)例詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-10-10php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法
這篇文章主要介紹了php簡(jiǎn)單定時(shí)執(zhí)行任務(wù)的實(shí)現(xiàn)方法,涉及curl及sleep等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02解決PHP在DOS命令行下卻無(wú)法鏈接MySQL的技術(shù)筆記
前段時(shí)間,由于要用 php 進(jìn)行 Shell 編程時(shí),碰到了 PHP 在 WEB 下可以連接 MySQL 而在 DOS COMMAND 命令行下卻連接失敗的問(wèn)題。2010-12-12