redis String命令,php操作Redis String函數介紹

String類型簡介

String類型存儲的值類型包括:字符串,整數類型,浮點數類型,String類型的相關命令可以對字符串和整數型元素進行一定的處理。

原生命令介紹

命令 命令描述 實例
SET key value 設置key的值爲value SET string1 ‘testyyy’
GET key 獲取指定key的value值 GET string1,返回testyyy
GETRANGE key start end 返回指定key的value值的子串 GETRANGE string1 0 1 ,返回值:te,GETRANGE string1 0 -1 ,返回值:testyyy,GETRANGE string1 -3 -1 ,返回值:yyy
GETSET key value 將指定的key的值設爲value,並返回key的舊值(old value) GETSET string1 youshuo,返回值:testyyy,再次執行GET string1,返回:youshuo
GETBIT key offset 對key所存儲的字符串值,獲取指定偏移量上的位(bit) GETBIT string1 1,返回值:1
MGET key1,key2 獲取一個或者多個給定key的value值 MGET string1 string2,返回值:“youshuo”,“tettou”
MSET key value [key value] 同時設置一個或者多個key-value對當且僅當所有給定的key都不存在 MSET k1 ‘k111’ k2 ‘k222’,MGET k1 k2,輸出"k111",“k222”
MSETNX key value [key value] 同時設置一個或多個key-value對,當且僅當所有key都不存在 MSETNX k3 ‘k3333’ k4 ‘k4444’,執行MGET k3 k4,返回值:k333,k444
SETBIT key offset value 對key所存儲的字符串值,設置或清除指定偏移量上的位(bit) SETBIT string1 15 0,執行get string1後返回:Ynushuo,(每個字符都是有8位二進制編碼組成的,修改其中的一位,就會改變這個值),offset指的是哪個位置的數據偏移,value則是指偏移量:0或1
SETEX key seconds value 將值value關聯到key,並將key的過期時間設置爲seconds(以秒爲單位) SETEX string1 12 pppp,立即執行get string1,返回值:pppp,12秒後執行get string1,返回值爲空nil
SETNX key value 只有在key不存在時設置key的值 SETNX nokey ‘llll’,執行get nokey,返回值:‘llll’,再次執行SETNX nokey ‘kkkk’,返回值:‘llll’,nokey的值不變
SETRANGE key offset value 用value參數覆寫給定key所存儲的字符串值,從偏移量offset開始 string1的值爲youshuo,執行SETRANGE string1 3 ‘test’,string1的值爲youtest
STRLEN key 返回key所存儲的字符串值得長度 STRLEN string1,返回值:7
PSETEX key milliseconds value 類似SETEX,但是以毫秒爲單位設置key的生存時間 PSETEX pkey 4000 ‘ppp’,
INCR key 將key中存儲的數字值增一 SET num 1,INCR num,GET num輸出num值:2
INCRBY key increment 將key所存儲的值加上給定的增量值 INCRBY num 3,GET num輸出num值:5
INCRBYFLOAT key increment 將key所存儲的值加上給定的浮點增量值 INCRBYFLOAT num 1.2,執行該命令直接返回num的值:6.2
DECR key 將key中存儲的數字值減一 set num 6,DECR num 直接輸出num值爲:5
DECRBY key decrement key所存儲的值減去給定的減量值 DECRBY num 6,直接輸出num值爲:-1
APPEND key value 如果key已經存在且是一個字符串,APPEND命令將指定的value追加到該key原來值得末尾 APPEND string1 ‘pop’,GET string1輸出:youtestpop

