PHP操作Redis常用技巧總結(jié)

一、Redis連接與認證


`//連接參數(shù):ip、端口、連接超時時間,連接成功返回true,否則返回false`

`$ret` `=` `$redis``->connect(``'127.0.0.1'``, 6379, 30);`

`//密碼認證:成功返回true,否則返回false`

`$ret` `=` `$redis``->auth(``'123456'``);`

二、String操作


`//設(shè)置鍵值:成功返回true,否則返回false`

`$redis``->set(``'mystr'``,` `'Welcome!'``);`

`//獲取鍵值:成功返回String類型鍵值,若key不存在或不是String類型則返回false`

`$ret` `=` `$redis``->get(``'mystr'``);`

`//從某個key所存儲的字符串的指定偏移量開始,替換為另一指定字符串,成功返回替換后新字符串的長度。`

`$ret` `=` `$redis``->setRange(``'mystr'``, 7,` `' to Beijing!'``);`

`//獲取存儲在指定key中字符串的子字符串。`

`$ret` `=` `$redis``->getRange(``'mystr'``, 0, 6);`

`//設(shè)置新值,返回舊值:若key不存在則設(shè)置值,返回false`

`$ret` `=` `$redis``->getSet(``'mystr'``,` `'hi man'``);`

`//一次設(shè)置多個鍵值對:成功返回true。`

`$ret` `=` `$redis``->mset([``'name'` `=>` `'jet'``,` `'age'` `=> 18]);`

`//一次獲取多個key的值:返回一個鍵值對數(shù)組,其中不存在的key值為false。`

`$ret` `=` `$redis``->mget([``'name'``,` `'age'``]);`

`//設(shè)置指定key的值及其過期時間,單位:秒。`

`//參數(shù):鍵名,過期時間,鍵值。成功返回true。`

`$ret` `=` `$redis``->setex(``'name'``, 10,` `'jetwu'``);`

`//以毫秒為單位設(shè)置指定key的值和過期時間。成功返回true。`

`$ret` `=` `$redis``->psetex(``'name'``, 10,` `'jetwu'``);`

`//key的值不存在時,才為其設(shè)置值。key不存在且設(shè)置成功返回true,否則返回false。`

`$ret` `=` `$redis``->setnx(``'name'``,` `'boby'``);`

`//setnx命令的批量操作。只有在給定所有key都不存在的時候才能設(shè)置成功,只要其中一個key存在,所有key都無法設(shè)置成功。`

`$ret` `=` `$redis``->msetnx([``'country'` `=>` `'China'``,` `'city'` `=>` `'Shenzhen'``]);`

`//獲取指定key存儲的字符串的長度,key不存在返回0,不為字符串返回false。`

`$ret` `=` `$redis``->``strlen``(``'name'``);`

`//將指定key存儲的數(shù)字值增加1。若key不存在會先初始化為0再增加1,若key存儲的不是整數(shù)值則返回false。成功返回key新值。`

`$ret` `=` `$redis``->incr(``'age'``);`

`//給指定key存儲的數(shù)字值增加指定增量值。`

`$ret` `=` `$redis``->incrBy(``'age'``, 10);`

`//給指定key存儲的數(shù)字值增加指定浮點數(shù)增量。`

`$ret` `=` `$redis``->incrByFloat(``'age'``, 1.5);`

`//將指定key存儲的數(shù)字值減一。`

`$ret` `=` `$redis``->decr(``'age'``);`

`//將指定key存儲的數(shù)字值減去指定減量值。`

`$ret` `=` `$redis``->decrBy(``'age'``, 10);`

`//為指定key追加值到原值末尾,若key不存在則相對于set()函數(shù)。`

`$ret` `=` `$redis``->append(``'mystr'``,` `'haha'``);`

三、Hash操作

`//為hash表中的字段賦值。成功返回1,失敗返回0。若hash表不存在會先創(chuàng)建表再賦值,若字段已存在會覆蓋舊值。`

`$ret` `=` `$redis``->hSet(``'user'``,` `'realname'``,` `'jetwu'``);`

`//獲取hash表中指定字段的值。若hash表不存在則返回false。`

`$ret` `=` `$redis``->hGet(``'user'``,` `'realname'``);`

`//查看hash表的某個字段是否存在,存在返回true,否則返回false。`

`$ret` `=` `$redis``->hExists(``'user'``,` `'realname'``);`

`//刪除hash表的一個字段,不支持刪除多個字段。成功返回1,否則返回0。`

`$ret` `=` `$redis``->hDel(``'user'``,` `'realname'``);`

