一、數據類型之列表 列表簡介 Redis的list是一個字元隊列,先進後出,一個key可以有多個值 列表操作 lpush key values [value ...] 將一個或多個值value插入到列表key的表頭,Key不存在,則創建key 127.0.0.1:6379> FLUSHALL OK ...
一、數據類型之列表
列表簡介
Redis的list是一個字元隊列,先進後出,一個key可以有多個值
列表操作
lpush key values [value ...]
將一個或多個值value插入到列表key的表頭,Key不存在,則創建key
127.0.0.1:6379> FLUSHALL
OK
# lpush命令,創建變數student,類型為列表類型,值為bob,tom,lucy,lili
127.0.0.1:6379> LPUSH student bob tom lucy lili
(integer) 4
127.0.0.1:6379> type student
list
# 將A和B存儲到列表student的表頭
127.0.0.1:6379> LPUSH student A B
(integer) 6
# lrange key start stop 從列表中取值
# 從開始位置讀取key的值到stop結束
# 取出列表中的所有值,0 指第一個值,-1 指最後一個值
127.0.0.1:6379> LRANGE student 0 -1
1) "B"
2) "A"
3) "lili"
4) "lucy"
5) "tom"
6) "bob"
# 取出列表中的值,0 指第一個值,1 指第二個值
127.0.0.1:6379> LRANGE student 0 1
1) "B"
2) "A"
# 從後往前取出列表中的值,-2 指倒數第二個值,-1 指倒數第一個值
127.0.0.1:6379> LRANGE student -2 -1
1) "tom"
2) "bob"
# 從後往前取出列表中的值,2 指第三個值,4 指第五個值
127.0.0.1:6379> LRANGE student 2 4
1) "lili"
2) "lucy"
3) "tom"
# lpop key移除並返回列表頭元素數據,key不存在則返回nil
# 取出列表中的所有值,0 指第一個值,-1 指最後一個值
127.0.0.1:6379> LRANGE student 0 -1
1) "B"
2) "A"
3) "lili"
4) "lucy"
5) "tom"
6) "bob"
# 刪除列表第一個值,返回被刪除的值
127.0.0.1:6379> LPOP student
"B"
127.0.0.1:6379> LRANGE student 0 -1
1) "A"
2) "lili"
3) "lucy"
4) "tom"
5) "bob"
127.0.0.1:6379> LPOP student
"A"
127.0.0.1:6379> LRANGE student 0 -1
1) "lili"
2) "lucy"
3) "tom"
4) "bob"
# llen key 返回列表key的長度
# 統計列表中值的數量
127.0.0.1:6379> TYPE student
list
127.0.0.1:6379> LLEN student
(integer) 4
# 取出列表中的所有值,0 第一個,-1 最後一個
127.0.0.1:6379> LRANGE student 0 -1
1) "lili"
2) "lucy"
3) "tom"
4) "bob"
# lindex key index 返回列表中第 index 個值
# lindex 輸出列表中的某一個值
# lindex命令,輸出列表student中的第一個值
127.0.0.1:6379> TYPE student
list
127.0.0.1:6379> LRANGE student 0 -1
1) "lili"
2) "lucy"
3) "tom"
4) "bob"
127.0.0.1:6379> LINDEX student 0
"lili"
# lindex命令,輸出列表student中的倒數第一個值
127.0.0.1:6379> LINDEX student -1
"bob"
# lindex命令,輸出列表student中的倒數第二個值
127.0.0.1:6379> LINDEX student -2
"tom"
# lset key index value 將key中index位置的值修改為value
# lset 修改列表中具體的某一個值
# 修改列表student的第一個值為 AAA
127.0.0.1:6379> LRANGE student 0 -1
1) "lili"
2) "lucy"
3) "tom"
4) "bob"
127.0.0.1:6379> LSET student 0 AAA
OK
127.0.0.1:6379> LRANGE student 0 -1
1) "AAA"
2) "lucy"
3) "tom"
4) "bob"
# 修改列表student的最後一個值為 CCC
127.0.0.1:6379> lset student -1 CCC
OK
127.0.0.1:6379> LRANGE student 0 -1
1) "AAA"
2) "lucy"
3) "tom"
4) "CCC"
# rpush 在列表的最後插入值
127.0.0.1:6379> LRANGE student 0 -1
1) "AAA"
2) "lucy"
3) "tom"
4) "CCC"
# 在列表student的最後插入值
127.0.0.1:6379> RPUSH student FFF ZZZ
(integer) 6
127.0.0.1:6379> LRANGE student 0 -1
1) "AAA"
2) "lucy"
3) "tom"
4) "CCC"
5) "FFF"
6) "ZZZ"
# lpush命令,在列表student的開頭插入值
127.0.0.1:6379> LPUSH student iii kkk
(integer) 8
127.0.0.1:6379> LRANGE student 0 -1
1) "kkk"
2) "iii"
3) "AAA"
4) "lucy"
5) "tom"
6) "CCC"
7) "FFF"
8) "ZZZ"
# rpop 每次都刪除列表最後的值
127.0.0.1:6379> LRANGE student 0 -1
1) "kkk"
2) "iii"
3) "AAA"
4) "lucy"
5) "tom"
6) "CCC"
7) "FFF"
8) "ZZZ"
127.0.0.1:6379> RPOP student
"ZZZ"
127.0.0.1:6379> LRANGE student 0 -1
1) "kkk"
2) "iii"
3) "AAA"
4) "lucy"
5) "tom"
6) "CCC"
7) "FFF"
# 刪除列表student的開頭的值,並返回被刪除的值
127.0.0.1:6379> LPOP student
"kkk"
127.0.0.1:6379> LRANGE student 0 -1
1) "iii"
2) "AAA"
3) "lucy"
4) "tom"
5) "CCC"
6) "FFF"
二、數據類型之hash
hash簡介
Redis hash
是一個string類型的 field(列) 和 value(值) 的映射表,一個key可對應多個field,一個field對應一個value,將一個對象存儲為 hash 類型,較於每個欄位都存儲成 string 類型更能節省記憶體
舉例說明,hash類型存儲數據比字元更節省空間
需要同時定義多個變數,存儲不同的信息 ,字元類型存儲書本的信息:
書名 xxxxxx
作者 xxxxxx
價格 xxxxxx
版本 xxxxxx
出版社 xxxxxx
只需定義一個變數,這個變數中可以存儲多個欄位,不同欄位存儲不同的值
hash類型存儲書本的信息:
書名 紅樓夢
作者 xxxxxx
價格 xxxxxx
版本 xxxxxx
出版社 xxxxxx
hash操作
# hset key field value 將hash表中field 值設置為 value
# 創建變數site,第一個欄位為baidu, 欄位值為 www.baidu.com
127.0.0.1:6379> HSET site baidu www.baidu.com
(integer) 1
127.0.0.1:6379> TYPE site
hash
# hget key filed 獲取 hash 表中 field 的值
# hget命令,查看變數site中,第一個欄位baidu的值
127.0.0.1:6379> HGET site baidu
"www.baidu.com"
# hmset同時定義多個欄位
# 在變數site中,再添加一個欄位jd,欄位值為www.jd.com
127.0.0.1:6379> HMSET site jd www.jd.com
OK
# 在變數site中,同時添加多個欄位tmall, sina, jm
127.0.0.1:6379> hmset site tmall www.tmall.com sina www.sina.com jm www.jm.com
OK
# hmget 同時獲取多個hash類型的變數的值
127.0.0.1:6379> HMGET site jd baidu jm tmall sina
1) "www.jd.com"
2) "www.baidu.com"
3) "www.jm.com"
4) "www.tmall.com"
5) "www.sina.com"
# hkeys 獲取hash類型變數的所有欄位
127.0.0.1:6379> HKEYS site
1) "baidu"
2) "jd"
3) "tmall"
4) "sina"
5) "jm"
hvals 獲取hash類型變數的所有欄位對應的值
127.0.0.1:6379> HVALS site
1) "www.baidu.com"
2) "www.jd.com"
3) "www.tmall.com"
4) "www.sina.com"
5) "www.jm.com"
# hgetall 獲取hash類型變數的所有欄位和值
127.0.0.1:6379> HGETALL site
1) "baidu"
2) "www.baidu.com"
3) "jd"
4) "www.jd.com"
5) "tmall"
6) "www.tmall.com"
7) "sina"
8) "www.sina.com"
9) "jm"
10) "www.jm.com"
# hdel 刪除hash類型變數的多個欄位
127.0.0.1:6379> HDEL site jd
(integer) 1
127.0.0.1:6379> HDEL site jm sina
(integer) 2
# hkeys命令,獲取hash類型變數的所有欄位, jm和sina欄位被刪除
127.0.0.1:6379> HKEYS site
1) "baidu"
2) "tmall"
作者:ChAn
出處:http://www.cnblogs.com/sre-chan/
-------------------------------------------
個性簽名:今天做了別人不想做的事,明天你就做得到別人做不到的事,嘗試你都不敢,你拿什麼贏!
如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!