轉載-redis全操作

Redis::__construct
描述:
創建一個Redis客戶端
範例:
$redis = new Redis();
connect, open
描述:
實例連接到一個Redis.
參數:host: string        port: int
返回值:BOOL 成功返回:TRUE;失敗返回:FALSE
範例:
$redis->connect('127.0.0.1′, 6379);
get
描述:
獲取有關指定鍵的值
參數:key
返回值:string或BOLL 如果鍵不存在,則返回 FALSE。否則,與此相關的關鍵值返回。
範例:
$redis->get('key');
set
描述:
設置關鍵值參數
參數:Key Value
返回值:BOOL
範例:
$redis->set('key', 'value')
setnx
描述:
如果在數據庫中不存在該鍵,設置關鍵值參數
參數:key value
返回值:BOOL
範例:
$this->redis->setnx('key', 'value');
$this->redis->setnx('key', 'value');
delete
描述:
刪除指定的鍵
參數:一個鍵,或不確定數目的參數,每一個關鍵的數組:key1 key2 key3 … keyN
返回值:刪除的項數
範例:
$redis->set('key1′, 'val1′);
$redis->set('key2′, 'val2′);
$redis->set('key3′, 'val3′);
$redis->set('key4′, 'val4′);
$redis->delete('key1′, 'key2′);
$redis->delete(array('key3′, 'key4′));
exists
描述:
驗證指定的鍵是否存在
參數key
返回值:Bool
範例:
$this->set('key', 'value');
$this->exists('key');
$this->exists('NonExistingKey');
incr
描述:
數字遞增存儲鍵值鍵.如果第二個參數被填滿,它將被用來作爲整數值遞增
Increment the number stored at key by one. If the second argument is filled, it will be used as the integer value of the increment.
參數:key value:將被添加到鍵的值
返回值:INT the new value
範例:
$redis->incr('key1′);
$redis->incr('key1′);
$redis->incr('key1′);
$redis->incr('key1′);
decr
描述:
數字遞減存儲鍵值。如果第二個參數被填滿,它將被用來作爲整數值遞減
Decrement the number stored at key by one. If the second argument is filled, it will be used as the integer value of the decrement.
參數:key value:將被添加到鍵的值
返回值:INT the new value
範例:
$redis->decr('key1′);
$redis->decr('key1′);
$redis->decr('key1′);
getMultiple
描述:
取得所有指定鍵的值。如果一個或多個鍵不存在,該數組中該鍵的值爲假
參數:其中包含鍵值的列表數組
返回值:返回包含所有鍵的值的數組
範例:
$redis->set('key1′, 'value1′);
$redis->set('key2′, 'value2′);
$redis->set('key3′, 'value3′);
$redis->getMultiple(array('key1′, 'key2′, 'key3′));
rPush
描述:
由列表頭部添加字符串值。如果不存在該鍵則創建該列表。如果該鍵存在,而且不是一個列表,返回FALSE。
參數:key,value
返回值:LONG The new length of the list in case of success, FALSE in case of Failure.
範例:
$redis->delete('key1′);
$redis->lPush('key1′, 'C'); // returns 1
$redis->lPush('key1′, 'B'); // returns 2
$redis->lPush('key1′, 'A'); // returns 3
lPop
描述:
返回和移除列表的最後一個元素
參數:key
返回值:STRING if command executed successfully BOOL FALSE in case of failure (empty list)
範例:
$redis->rPush('key1′, 'A');
$redis->rPush('key1′, 'B');
$redis->rPush('key1′, 'C');
$redis->lPop('key1′);
rPop
描述:
返回和移除列表的第一個元素
參數:key
返回值:STRING if command executed successfully BOOL FALSE in case of failure (empty list)
範例:
$redis->rPush('key1′, 'A');
$redis->rPush('key1′, 'B');
$redis->rPush('key1′, 'C');
$redis->rPop('key1′);
lSize
描述:
返回的列表的大小。如果列表不存在或爲空,該命令返回0。如果該鍵不是列表,該命令返回FALSE。
參數:Key
返回值:
LONG The size of the list identified by Key exists.
BOOL FALSE if the data type identified by Key is not list
範例:
$redis->rPush('key1′, 'A');
$redis->rPush('key1′, 'B');
$redis->rPush('key1′, 'C');
$redis->lSize('key1′);
$redis->rPop('key1′);
$redis->lSize('key1′);
lGet
描述:
返回指定鍵存儲在列表中指定的元素。 0第一個元素,1第二個… -1最後一個元素,-2的倒數第二…錯誤的索引或鍵不指向列表則返回FALSE。
參數:key index
返回值:
String the element at this index
Bool FALSE if the key identifies a non-string data type, or no value corresponds to this index in the list Key.
範例:
$redis->rPush('key1′, 'A');
$redis->rPush('key1′, 'B');
$redis->rPush('key1′, 'C');
$redis->lGet('key1′, 0);
$redis->lGet('key1′, -1);
$redis->lGet('key1′, 10);
lSet
描述:
爲列表指定的索引賦新的值,若不存在該索引返回false.
參數:key index value
返回值:BOOL TRUE if the new value is setted. FALSE if the index is out of range, or data type identified by key is not a list.
範例:
$redis->rPush('key1′, 'A');
$redis->rPush('key1′, 'B');
$redis->rPush('key1′, 'C');
$redis->lGet('key1′, 0);
$redis->lSet('key1′, 0, 'X');
$redis->lGet('key1′, 0);
lGetRange
描述:
返回在該區域中的指定鍵列表中開始到結束存儲的指定元素,lGetRange(key, start, end)。0第一個元素,1第二個元素… -1最後一個元素,-2的倒數第二…
參數:key start end
返回值:
Array containing the values in specified range.
範例:
$redis->rPush('key1′, 'A');
$redis->rPush('key1′, 'B');
$redis->rPush('key1′, 'C');
$redis->lGetRange('key1′, 0, -1);
lRemove
描述:
從列表中從頭部開始移除count個匹配的值。如果count爲零,所有匹配的元素都被刪除。如果count是負數,內容從尾部開始刪除。
參數:key count value
返回值:
LONG the number of elements to remove
BOOL FALSE if the value identified by key is not a list.
範例:
$redis->lPush('key1′, 'A');
$redis->lPush('key1′, 'B');
$redis->lPush('key1′, 'C');
$redis->lPush('key1′, 'A');
$redis->lPush('key1′, 'A');
$redis->lGetRange('key1′, 0, -1);
$redis->lRemove('key1′, 'A', 2);
$redis->lGetRange('key1′, 0, -1);
sAdd
描述:
爲一個Key添加一個值。如果這個值已經在這個Key中,則返回FALSE。
參數:key value
返回值:
BOOL TRUE if value didn't exist and was added successfully, FALSE if the value is already present.
範例:
$redis->sAdd('key1′ , 'set1′);
$redis->sAdd('key1′ , 'set2′);
$redis->sAdd('key1′ , 'set2′);
sRemove
描述:
刪除Key中指定的value值
參數:key member
返回值:BOOL TRUE if the member was present in the set, FALSE if it didn't.
範例:
$redis->sAdd('key1′ , 'set1′);
$redis->sAdd('key1′ , 'set2′);
$redis->sAdd('key1′ , 'set3′);
$redis->sRemove('key1′, 'set2′);
sMove
描述:
將Key1中的value移動到Key2中
參數:srcKey dstKey member
返 回值:BOOL If the operation is successful, return TRUE. If the srcKey and/or dstKey didn't exist, and/or the member didn't exist in srcKey, FALSE is returned.
範例:
$redis->sAdd('key1′ , 'set11′);
$redis->sAdd('key1′ , 'set12′);
$redis->sAdd('key1′ , 'set13′);
$redis->sAdd('key2′ , 'set21′);
$redis->sAdd('key2′ , 'set22′);
$redis->sMove('key1′, 'key2′, 'set13′);
sContains
描述:
檢查集合中是否存在指定的值。
參數:key value
返回值:BOOL TRUE if value is a member of the set at key key, FALSE otherwise.
範例:
$redis->sAdd('key1′ , 'set1′);
$redis->sAdd('key1′ , 'set2′);
$redis->sAdd('key1′ , 'set3′);
$redis->sContains('key1′, 'set1′);
$redis->sContains('key1′, 'setX');
sSize
描述:
返回集合中存儲值的數量
參數:key
返回值:LONG the cardinality of the set identified by key, 0 if the set doesn't exist.
範例:
$redis->sAdd('key1′ , 'set1′);
$redis->sAdd('key1′ , 'set2′);
$redis->sAdd('key1′ , 'set3′);
$redis->sSize('key1′);
$redis->sSize('keyX');
sPop
描述:
隨機移除並返回key中的一個值
參數:key
返回值:String "popped" value        Bool FALSE if set identified by key is empty or doesn't exist.
範例:
$redis->sAdd('key1′ , 'set1′);
$redis->sAdd('key1′ , 'set2′);
$redis->sAdd('key1′ , 'set3′);
$redis->sPop('key1′);
$redis->sPop('key1′);
sInter
描述:
返回一個所有指定鍵的交集。如果只指定一個鍵,那麼這個命令生成這個集合的成員。如果不存在某個鍵,則返回FALSE。
參數:key1, key2, keyN: keys identifying the different sets on which we will apply the intersection.
返 回值:Array, contain the result of the intersection between those keys. If the intersection beteen the different sets is empty, the return value will be empty array.
範例:
$redis->sAdd('key1′, 'val1′);
$redis->sAdd('key1′, 'val2′);
$redis->sAdd('key1′, 'val3′);
$redis->sAdd('key1′, 'val4′);
$redis->sAdd('key2′, 'val3′);
$redis->sAdd('key2′, 'val4′);
$redis->sAdd('key3′, 'val3′);
$redis->sAdd('key3′, 'val4′);
var_dump($redis->sInter('key1′, 'key2′, 'key3′));
輸出:
array(2) {[0]=>string(4) "val4″ [1]=>string(4) "val3″}
sInterStore
描述:
執行sInter命令並把結果儲存到新建的變量中。
參數:
Key: dstkey, the key to store the diff into.
Keys: key1, key2… keyN. key1..keyN are intersected as in sInter.
返回值:INTEGER: The cardinality of the resulting set, or FALSE in case of a missing key.
範例:
$redis->sAdd('key1′, 'val1′);
$redis->sAdd('key1′, 'val2′);
$redis->sAdd('key1′, 'val3′);
$redis->sAdd('key1′, 'val4′);
$redis->sAdd('key2′, 'val3′);
$redis->sAdd('key2′, 'val4′);
$redis->sAdd('key3′, 'val3′);
$redis->sAdd('key3′, 'val4′);
var_dump($redis->sInterStore('output', 'key1′, 'key2′, 'key3′));
var_dump($redis->sMembers('output'));
輸出:
int(2)
array(2) {
[0]=>
string(4) "val4″
[1]=>
string(4) "val3″
}
sUnion
描述:
返回一個所有指定鍵的並集
參數:
Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis.
返回值:
Array of strings: The union of all these sets.
範例:
$redis->delete('s0′, 's1′, 's2′);
$redis->sAdd('s0′, '1′);
$redis->sAdd('s0′, '2′);
$redis->sAdd('s1′, '3′);
$redis->sAdd('s1′, '1′);
$redis->sAdd('s2′, '3′);
$redis->sAdd('s2′, '4′);
var_dump($redis->sUnion('s0′, 's1′, 's2′));
輸出:
array(4) {
[0]=>
string(1) "3″
[1]=>
string(1) "4″
[2]=>
string(1) "1″
[3]=>
string(1) "2″
}
sUnionStore
描述:
執行sUnion命令並把結果儲存到新建的變量中。
參數:
Key: dstkey, the key to store the diff into.
Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis.
返回值:
INTEGER: The cardinality of the resulting set, or FALSE in case of a missing key.
範例:
$redis->delete('s0′, 's1′, 's2′);
$redis->sAdd('s0′, '1′);
$redis->sAdd('s0′, '2′);
$redis->sAdd('s1′, '3′);
$redis->sAdd('s1′, '1′);
$redis->sAdd('s2′, '3′);
$redis->sAdd('s2′, '4′);
var_dump($redis->sUnionStore('dst', 's0′, 's1′, 's2′));
var_dump($redis->sMembers('dst'));
輸出:
int(4)
array(4) {
[0]=>
string(1) "3″
[1]=>
string(1) "4″
[2]=>
string(1) "1″
[3]=>
string(1) "2″
}
sDiff
描述:
返回第一個集合中存在並在其他所有集合中不存在的結果
參數:Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis.
返回值:Array of strings: The difference of the first set will all the others.
範例:
$redis->delete('s0′, 's1′, 's2′);
$redis->sAdd('s0′, '1′);
$redis->sAdd('s0′, '2′);
$redis->sAdd('s0′, '3′);
$redis->sAdd('s0′, '4′);
$redis->sAdd('s1′, '1′);
$redis->sAdd('s2′, '3′);
var_dump($redis->sDiff('s0′, 's1′, 's2′));
array(2) {
[0]=>
string(1) "4″
[1]=>
string(1) "2″
}
sDiffStore
描述:
執行sDiff命令並把結果儲存到新建的變量中。
參數:
Key: dstkey, the key to store the diff into.
Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis
返回值:INTEGER: The cardinality of the resulting set, or FALSE in case of a missing key.
範例:
$redis->delete('s0′, 's1′, 's2′);
$redis->sAdd('s0′, '1′);
$redis->sAdd('s0′, '2′);
$redis->sAdd('s0′, '3′);
$redis->sAdd('s0′, '4′);
$redis->sAdd('s1′, '1′);
$redis->sAdd('s2′, '3′);
var_dump($redis->sDiffStore('dst', 's0′, 's1′, 's2′));
var_dump($redis->sMembers('dst'));
Return value: the number of elements of s0 that are neither in s1 nor in s2.
int(2)
array(2) {
[0]=>
string(1) "4″
[1]=>
string(1) "2″
}
sMembers, sGetMembers
描述:
返回集合的內容
參數:Key: key
返回值:An array of elements, the contents of the set.
範例:
$redis->delete('s');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'b');
$redis->sAdd('s', 'a');
$redis->sAdd('s', 'c');
var_dump($redis->sMembers('s'));
Output:
array(3) {
[0]=>
string(1) "c"
[1]=>
string(1) "a"
[2]=>
string(1) "b"
}
getSet
描述:
返回當前的Key的值,並修改Key爲新的值。
參數:
Key: key
STRING: value
返回值:
A string, the previous value located at this key.
範例:
$redis->set('x', '42′);
$exValue = $redis->getSet('x', 'lol'); // return '42′, replaces x by 'lol'
$newValue = $redis->get('x')' // return 'lol'
Redis根本是使用內存存儲,持久化的關鍵是這三條指令:SAVE BGSAVE LASTSAVE …
當接收到SAVE指令的時候,Redis就會dump數據到一個文件裏面。
值得一說的是它的獨家功能:存儲列表和集合,這是它與mc之流相比更有競爭力的地方。
不介紹mc裏面已經有的東東,只列出特殊的:
TYPE key — 用來獲取某key的類型
KEYS pattern — 匹配所有符合模式的key,太淫蕩了,比如KEYS * 就列出所有的key了,當然,複雜度O(n)
RANDOMKEY - 返回隨機的一個keyRENAME oldkey newkey — key也可以改名
列表操作,精華
RPUSH key string — 將某個值加入到一個key列表頭部
LPUSH key string — 將某個值加入到一個key列表末尾
LLEN key — 列表長度
LRANGE key start end — 返回列表中某個範圍的值,相當於mysql裏面的分頁查詢那樣
LTRIM key start end — 只保留列表中某個範圍的值
LINDEX key index — 獲取列表*****定索引號的值,要注意是O(n)複雜度
LSET key index value — 設置列表中某個位置的值
LPOP key
RPOP key — 和上面的LPOP一樣,就是類似棧或隊列的那種取頭取尾指令,可以當成消息隊列來使用了
集合操作
SADD key member — 增加元素
SREM key member — 刪除元素
SCARD key — 返回集合大小
SISMEMBER key member — 判斷某個值是否在集合中
SINTER key1 key2 ... keyN — 獲取多個集合的交集元素
SMEMBERS key — 列出集合的所有元素
以下轉自 http://bbs.linuxtone.org/thread-7136-1-1.html
操作hash類型的值:
Command                Parameters             Description 
HSET                          key field value         Set the hash field to the specified value. Creates the hash if needed. 
HGET                          key field                 Retrieve the value of the specified hash field. 
HMGET                       key field1 ... fieldN   Get the hash values associated to the specified fields. 
HMSET                       key field1 value1 ... fieldN valueN     Set the hash fields to their respective values. 
HINCRBY                    key field integer       Increment the integer value of the hash at key on field with integer. 
HEXISTS                    key field                 Test for existence of a specified field in a hash 
HDEL                         key field                 Remove the specified field from a hash 
HLEN                         key                        Return the number of items in a hash. 
HKEYS                       key                        Return all the fields in a hash. 
HVALS                       key                       Return all the values in a hash. 
HGETALL                   key                        Return all the fields and associated values in a hash.
HSET操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hset h_uid uid001 'Falcon.C'
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hset h_uid uid002 'NetSeek' 
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hset h_uid uid003 'LinuxTone'
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hkeys h_uid
1. "uid001"
2. "uid002"
3. "uid003"
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hvals h_uid
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
複製代碼
表示給指定的hash字段設置值,如果不存在則創建
HGET操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hget h_uid uid001
"Falcon.C"
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hget h_uid uid002
"NetSeek"
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hget h_uid uid003
"LinuxTone"
複製代碼
表示獲取指定hash字段的值
HMGET操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hmget h_uid uid001 uid002 uid003
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
複製代碼
表示批量獲取指定hash字段的值
HMSET操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hmset h_uid uid004 'linuxtone.org' uid005 'qq.com'
OK
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hkeys h_uid
1. "uid001"
2. "uid002"
3. "uid003"
4. "uid004"
5. "uid005"
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hvals h_uid
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
4. "linuxtone.org"
5. "qq.com"
複製代碼
表示批量設置hash字段的值
HINCRBY操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hincrby h_uid_incr uid 1
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hincrby h_uid_incr uid 1
(integer) 2
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hincrby h_uid_incr uid 3
(integer) 5
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hvals h_uid_incr
1. "5"
複製代碼
表示對指定的hash字段的值進行遞增操作
HEXISTS操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hexists h_uid uid001
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hexists h_uid uid0011
(integer) 0
複製代碼
表示判斷指定的hash字段是否存在
HDEL操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hset h_uid uid 1
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hvals h_uid     
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
4. "linuxtone.org"
5. "qq.com"
6. "1"
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hdel h_uid uid
(integer) 1
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hvals h_uid   
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
4. "linuxtone.org"
5. "qq.com"
複製代碼
表示通過指定的hash字段刪除hash值
HLEN操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hlen h_uid
(integer) 5
複製代碼
表示返回hash長度
LKEYS操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hkeys h_uid
1. "uid001"
2. "uid002"
3. "uid003"
4. "uid004"
5. "uid005"
複製代碼
表示返回指定hash的所有key
HVALS操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hvals h_uid
1. "Falcon.C"
2. "NetSeek"
3. "LinuxTone"
4. "linuxtone.org"
5. "qq.com"
複製代碼
表示返回指定hash的所有value
HGETALL操作
[[email protected]  ~/redis-2.0.0]$ ./redis-cli hgetall h_uid
1. "uid001"
2. "Falcon.C"
3. "uid002"
4. "NetSeek"
5. "uid003"
6. "LinuxTone"
7. "uid004"
8. "linuxtone.org"
9. "uid005"
10. "qq.com"
複製代碼
表示返回指定hash的所有字段及關聯的值
公共操作命令部分:(不受數據類型的影響)
Command         Parameters         Description 
SORT            key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA Sort a 
Set or a List accordingly to the specified parameters
數據持久化控制命令
SAVE             -                 Synchronously save the DB on disk
BGSAVE             -                 Asynchronously save the DB on disk 
LASTSAVE         -                 Return the UNIX time stamp of the last successfully saving 
          of the dataset on disk 
SHUTDOWN         -                 Synchronously save the DB on disk, then shutdown the 
          server 
BGREWRITEAOF     -                 Rewrite the append only file in background when it gets 
          too big
遠程服務器控制命令
INFO            -                 Provide information and statistics about the server 
MONITOR         -                 Dump all the received requests in real time 
SLAVEOF         -                 Change the replication settings 
CONFIG             -                 Configure a Redis server at runtime 
以下轉自 http://www.madcn.net/?p=693
連接控制
QUIT 關閉連接
AUTH (僅限啓用時)簡單的密碼驗證
適合全體類型的命令
EXISTS key 判斷一個鍵是否存在;存在返回 1;否則返回0;
DEL key 刪除某個key,或是一系列key;DEL key1 key2 key3 key4
TYPE key 返回某個key元素的數據類型 ( none:不存在,string:字符,list,set,zset,hash)
KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo開頭的keys)
RANDOMKEY 隨機獲得一個已經存在的key,如果當前數據庫爲空,則返回空字符串
RENAME oldname newname更改key的名字,新鍵如果存在將被覆蓋
RENAMENX oldname newname 更改key的名字,如果名字存在則更改失敗
DBSIZE返回當前數據庫的key的總數
EXPIRE設置某個key的過期時間(秒),(EXPIRE bruce 1000:設置bruce這個key1000秒後系統自動刪除)注意:如果在還沒有過期的時候,對值進行了改變,那麼那個值會被清除。
TTL查找某個key還有多長時間過期,返回時間秒
SELECT index 選擇數據庫
MOVE key dbindex 將指定鍵從當前數據庫移到目標數據庫 dbindex。成功返回 1;否則返回0(源數據庫不存在key或目標數據庫已存在同名key);
FLUSHDB 清空當前數據庫中的所有鍵
FLUSHALL 清空所有數據庫中的所有鍵
處理字符串的命令
SET key value 給一個鍵設置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key爲burce,字符串長度爲10的一個字符串paitoubing到數據庫),data最大不可超過1G。
GET key獲取某個key 的value值。如key不存在,則返回字符串"nil";如key的值不爲字符串類型,則返回一個錯誤。
GETSET key value可以理解成獲得的key的值然後SET這個值,更加方便的操作 (SET bruce 10 paitoubing,這個時候需要修改bruce變成1234567890並獲取這個以前的數據paitoubing,GETSET bruce 10 1234567890)
MGET key1 key2 … keyN 一次性返回多個鍵的值
SETNX key value SETNX與SET的區別是SET可以創建與更新key的value,而SETNX是如果key不存在,則創建key與value數據
MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設置多個鍵和值
MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設置多個鍵和值(目標鍵不存在情況下,如果有一個以上的key已存在,則失敗)
INCR key 自增鍵值
INCRBY key integer 令鍵值自增指定數值
DECR key 自減鍵值
DECRBY key integer 令鍵值自減指定數值
處理 lists 的命令
RPUSH key value 從 List 尾部添加一個元素(如序列不存在,則先創建,如已存在同名Key而非序列,則返回錯誤)
LPUSH key value 從 List 頭部添加一個元素
LLEN key 返回一個 List 的長度
LRANGE key start end從自定的範圍內返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)
LTRIM key start end修剪某個範圍之外的數據 (LTRIM testlist 0 2;保留0 1 2元素,其餘的刪除)
LINDEX key index返回某個位置的序列值(LINDEX testlist 0;返回序列testlist位置爲0的元素)
LSET key index value更新某個位置元素的值
LREM key count value 從 List 的頭部(count正數)或尾部(count負數)刪除一定數量(count)匹配value的元素,返回刪除的元素數量。
LPOP key 彈出 List 的第一個元素
RPOP key 彈出 List 的最後一個元素
RPOPLPUSH srckey dstkey 彈出 _srckey_ 中最後一個元素並將其壓入 _dstkey_頭部,key不存在或序列爲空則返回"nil"
處理集合(sets)的命令(有索引無序序列)
SADD key member增加元素到SETS序列,如果元素(membe)不存在則添加成功 1,否則失敗 0;(SADD testlist 3 \n one)
SREM key member 刪除SETS序列的某個元素,如果元素不存在則失敗0,否則成功 1(SREM testlist 3 \N one)
SPOP key 從集合中隨機彈出一個成員
SMOVE srckey dstkey member 把一個SETS序列的某個元素移動到另外一個SETS序列 (SMOVE testlist test 3\n two;從序列testlist移動元素two到 test中,testlist中將不存在two元素)
SCARD key 統計某個SETS的序列的元素數量
SISMEMBER key member 獲知指定成員是否存在於集合中
SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集
SINTERSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 中的交集存入 dstkey
SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的並集
SUNIONSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 的並集存入 dstkey
SDIFF key1 key2 … keyN 依據 key2, …, keyN 求 key1 的差集。官方例子:
key1 = x,a,b,c
key2 = c
key3 = a,d
SDIFF key1,key2,key3 => x,b
SDIFFSTORE dstkey key1 key2 … keyN 依據 key2, …, keyN 求 key1 的差集並存入 dstkey
SMEMBERS key 返回某個序列的所有元素
SRANDMEMBER key 隨機返回某個序列的元素
處理有序集合(sorted sets)的命令 (zsets)
ZADD key score member 添加指定成員到有序集合中,如果目標存在則更新score(分值,排序用)
ZREM key member 從有序集合刪除指定成員
ZINCRBY key increment member 如果成員存在則將其增加_increment_,否則將設置一個score爲_increment_的成員
ZRANGE key start end 返回升序排序後的指定範圍的成員
ZREVRANGE key start end 返回降序排序後的指定範圍的成員
ZRANGEBYSCORE key min max 返回所有符合score >= min和score <= max的成員 ZCARD key 返回有序集合的元素數量 ZSCORE key element 返回指定成員的SCORE值 ZREMRANGEBYSCORE key min max 刪除符合 score >= min 和 score <= max 條件的所有成員
排序(List, Set, Sorted Set)
SORT key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或List
SORT mylist
默認升序 ASC
SORT mylist DESC
SORT mylist LIMIT 0 10
從序號0開始,取10條
SORT mylist LIMIT 0 10 ALPHA DESC
按首字符排序
SORT mylist BY weight_*
SORT mylist BY weight_* GET object_*
SORT mylist BY weight_* GET object_* GET #
SORT mylist BY weight_* STORE resultkey
將返回的結果存放於resultkey序列(List)
持久控制
SAVE 同步保存數據到磁盤
BGSAVE 異步保存數據到磁盤
LASTSAVE 返回上次成功保存到磁盤的Unix時間戳
SHUTDOWN 同步保存到服務器並關閉 Redis 服務器(SAVE+QUIT)
BGREWRITEAOF 當日志文件過長時重寫日誌文件
遠程控制命令
INFO 提供服務器的信息和統計信息
MONITOR 實時輸出所有收到的請求
SLAVEOF 修改複製選項
redis目前提供四種數據類型:string,list,set及zset(sorted set)。
* string是最簡單的類型,你可以理解成與Memcached一模一個的類型,一個key對應一個value,其上支持的操作與Memcached的操作類似。但它的功能更豐富。
* list是一個鏈表結構,主要功能是push、pop、獲取一個範圍的所有值等等。操作中key理解爲鏈表的名字。
* set是集合,和我們數學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交併差等操作。操作中key理解爲集合的名字。
* zset是set的一個升級版本,他在set的基礎上增加了一個順序屬性,這一屬性在添加修改元素的時候可以指定,每次指定後,zset會自動重新按新的值調整順序。可以理解了有兩列的mysql表,一列存value,一列存順序。操作中key理解爲zset的名字。
協議
redis目前只有基於TCP的文本協議,與memcache類似,有一些改進。
客戶端通常發送
命令 參數… 值字節數\r\n
值\r\n
服務端的返回,根據第一個字節,可以判斷:
- 錯誤信息
+ 普通文本信息
$ 變長字節數,$6表示CRLF之後有6個字節的字符
: 返回一個整數
* 返回組數,即*6表示CRLF之後將返回6組變長字符
注意事項:
Key不可包含空格或者回車符
Key不要過長或過短,應使其有意義,如"comment:1234:reply.to"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章