`//同時設(shè)置某個hash表的多個字段值。成功返回true。`

`$ret` `=` `$redis``->hMset(``'user'``, [``'name'` `=>` `'jet'``,` `'age'` `=> 18]);`

`//同時獲取某個hash表的多個字段值。其中不存在的字段值為false。`

`$ret` `=` `$redis``->hMget(``'user'``, [``'name'``,` `'age'``]);`

`//獲取某個hash表所有的字段和值。`

`$ret` `=` `$redis``->hGetAll(``'user'``);`

`//獲取某個hash表所有字段名。hash表不存在時返回空數(shù)組,key不為hash表時返回false。`

`$ret` `=` `$redis``->hKeys(``'user'``);`

`//獲取某個hash表所有字段值。`

`$ret` `=` `$redis``->hVals(``'user'``);`

`//為hash表中不存在的字段賦值。若hash表不存在則先創(chuàng)建,若字段已存在則不做任何操作。設(shè)置成功返回true,否則返回false。`

`$ret` `=` `$redis``->hSetNx(``'user'``,` `'realname'``,` `'jetwu'``);`

`//獲取某個hash表的字段數(shù)量。若hash表不存在返回0,若key不為hash表則返回false。`

`$ret` `=` `$redis``->hLen(``'user'``);`

`//為hash表中的指定字段加上指定增量值,若增量值為負數(shù)則相當于減法操作。若hash表不存在則先創(chuàng)建,若字段不存在則先初始化值為0再進行操作,若字段值為字符串則返回false。設(shè)置成功返回字段新值。`

`$ret` `=` `$redis``->hIncrBy(``'user'``,` `'age'``, 10);`

`//為hash表中的指定字段加上指定浮點數(shù)增量值。`

`$ret` `=` `$redis``->hIncrBy(``'user'``,` `'age'``, 1.5);`

四、List操作

`//從list頭部插入一個值。`

`$ret` `=` `$redis``->lPush(``'city'``,` `'guangzhou'``);`

`//從list尾部插入一個值。`

`$ret` `=` `$redis``->rPush(``'city'``,` `'guangzhou'``);`

`//獲取列表指定區(qū)間中的元素。0表示列表第一個元素,-1表示最后一個元素,-2表示倒數(shù)第二個元素。`

`$ret` `=` `$redis``->lrange(``'city'``, 0, -1);``//查看隊列所有元素`

`//將一個插入已存在的列表頭部,列表不存在時操作無效。`

`$ret` `=` `$redis``->lPushx(``'city'``,` `'hangzhou'``);`

`//將一個或多個值插入已存在的列表尾部,列表不存在時操作無效。`

`$ret` `=` `$redis``->rPushx(``'city'``,` `'hangzhou'``);`

`//移除并返回列表的第一個元素,若key不存在或不是列表則返回false。`

`$ret` `=` `$redis``->lPop(``'city'``);`

`//移除并返回列表的最后一個元素,若key不存在或不是列表則返回false。`

`$ret` `=` `$redis``->rPop(``'city'``);`

`//移除并獲取列表的第一個元素。如果列表沒有元素則會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。`

`//參數(shù):key,超時時間(單位:秒)`

`//返回值:[0=>key,1=>value],超時返回[]`

`$ret` `=` `$redis``->blPop(``'city'``, 10);`

`//移除并獲取列表的最后一個元素。如果列表沒有元素則會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。`

`//參數(shù):key,超時時間(單位:秒)`

`//返回值:[0=>key,1=>value],超時返回[]`

`$ret` `=` `$redis``->brPop(``'city'``, 10);`

`//移除列表中最后一個元素,將其插入另一個列表頭部,并返回這個元素。若源列表沒有元素則返回false。`

`$ret` `=` `$redis``->rpoplpush(``'city'``,` `'city2'``);`

`//移除列表中最后一個元素,將其插入另一個列表頭部,并返回這個元素。如果列表沒有元素則會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。`

`//參數(shù):源列表,目標列表,超時時間(單位:秒)`

`//超時返回false`

`$ret` `=` `$redis``->brpoplpush(``'city'``,` `'city2'``, 10);`

`//返回列表長度。`

`$ret` `=` `$redis``->lLen(``'city'``);`

`//通過索引獲取列表中的元素。若索引超出列表范圍則返回false。`

`$ret` `=` `$redis``->lindex(``'city'``, 0);`

`//通過索引設(shè)置列表中元素的值。若是索引超出范圍,或?qū)σ粋€空列表進行l(wèi)set操作,則返回false。`