PHP操作redis string的函數

  • set(key,value,Timeout or options Array)函數
    * 說明:爲string類型的key賦值value;如果第三個參數爲Timeout(整數),則相當於運行SETEX命令(單位爲:s),如果第三個參數爲Array,則使用redis的擴展選項(看實例)
    * 參數:key,value,Timeout or options Array
    * 返回值:命令執行成功返回true
    * php $ret = $redis->set('key', 'value', Array('nx', 'ex'=>100)); //爲key設置生存時間:100s; $res = $redis->ttl('key'); var_dump($res); // 返回:key剩餘的時間(單位:s)
    * php $ret = $redis->set('string1', 'value', Array('xx', 'px'=>100000));//爲已存在的key賦值並設置生存時間 $res = $redis->pttl('string1'); var_dump($res); //返回:string1剩餘的時間(單位:ms)
  • get(key)函數
    * 說明:獲取key的value值
    * 參數: key
    * 返回值:如果key存在,則返回key的value;若key不存在,則返回false;
    * php $ret = $redis->get('string1'); //返回值:value
  • setEx(key,ttl,value)函數
    * 說明:爲key賦值value,並設置生存時間爲ttl(s)
    * 參數:key,ttl(生存時間),value(key值)
    * 返回值:命令執行成功則返回true
    * php $ret = $redis->setEx('key', 3600, 'value'); var_dump($ret); // true
  • pSetEx(key,pttl,value)函數
    * 說明:爲key賦值value,並設置生存時間爲ttl(ms)
    * 參數:key,ttl(生存時間),value(key值)
    * 返回值:命令執行成功則返回true
    * php $ret = $redis->pSetEx('key', 3600, 'value'); var_dump($ret); // true
  • setNx(key,value)函數
    * 說明:如果key在數據庫中不存在,則爲key賦值value,
    * 參數:key,value(key值)
    * 返回值:命令執行成功則返回true,否則返回false;
    * php $ret = $redis->setNx('key', 'value'); var_dump($ret); // true $res = $redis->setNx('key', 'value2'); var_dump($res); // false
  • del(para), delete(para), unlink(para)
    * 說明:刪除給定的key;redis-server >= 4.0.0可以使用unlink()刪除給定的key,unlink方法是非阻塞的,會異步執行刪除操作;
    * 參數:para可以是多個key(類似:del(key1 key2 …)),也可以是多個key組成的數組(array(key1,key2,key3,…))
    * 返回值:返回被刪除key的個數
    * php $redis->set('key1', 'val1'); $redis->set('key2', 'val2'); $redis->set('key3', 'val3'); $redis->set('key4', 'val4'); $redis->delete('key1', 'key2'); /* return 2 */ $redis->delete(array('key3', 'key4')); /* return 2 */
    * php /* If using Redis >= 4.0.0 you can call unlink */ $redis->unlink('key1', 'key2'); $redis->unlink(Array('key1', 'key2'));
  • exists(key)函數
    * 說明: 驗證key是否存在於數據庫
    * 參數: key:可以是單個的key,也可以是多個key組成的數組
    * 返回值:返回要驗證的key中實際存在的key的個數
    * 注意:redis-server < 4.0.0 key只能是單個,且返回true或false;
    * php $redis->set('key1', 'val1'); $redis->set('key2', 'val2'); $redis->set('key3', 'val3'); $redis->set('key4', 'val4'); $ret = $redis->exists('key5'); var_dump($ret); /*key5不存在返回: false */
  • incr(key,[increment]), incrBy(key,increment)函數
    * 說明:爲key的value時整數的值加上1或者increment;對incr來說,increment爲非必須選項;對incrBy而言,increment爲必選項;
    * 參數:key,increment(增量)
    * 返回值:返回key的新值(加上增量之後的值)
    * 注意: 如果key不存在,則key的默認值爲:0;
    * php $redis->incr('key1');/* 1 */ $redis->incr('key1',9); /* 10 */ $redis->incrBy('key1',10); /* 20 */ $ret = $redis->get('key1'); var_dump($ret); /* 20 */
  • incrByFloat(key,float_increment)函數
    * 說明:爲key的value值增加float_increment
    * 參數:key,float_increment(浮點數)
    * 返回值:key的新value(浮點型數據)
    * php $redis->set('float1',2.4); $ret = $redis->incrByFloat('float1',4.3); // 輸出$ret=6.7
  • decr(key,[increment]), decrBy(key,increment)
    * 說明:爲key的value值減去1或者increment
    * 參數:key,increment(對於decr來說非必須選項,對decrBy來說是必選項)
    * 返回值:key的新值
    * 注意:key的值必須是整型數據
    * php $redis->set('key',13); $res = $redis->decr('key'); /* 12 */ $ret = $redis->decr('key',3); /* 9 */ $ret1 = $redis->decrBy('key',2); /* 7 */
  • mGet(para), getMultiple(para)函數
    * 說明:返回數組中所有key的value值,如果key不存在,則返回false;兩個函數的作用是一樣的
    * 參數: 由key組成的數組
    * 返回值:獲取所有key返回的值組成的數組(索引數組)
    * php $ret = $redis->mget(array('string','string1','string2')); /* array(3) { [0]=> string(7) "string3" [1]=> string(5) "value" [2]=> string(8) "validjty" } */ $res = $redis->mget(array('string7','string3','string8')); /* array(3) { [0]=> bool(false) [1]=> string(6) "value3" [2]=> bool(false) } */
  • getSet(key,value)函數
    * 說明:爲key賦予新值value,並返回key的舊值
    * 參數: key,value(key的新值)
    * 返回值:返回key的舊值
    * php $redis->set('string',199); $ret = $redis->getSet('string','oldString'); // 199 $res = $redis->getSet('string','string3'); // oldString
  • randomKey()函數
    * 說明:隨機返回一個key
    * 參數: 無
    * 返回值: 從數據庫中隨機取出一個key並返回
    * php $key = $redis->randomKey(); /* key : string */ $ret = $redis->get($key); /* string的值爲: string3 */
  • move(key,dbIndex)函數
    * 說明:將key及其值移動到數據庫dbIndex中
    * 參數:key(要移動的key),dbIndex(目標數據庫的索引值)
    * 返回值:如果移動成功則返回true,失敗返回false
    * 注意:移動之後原數據庫中該key就會消失
    * php $ret = $redis->move('string',1); /* true */ $r2 = $redis->select(1); /* true */ $res = $redis->get('string'); /* string的值:select1 */
  • rename(srcKey,dstKey), renameKey(srcKey,dstKey)函數
    * 說明:將key:srcKey重命名爲dstKey;兩個函數作用及參數都是相同的
    * 參數: srcKey(原鍵名),dstKey(目標鍵名)
    * 返回值:重命名成功則返回true,失敗返回false
    * php $ret = $redis->rename('string','dstString'); /* true */ $res = $redis->get('dstString'); /* select1 */ $res1 = $redis->get('string'); /* false */
  • renameNx(srcKey,dstKey)函數
    * 說明:和rename(),renameKey()函數是一樣的,區別在於:如果dstKey存在,則不會用dstKey代替srcKey
  • expire(key,ttl), setTimeout(key,ttl), pexpire(key,pttl)
    * 說明:爲key的值設置生存時間,expire和setTimeout以s爲單位,pexpire以ms爲單位
    * 參數:key,ttl(生存時間s),pttl(生存時間ms) 整型數據
    * 返回值:設置成功返回true,失敗返回false
    * php $redis->set('string','expire'); $redis->expire('string',10); var_dump($redis->get('string')); /* expire */ sleep(12); var_dump($redis->get('string')); /* false */
  • expireAt(key,timestamp), pexpireAt(key,timestamp)函數
    * 說明:爲key的值設置生存時間,該生存時間是個時間戳
    * 參數:key,timestamp(時間戳形式的生存時間),pexpireAt需要的是毫秒數
    * 返回值:設置成功返回true,失敗則返回false
    * php $redis->set('string','expire'); $time = time(); $redis->expireAt('string',10+$time); var_dump($redis->get('string')); /* expire */ sleep(12); var_dump($redis->get('string')); /* false */
  • keys(string), getKeys(string)函數
    * 說明:返回滿足string條件的key,兩者的作用是一樣的
    * 參數:string(正則表達式寫成的匹配條件)
    * 返回值:有獲取到滿足匹配條件的key組成的數組(索引數組)
    * php $keyArr = $redis->keys('string*'); var_dump($keyArr); /* array(4) { [0]=> string(7) "string1" [1]=> string(7) "string2" [2]=> string(7) "string3" [3]=> string(7) "string4" } */
  • scan()函數
    * 說明:暫不做解釋
  • object(retrieve,key)函數
    * 說明:獲取一個key的各個方面的信息
    * 參數: retrieve(encoding:編碼方式;refcount:有多少個key的值域此key的值相同;idletime:剩餘生存時間)
    * 返回值:如果key不存在則返回false,其他的根據參數的類型返回相應的值
  • type(key)函數
    * 說明:返回key的值得數據類型
    * 參數: key
    * 返回值:返回key值得類型,包括string,set,list,zset,hash,other
    * php $redis->set('string','encoding'); $ret1 = $redis->type('string'); var_dump($ret1); // string
  • append(key,value1)函數
    * 說明: 將字符串value1追加到key的value值後面
    * 參數:key(鍵),value1(要追加的字符串)
    * 返回值:返回的是追加之後字符串的長度
    * PHP $key = 'string1'; $redis->set($key,'testyyy'); $ret = $redis->append($key,'value1'); echo $ret;
    * 輸出$ret:13
  • getRange(key,start,end)函數
    * 說明:返回字符串key的值中從start開始,end結束的一段子串
    * 參數:key(鍵),start(開始位置),end(結束位置)
    * 注意:start是從0開始的
    * 返回值:返回截取的子串
    * php $ret = $redis->getRange($key,0,3); echo $ret;
    * 輸出$ret: test
  • setRange(key,offset,value)函數
    * 說明:替換字符串的一部分
    * 參數:key(鍵),offset(偏移量),value(用來替換的值)
    * 注意:offset是從0開始的
    * 返回值:返回替換後的key的value值長度
    * php $ret = $redis->setRange($key,3,'kkk'); $str = $redis->get($key); echo $str; echo $ret;
    * 輸出$str = ‘teskkkyvalue’ ; $ret = 13;
  • strLen(key)函數
    * 說明: 返回key的值的長度
    * 參數:key(鍵)
    * 返回值:key的value值長度
    * php $ret = $redis->strlen($key); echo $ret;
    * 輸出$ret = 13;
  • getBit(key,offset)函數
    * 說明:對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。
    * 參數:key(鍵),offset(偏移量)
    * 注意:offset是從0開始的
    * 返回值:位值(0/1)
    * php $ret = $redis->getBit($key,6); echo $ret;
    * 輸出值$ret = 0;
  • setBit(key,offset,value)函數
    * 說明:對key所存儲的字符串值的指定offset位置設置位值(bit)
    * 參數:key,offset(偏移量),value(位值0/1)
    * 注意:offset是從0開始的
    * 返回值:設置前的位值(0/1)
    * php $ret = $redis->setBit($key,8,1); $res = $redis->getBit($key,8); echo $ret.'<br/>'; echo $res;
    * 輸出ret=0ret=0;res = 1;
  • bitOp(operation,ret_key,key1,key2)函數
    * 說明:對多個key進行位運算
    * 參數:operation(位操作:“AND”, “OR”, “NOT”, “XOR”),ret_key(位操作後返回的key),key1,key2(參與位運算的key)
    * 返回值:返回位運算之後的ret_key的value的長度
    * php $key = 'string1'; $key1 = 'string2'; $ret = $redis->bitOp('AND','ret_key',$key,$key1); $res = $redis->get('ret_key'); echo $ret.'<br/>'; echo $res;
    * 輸出$ret = 13; $res = “taijpp”(存在不可見字符,其長度是13)
  • bitCount(key)函數
    * 說明:獲取key的value值中bit爲1的個數
    * 參數:key
    * 返回值:key的value值中bit爲1的數量
    * php $key = 'string1'; $ret = $redis->bitCount($key); echo $ret.'<br/>';
    * 輸出 $ret=57;
  • sort(key options:array(key=>value,…))函數
    * 說明:對列表中的元素進行排序,設置等
    * 參數:key;options:array(key=>value,…),key,value的值包括以下幾項:‘by’ => ‘some_pattern_’,‘limit’ => array(0, 1),‘get’ => 'some_other_pattern_’ or an array of patterns,‘sort’ => ‘asc’ or ‘desc’,‘alpha’ => TRUE,‘store’ => ‘external-key’
    * 返回值:一個數組;或者被options的條件使用過的元素的個數
    * php $redis->delete('s'); $redis->sAdd('s', 5); $redis->sAdd('s', 4); $redis->sAdd('s', 2); $redis->sAdd('s', 1); $redis->sAdd('s', 3);
    php var_dump($redis->sort('s')); // 1,2,3,4,5
    php var_dump($redis->sort('s', array('sort' => 'desc'))); // 5,4,3,2,1
    php var_dump($redis->sort('s', array('sort' => 'desc', 'store' => 'out'))); // (int)5
  • ttl(key),pttl(key)函數
    * 返回給定key的value的生存時間;ttl()以秒爲單位,pttl()以毫秒爲單位
    * 參數:key
    * 返回值:如果ttl存在,則返回ttl剩餘的時間。如果不存在ttl,則返回“-1”;如果key不存在,則返回“-2”;
    * php $redis->setex($key,'60','ttlTest'); $ret = $redis->ttl($key); echo $ret.'<br/>'; // 輸出:45,60秒之後返回“-2”
    * php $key = 'string2'; $redis->set($key,'string2'); $ret = $redis->ttl($key); echo $ret.'<br/>'; // 如果不設置過期時間,則返回“-1”
  • persist(key)函數
    * 說明:將key上面的過期時間去掉
    * 參數:key
    * 返回值:如果過期時間被移除,則返回true;key不存在或者不存在過期時間返回false;
    * php $key = 'string1'; $redis->setex($key,'60','ttlTest'); $ret = $redis->persist($key); var_dump($ret); // 返回 bool(true)
    * php $key = 'string1'; $ret = $redis->persist($key); var_dump($ret); // 60s過後,返回 bool(false)
  • mSet(array()),mSetNx(array())函數
    * 說明:一次性爲多個key賦值
    * 參數:array(key1=>value1,key2=>value2,…)
    * 返回值:mSetNx當爲所有key賦值成功,所有key在原來的數據表中都不存在,則返回true;
    * php $key = 'string1'; $ret=$redis->msetnx(array($key=>'value','string3'=>'value3')) var_dump($ret); //由於string1已經存在,則$ret = false;
    * php $key = 'string1'; $res = $redis->msetnx(array('string4'=>'value4','string3'=>'value3')); var_dump($res); //由於string3,string4都不存在,則$res = true;
    * php $key = 'string1'; $ret = $redis->mset(array($key=>'value','string3'=>'value3')); var_dump($ret); //所有鍵如果已經存在值,則會重新賦值,賦值成功則返回:true
  • dump(key)函數
    * 說明:將key的值從redis數據庫中取出,而後通過restore命令寫入到redis數據庫中,這些數據以二進制的方式存儲在redis數據庫中
    * 參數: key
    * 返回值:編碼之後的key的value值;如果key不存在則返回false;
    * php $key = 'string1'; $redis->set($key,'testoop'); $ret = $redis->dump($key); var_dump($ret); // 返回:"testoop�2l��T/l";
  • restore(key,ttl,value)函數
    * 說明:將dump()獲取的數據轉儲到key中
    * 參數:key,ttl(key的生存時間),value(爲key賦值value)
    * 返回值:如果轉儲成功則返回true,失敗返回false;
    * 注意:在restore()函數中的key是value值,value爲dump()取出的值,二者相同則爲true,如下面的實例:
    * php $key = 'string1'; $redis->set($key,'testoop1'); $value = $redis->dump($key); $ret = $redis->restore('testoop1',600,$value); var_dump($ret); //注意restore()中的key,如果成功爲true,失敗爲false;
  • migrate()函數:暫不介紹
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章