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;
* 輸出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 = “tai
jpp”(存在不可見字符,其長度是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()函數:暫不介紹