`$ret` `=` `$redis``->lSet(``'city'``, 2,` `'changsha'``);`

`//在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在時,不執(zhí)行任何操作。`

`//參數(shù):列表key,Redis::AFTER或Redis::BEFORE,基準元素,插入元素`

`//返回值:插入成功返回插入后列表元素個數(shù),若基準元素不存在返回-1,若key不存在返回0,若key不是列表返回false。`

`$ret` `=` `$redis``->lInsert(``'city'``, Redis::AFTER,` `'changsha'``,` `'nanjing'``);`

`//根據(jù)第三個參數(shù)count的值,移除列表中與參數(shù)value相等的元素。`

`//count > 0 : 從表頭開始向表尾搜索,移除與value相等的元素,數(shù)量為count。`

`//count < 0 : 從表尾開始向表頭搜索,移除與value相等的元素,數(shù)量為count的絕對值。`

`//count = 0 : 移除表中所有與value相等的值。`

`//返回實際刪除元素個數(shù)`

`$ret` `=` `$redis``->lrem(``'city'``,` `'guangzhou'``, -2);`

`//對一個列表進行修剪,只保留指定區(qū)間的元素,其他元素都刪除。成功返回true。`

`$ret` `=` `$redis``->ltrim(``'city'``, 1, 4);`

五、Set操作

`//將一個元素加入集合,已經(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'``);`

`//移除并返回集合中的一個隨機元素。`

`$ret` `=` `$redis``->sPop(``'myset'``);`

`//返回集合中的一個或多個隨機成員元素,返回元素的數(shù)量和情況由函數(shù)的第二個參數(shù)count決定:`

`//如果count為正數(shù),且小于集合基數(shù),那么命令返回一個包含count個元素的數(shù)組,數(shù)組中的元素各不相同。`

`//如果count大于等于集合基數(shù),那么返回整個集合。`

`//如果count為負數(shù),那么命令返回一個數(shù)組,數(shù)組中的元素可能會重復(fù)出現(xiàn)多次,而數(shù)組的長度為count的絕對值。`

`$ret` `=` `$redis``->sRandMember(``'myset'``, 2);`

`//移除集合中指定的一個元素,忽略不存在的元素。刪除成功返回1,否則返回0。`

`$ret` `=` `$redis``->srem(``'myset'``,` `'hello'``);`

`//迭代集合中的元素。`

`//參數(shù):key,迭代器變量,匹配模式,每次返回元素數(shù)量(默認為10個)`

`$ret` `=` `$redis``->sscan(``'myset'``,` `$it``,` `'a*'``, 5);`

`//將指定成員從一個源集合移動到一個目的集合。若源集合不存在或不包含指定元素則不做任何操作,返回false。`

`//參數(shù):源集合,目標集合,移動元素`

`$ret` `=` `$redis``->sMove(``'myset'``,` `'myset2'``,` `'aaa'``);`

`//返回所有給定集合之間的差集,不存在的集合視為空集。`

`$ret` `=` `$redis``->sDiff(``'myset'``,` `'myset2'``,` `'myset3'``);`

`//將所有給定集合之間的差集存儲在指定的目的集合中。若目的集合已存在則覆蓋它。返回差集元素個數(shù)。`

`//參數(shù):第一個參數(shù)為目標集合,存儲差集。`

`$ret` `=` `$redis``->sDiffStore(``'myset3'``,` `'myset'``,` `'myset2'``);`

`//返回所有給定集合的交集,不存在的集合視為空集。`

`$ret` `=` `$redis``->sInter(``'myset'``,` `'myset2'``,` `'myset3'``);`

`//將所有給定集合的交集存儲在指定的目的集合中。若目的集合已存在則覆蓋它。返回交集元素個數(shù)。`

`//參數(shù):第一個參數(shù)為目標集合,存儲交集。`

`$ret` `=` `$redis``->sInterStore(``'myset4'``,` `'myset'``,` `'myset2'``,` `'myset3'``);`

`//返回所有給定集合的并集,不存在的集合視為空集。`

`$ret` `=` `$redis``->sUnion(``'myset'``,` `'myset2'``,` `'myset3'``);`

`//將所有給定集合的并集存儲在指定的目的集合中。若目的集合已存在則覆蓋它。返回并集元素個數(shù)。`

`//參數(shù):第一個參數(shù)為目標集合,存儲并集。`

`$ret` `=` `$redis``->sUnionStore(``'myset4'``,` `'myset'``,` `'myset2'``,` `'myset3'``);`

