redis可以儲存5種基本的資料型別,主要包括:string、hash、list、set、sort set。
以下就對儲存的每種型別進行乙個總結,以及記錄他們基本的命令和各個命令之間的區別:
1)、string型別
1、set [設定key-value鍵值對]
> set name "john"
2、setnx [設定key-value鍵值對,nx代表not exist,表示在鍵不存在的情況下去設定,如果鍵存在返回0,否則返回1]
> set name "malibin"
ok> get name
"malibin"
> setnx name "xuminke"
(integer) 0
> setnx email [email protected]
(integer) 1
> get email
3、setex [設定key-value鍵值對,ex表示設定鍵的有效時間,當超過設定的時間該鍵失效]
> setex name 5 "malibin" [鍵name的有效時間為5秒,超過5秒鍵失效]
4、setrange [從某個鍵的值的某個位置開始替換]
> setnx email "[email protected]"
> setrange email 9 "gmail.com"
5、 mset [批量設定key-value鍵值對]
> mset key1 "test1" key2 "test2" key3 "test3" key4 "test4"
>get key1
"test1"
6、msetnx [同setnx,這裡需要注意的是如果有其中乙個鍵沒有設定成功,則所有的鍵都不會設定成功]
7、msetex [同setex]
8、getset [對乙個鍵設定新值返回久值]
>set name "old-value"
>get name
"old-value"
>getset name "new-value"
>get name
"new-value"
9、get [獲得某個鍵對應的值,跟set命令相對]
>set name "set commond"
>get name
"set commond"
10、mget [批量獲取]
>mset key1 "test1" key2 "test2" key3 "test3" key4 "test4"
>mget key1 key2 key3 key4
11、getrange [從某個鍵對應的值的某個位置開始獲取]
>set name "0123456789"
>getrange name 0 5 [返回第0-5之間的字元]
12、incr [對某個鍵值對進行遞增,自增1]
>set index 10
>incr index
1113、incrby [對某個鍵值對進行遞增,增加任意值]
>set index 10
>incrby index 5
1514、decr [跟incr相反,自減1]
>set index 10
>decr index
15、decrby [跟incrby相反,自減任意值]
>set index 10
>decrby 5
2)、hash型別
1、hset [設定hash]
>hset user:001 name "john"
2、hget [獲得hash的某個field的值]
>hget user:001 name
"john"
3、hsetnx [其作用類似於string型別的setnx]
>hsetnx user:001 name "john-new" [左邊的命令不會設定成功,原因是name屬性已經存在]
4、hmset [批量設定]
>hmset user:002 name "lyce" age 20 *** meal
5、hmget [批量取得]
>hmget user:002 name age ***
6、hincrby [對hash的某個欄位自增]
>hincrby user:002 age 5
>hget user:002 age
257、hexists [判斷hash中的每個字段是否存在]
>hexists user:001 age
0 [user:001中並沒有age這個屬性]
>hexists user:001 name
18、hlen [返回hash的長度]
>hlen user:002
9、hdel [刪除hash中的每個字段]
>hdel user:002 age [刪除hash user:002中的age欄位]
10、hkeys [獲得所有的key值]
>hkeys user:002
11、kvals [獲得所有的key對應的value值]
>hvals user:002
12、hgetall [獲得hash中的key值和value值]
>hgetall user:002
3)、list型別
list型別是redis中的鍊錶,通過向鍊錶頭部和尾部插入資料或者刪除資料,即使在乙個鍊錶中已經有幾百萬條資料,該操作也可以在常量時間內完成,但是如果向鍊錶中間插入或者刪除元素,其效率不高。
1、lpush [項鍊表的頭部插入元素]
>lpush list1 "one"
2、lpushx [只有當鍊表存在時才會在鍊錶的頭部插入元素]
>lpushx list2 "one" [list2這個鏈表現在根本不存在所以不會有任何操作]
3、lrange key start stop [獲得鍊錶從start到stop之間的元素]
>lpush list1 "two"
>lpush list1 "three"
>lpush list1 0 -1 [從頭到尾返回list1中的所有元素]
4、lpop [彈出鍊錶中的頭部元素]
>lpop list1
"three"
5、llen [返回鍊錶的長度]
>llen list1
26、lrem list count value [表示從list鍊錶中刪除count個value元素]
>lpush list3 "one"
>lpush list3 "one"
>lpush list3 "one"
>lpush list3 "two"
>lpush list3 "three"
>lrem list3 3 "one"
[如果count>max-length就刪除max-length個元素,如果count>max-length,就刪除count個元素]。
7、lset list index value [設定鍊錶某個位置的元素的值]
>lpush list4 "one"
>lpush list4 "one"
>lpush list4 "three"
>lset list4 1 "two"
8、lindex list index [返回請求的元素,如果請求的位置超出了鍊錶的長度,則返回nil]
>lpush list5 "one"
>lpush list5 "two"
>lpush list5 "three"
>lpush list5 "four"
>lpush list5 "five"
>lindex list5 3
"two"
9、ltrim list start stop [保留鍊錶中從start到stop之間的元素,刪除除此以外的所有元素,如果start>stop,會返回乙個空鍊錶,同時該list會被刪除,如果stop大於llen,會保留從start開始到鍊錶尾部的所有元素]
>lpush list6 "one"
>lpush list6 "two"
>lpush list6 "three"
>lpush list6 "four"
>lpush list6 "five"
>ltrim list6 0 2
>lrange list6 0 -1
"five" "four" "three"
10、rpush [從鍊錶的尾部插入]
11、rpushx [類似於lpushx]
12、rpop [彈出鍊錶的尾部元素]
13、rpoplpush source destination [從第一source的尾部刪除乙個元素插入到destination的頭部]
>lpush source "two"
>lpush source "one"
>lpush destination "one"
>rpoplpush source destination
>lrange destination 0 -1
"two" "one"
Redis 五種資料型別
一 前言 上篇部落格已經對redis的一些基本知識做了一些簡介,這篇部落格,將簡單介紹一些redis的五種資料型別。分別為string 字串 hash 雜湊 list 鍊錶 set 集合 zset 有序集合 對這些型別可以執行很多原子性的操作 比如向乙個string型別的value後面追加字串 向l...
Redis 五種資料型別
目錄 redis共有strings hashs lists sets sorted sets五種資料型別,可以說已經比較豐富了。下面只對這幾種資料型別的資料結構與用途做簡要介紹。至於每種資料型別的操作api,這裡只簡單一提,不再一一詳細介紹,有需要的使用者可以google即可。string是最簡單的...
Redis 五種資料型別
redis支援五種資料型別 string 字串 hash 雜湊 list 列表 set 集合 及zset sorted set 有序集合 資料型別一 字串 0.1 6379 set name hubotao2 ok127.0 0.1 6379 get name hubotao2 資料型別二 hash...