本文實例講述了PHP操作Redis常用技巧。分享給大家供大家參考,具體如下:
一、Redis連接與認證
//連接參數:ip、端口、連接超時時間,連接成功返回true,否則返回false$ret = $redis- connect( 127.0.0.1 , 6379, 30);//密碼認證:成功返回true,否則返回false$ret = $redis- auth( 123456
二、String操作
//設置鍵值:成功返回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);//設置新值,返回舊值:若key不存在則設置值,返回false$ret = $redis- getSet( mystr , hi man //一次設置多個鍵值對:成功返回true。$ret = $redis- mset([ name = jet , age = 18]);//一次獲取多個key的值:返回一個鍵值對數組,其中不存在的key值為false。$ret = $redis- mget([ name , age //設置指定key的值及其過期時間,單位:秒。//參數:鍵名,過期時間,鍵值。成功返回true。$ret = $redis- setex( name , 10, jetwu //以毫秒為單位設置指定key的值和過期時間。成功返回true。$ret = $redis- psetex( name , 10, jetwu //key的值不存在時,才為其設置值。key不存在且設置成功返回true,否則返回false。$ret = $redis- setnx( name , boby //setnx命令的批量操作。只有在給定所有key都不存在的時候才能設置成功,只要其中一個key存在,所有key都無法設置成功。$ret = $redis- msetnx([ country = China , city = Shenzhen //獲取指定key存儲的字符串的長度,key不存在返回0,不為字符串返回false。$ret = $redis- strlen( name //將指定key存儲的數字值增加1。若key不存在會先初始化為0再增加1,若key存儲的不是整數值則返回false。成功返回key新值。$ret = $redis- incr( age //給指定key存儲的數字值增加指定增量值。$ret = $redis- incrBy( age , 10);//給指定key存儲的數字值增加指定浮點數增量。$ret = $redis- incrByFloat( age , 1.5);//將指定key存儲的數字值減一。$ret = $redis- decr( age //將指定key存儲的數字值減去指定減量值。$ret = $redis- decrBy( age , 10);//為指定key追加值到原值末尾,若key不存在則相對于set()函數。$ret = $redis- append( mystr , haha
三、Hash操作
//為hash表中的字段賦值。成功返回1,失敗返回0。若hash表不存在會先創建表再賦值,若字段已存在會覆蓋舊值。$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 //同時設置某個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表不存在時返回空數組,key不為hash表時返回false。$ret = $redis- hKeys( user //獲取某個hash表所有字段值。$ret = $redis- hVals( user //為hash表中不存在的字段賦值。若hash表不存在則先創建,若字段已存在則不做任何操作。設置成功返回true,否則返回false。$ret = $redis- hSetNx( user , realname , jetwu //獲取某個hash表的字段數量。若hash表不存在返回0,若key不為hash表則返回false。$ret = $redis- hLen( user //為hash表中的指定字段加上指定增量值,若增量值為負數則相當于減法操作。若hash表不存在則先創建,若字段不存在則先初始化值為0再進行操作,若字段值為字符串則返回false。設置成功返回字段新值。$ret = $redis- hIncrBy( user , age , 10);//為hash表中的指定字段加上指定浮點數增量值。$ret = $redis- hIncrBy( user , age , 1.5);
四、List操作
//從list頭部插入一個值。$ret = $redis- lPush( city , guangzhou //從list尾部插入一個值。$ret = $redis- rPush( city , guangzhou //獲取列表指定區間中的元素。0表示列表第一個元素,-1表示最后一個元素,-2表示倒數第二個元素。$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 //移除并獲取列表的第一個元素。如果列表沒有元素則會阻塞列表直到等待超時或發現可彈出元素為止。//參數:key,超時時間(單位:秒)//返回值:[0= key,1= html' target='_blank'>value],超時返回[]$ret = $redis- blPop( city , 10);//移除并獲取列表的最后一個元素。如果列表沒有元素則會阻塞列表直到等待超時或發現可彈出元素為止。//參數:key,超時時間(單位:秒)//返回值:[0= key,1= value],超時返回[]$ret = $redis- brPop( city , 10);//移除列表中最后一個元素,將其插入另一個列表頭部,并返回這個元素。若源列表沒有元素則返回false。$ret = $redis- rpoplpush( city , city2 //移除列表中最后一個元素,將其插入另一個列表頭部,并返回這個元素。如果列表沒有元素則會阻塞列表直到等待超時或發現可彈出元素為止。//參數:源列表,目標列表,超時時間(單位:秒)//超時返回false$ret = $redis- brpoplpush( city , city2 , 10);//返回列表長度。$ret = $redis- lLen( city //通過索引獲取列表中的元素。若索引超出列表范圍則返回false。$ret = $redis- lindex( city , 0);//通過索引設置列表中元素的值。若是索引超出范圍,或對一個空列表進行lset操作,則返回false。$ret = $redis- lSet( city , 2, changsha //在列表中指定元素前或后面插入元素。若指定元素不在列表中,或列表不存在時,不執行任何操作。//參數:列表key,Redis::AFTER或Redis::BEFORE,基準元素,插入元素//返回值:插入成功返回插入后列表元素個數,若基準元素不存在返回-1,若key不存在返回0,若key不是列表返回false。$ret = $redis- lInsert( city , Redis::AFTER, changsha , nanjing //根據第三個參數count的值,移除列表中與參數value相等的元素。//count 0 : 從表頭開始向表尾搜索,移除與value相等的元素,數量為count。//count 0 : 從表尾開始向表頭搜索,移除與value相等的元素,數量為count的絕對值。//count = 0 : 移除表中所有與value相等的值。//返回實際刪除元素個數$ret = $redis- lrem( city , guangzhou , -2);//對一個列表進行修剪,只保留指定區間的元素,其他元素都刪除。成功返回true。$ret = $redis- ltrim( city , 1, 4);
五、Set操作
//將一個元素加入集合,已經存在集合中的元素則忽略。若集合不存在則先創建,若key不是集合類型則返回false,若元素已存在返回0,插入成功返回1。$ret = $redis- sAdd( myset , hello //返回集合中所有成員。$ret = $redis- sMembers( myset //判斷指定元素是否是指定集合的成員,是返回true,否則返回false。$ret = $redis- sismember( myset , hello //返回集合中元素的數量。$ret = $redis- scard( myset //移除并返回集合中的一個隨機元素。$ret = $redis- sPop( myset //返回集合中的一個或多個隨機成員元素,返回元素的數量和情況由函數的第二個參數count決定://如果count為正數,且小于集合基數,那么命令返回一個包含count個元素的數組,數組中的元素各不相同。//如果count大于等于集合基數,那么返回整個集合。//如果count為負數,那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為count的絕對值。$ret = $redis- sRandMember( myset , 2);//移除集合中指定的一個元素,忽略不存在的元素。刪除成功返回1,否則返回0。$ret = $redis- srem( myset , hello //迭代集合中的元素。//參數:key,迭代器變量,匹配模式,每次返回元素數量(默認為10個)$ret = $redis- sscan( myset , $it, a* , 5);//將指定成員從一個源集合移動到一個目的集合。若源集合不存在或不包含指定元素則不做任何操作,返回false。//參數:源集合,目標集合,移動元素$ret = $redis- sMove( myset , myset2 , aaa //返回所有給定集合之間的差集,不存在的集合視為空集。$ret = $redis- sDiff( myset , myset2 , myset3 //將所有給定集合之間的差集存儲在指定的目的集合中。若目的集合已存在則覆蓋它。返回差集元素個數。//參數:第一個參數為目標集合,存儲差集。$ret = $redis- sDiffStore( myset3 , myset , myset2 //返回所有給定集合的交集,不存在的集合視為空集。$ret = $redis- sInter( myset , myset2 , myset3 //將所有給定集合的交集存儲在指定的目的集合中。若目的集合已存在則覆蓋它。返回交集元素個數。//參數:第一個參數為目標集合,存儲交集。$ret = $redis- sInterStore( myset4 , myset , myset2 , myset3 //返回所有給定集合的并集,不存在的集合視為空集。$ret = $redis- sUnion( myset , myset2 , myset3 //將所有給定集合的并集存儲在指定的目的集合中。若目的集合已存在則覆蓋它。返回并集元素個數。//參數:第一個參數為目標集合,存儲并集。$ret = $redis- sUnionStore( myset4 , myset , myset2 , myset3
六、Zset操作
//將一個或多個成員元素及其分數值加入到有序集當中。如果某個成員已經是有序集的成員,則更新這個成員的分數值,并通過重新插入這個成員元素,來保證該成員在正確的位置上。分數值可以是整數值或雙精度浮點數。$ret = $redis- zAdd( scores , 98, English , 90, physics //返回有序集中指定區間內的成員。成員按分數值遞增排序,分數值相同的則按字典序來排序。//參數:第四個參數表示是否返回各個元素的分數值,默認為false。$ret = $redis- zRange( scores , 0, -1, true);//查看Zset所有成員以及它們各自的分數值//返回有序集中指定區間內的成員。成員按分數值遞減排序,分數值相同的則按字典序的逆序來排序。$ret = $redis- zReverseRange( scores , 0, -1, true);//返回有序集中指定分數區間的成員列表,按分數值遞增排序,分數值相同的則按字典序來排序。默認使用閉區間。$ret = $redis- zRangeByScore( scores , 90, 100, [ withscores = true]);//返回有序集中指定分數區間的成員列表,按分數值遞減排序,分數值相同的則按字典序的逆序來排序。注意,區間表示的時候大值在前,小值在后,默認使用閉區間。$ret = $redis- zRevRangeByScore( scores , 100, 90, [ withscores = true]);//迭代有序集合中的元素。//返回值:[元素名= 分數值,,..]$ret = $redis- zscan( scores , $it, , 10);//返回指定有序集的元素數量。$ret = $redis- zCard( scores //返回有序集中指定分數區間的成員數量。$ret = $redis- zCount( scores , 90, 100);//返回有序集中指定成員的分數值。若成員不存在則返回false。$ret = $redis- zScore( scores , math //返回有序集中指定成員的排名,按分數值遞增排序。分數值最小者排名為0。$ret = $redis- zRank( scores , chemistry //返回有序集中指定成員的排名,按分數值遞減排序。分數值最大者排名為0。$ret = $redis- zRevRank( scores , chemistry //移除有序集中的一個或多個成員,忽略不存在的成員。返回刪除的元素個數。$ret = $redis- zRem( scores , chemistry , English //移除有序集中指定排名區間的所有成員。$ret = $redis- zRemRangeByRank( scores , 0, 2);//移除有序集中指定分數值區間的所有成員。$ret = $redis- zRemRangeByScore( scores , 80, 90);//對有序集中指定成員的分數值增加指定增量值。若為負數則做減法,若有序集不存在則先創建,若有序集中沒有對應成員則先添加,最后再操作。$ret = $redis- zIncrBy( scores , 2, Chinese //計算給定一個或多個有序集的交集,并將其存儲到一個目的有序集中。結果集中某個成員的分數值是所有給定集下該成員分數值之和。$ret = $redis- zinterstore( zset3 , zset2 , zset1 //計算給定一個或多個有序集的并集,并將其存儲到一個目的有序集中。結果集中某個成員的分數值是所有給定集下該成員分數值之和。$ret = $redis- zunionstore( zset3 , zset2 , zset1您可能感興趣的文章:
原生php實現excel文件讀寫的方法分析php技巧
PHP設計模式之單例模式原理與實現方法分析php技巧
PHP設計模式之原型設計模式原理與用法分析php技巧
以上就是PHP操作Redis常用技巧總結php技巧的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答