六、Zset操作


`//將一個或多個成員元素及其分數(shù)值加入到有序集當中。如果某個成員已經(jīng)是有序集的成員,則更新這個成員的分數(shù)值,并通過重新插入這個成員元素,來保證該成員在正確的位置上。分數(shù)值可以是整數(shù)值或雙精度浮點數(shù)。`

`$ret` `=` `$redis``->zAdd(``'scores'``, 98,` `'English'``, 90,` `'physics'``);`

`//返回有序集中指定區(qū)間內(nèi)的成員。成員按分數(shù)值遞增排序,分數(shù)值相同的則按字典序來排序。`

`//參數(shù):第四個參數(shù)表示是否返回各個元素的分數(shù)值,默認為false。`

`$ret` `=` `$redis``->zRange(``'scores'``, 0, -1, true);``//查看Zset所有成員以及它們各自的分數(shù)值`

`//返回有序集中指定區(qū)間內(nèi)的成員。成員按分數(shù)值遞減排序,分數(shù)值相同的則按字典序的逆序來排序。`

`$ret` `=` `$redis``->zReverseRange(``'scores'``, 0, -1, true);`

`//返回有序集中指定分數(shù)區(qū)間的成員列表,按分數(shù)值遞增排序,分數(shù)值相同的則按字典序來排序。默認使用閉區(qū)間。`

`$ret` `=` `$redis``->zRangeByScore(``'scores'``, 90, 100, [``'withscores'``=>true]);`

`//返回有序集中指定分數(shù)區(qū)間的成員列表,按分數(shù)值遞減排序,分數(shù)值相同的則按字典序的逆序來排序。注意,區(qū)間表示的時候大值在前,小值在后,默認使用閉區(qū)間。`

`$ret` `=` `$redis``->zRevRangeByScore(``'scores'``, 100, 90, [``'withscores'``=>true]);`

`//迭代有序集合中的元素。`

`//返回值:[元素名=>分數(shù)值,,..]`

`$ret` `=` `$redis``->zscan(``'scores'``,` `$it``,` `''``, 10);`

`//返回指定有序集的元素數(shù)量。`

`$ret` `=` `$redis``->zCard(``'scores'``);`

`//返回有序集中指定分數(shù)區(qū)間的成員數(shù)量。`

`$ret` `=` `$redis``->zCount(``'scores'``, 90, 100);`

`//返回有序集中指定成員的分數(shù)值。若成員不存在則返回false。`

`$ret` `=` `$redis``->zScore(``'scores'``,` `'math'``);`

`//返回有序集中指定成員的排名,按分數(shù)值遞增排序。分數(shù)值最小者排名為0。`

`$ret` `=` `$redis``->zRank(``'scores'``,` `'chemistry'``);`

`//返回有序集中指定成員的排名,按分數(shù)值遞減排序。分數(shù)值最大者排名為0。`

`$ret` `=` `$redis``->zRevRank(``'scores'``,` `'chemistry'``);`

`//移除有序集中的一個或多個成員,忽略不存在的成員。返回刪除的元素個數(shù)。`

`$ret` `=` `$redis``->zRem(``'scores'``,` `'chemistry'``,` `'English'``);`

`//移除有序集中指定排名區(qū)間的所有成員。`

`$ret` `=` `$redis``->zRemRangeByRank(``'scores'``, 0, 2);`

`//移除有序集中指定分數(shù)值區(qū)間的所有成員。`

`$ret` `=` `$redis``->zRemRangeByScore(``'scores'``, 80, 90);`

`//對有序集中指定成員的分數(shù)值增加指定增量值。若為負數(shù)則做減法,若有序集不存在則先創(chuàng)建,若有序集中沒有對應(yīng)成員則先添加,最后再操作。`

`$ret` `=` `$redis``->zIncrBy(``'scores'``, 2,` `'Chinese'``);`

`//計算給定一個或多個有序集的交集,并將其存儲到一個目的有序集中。結(jié)果集中某個成員的分數(shù)值是所有給定集下該成員分數(shù)值之和。`

`$ret` `=` `$redis``->zinterstore(``'zset3'``,` `'zset2'``,` `'zset1'``);`

`//計算給定一個或多個有序集的并集,并將其存儲到一個目的有序集中。結(jié)果集中某個成員的分數(shù)值是所有給定集下該成員分數(shù)值之和。`

`$ret` `=` `$redis``->zunionstore(``'zset3'``,` `'zset2'``,` `'zset1'``);`

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容