一、hash操作
數據結構:key:{k1:v1, k2:v2, k3:v3} 類似Python中的字典
如:info : {name: lina, age: 22, sex: F}
- hset key k1 v1 設置/創建(字典)
- hget key k1 獲取key1 中 k1對應的值
批量設置獲取
- hmset key k2 v2 k3 v3 同時設置多個k-value
- hmget key k1 k2 k3 同時獲取多個值
獲取所有keys
- hkeys key
獲取所有values
- hvals key
查看鍵值下面的k個數
- hlen key
127.0.0.1:6379> hset info name lina
(integer) 1
127.0.0.1:6379> hget info name
"lina"
127.0.0.1:6379> hmset info age 22 sex F
OK
127.0.0.1:6379> hmget info name age sex
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> hvals info
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hlen info
(integer) 3
1.2 hash 下幾個常用方法
刪除key 下指定鍵值
- hdel key k1 k2 k3 可刪除一個或多個
判斷key 下指定鍵值是否存在
- hexists key field
127.0.0.1:6379> hdel info sex
(integer) 1
127.0.0.1:6379> hexists info sex
(integer) 0
在hash操作中一個key 能存200億條數據,如果使用 hmget key 命令,那占用內存,和速度就太慢了
所以使用掃描,類是python 中生成器一樣的方式:
- hscan key cursor match pattern COUNT count
:para key: 那個hash
:para cursor: 游標,從哪開始掃描 一般從 0
:para match: pattern 模糊匹配,正則表達
:para COUNT: count匹配幾個,輸入數字就好
127.0.0.1:6379> hscan info 0 match na* count 1
1) "0"
2) 1) "name"
2) "lina"
二、列表操作
- lpush key value1 value2 value3 創建一個列表,並從左往右依次放入數據(FILO) - rpush key value value2 同理上面,右往左放入(FIFO)
- lrange key start stop 取列表中的值,從start 到stop 0 -1為取全部
- llen key 查看列表長度
127.0.0.1:6379> lpush list 1 2 3
(integer) 3
127.0.0.1:6379> rpush list 1 2 3
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> llen list
(integer) 6
2.2 往列表中插入元素,刪除元素等
- linsert key where refvalue value 往key中對應的refvalue標桿值的 where(before 和 after)前后后兩個選項,插入數據value
:para key: 對應列表
:para where: before 或 after 意思在標桿值之前或之后
:para refvale: 標桿值
:para value: 將要插入的值
注意:如果有重復值,以找到的第一個為標桿
(integer) 6
127.0.0.1:6379> linsert list before 1 insert
(integer) 7
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
修改指定索引的值:
- lset key index value
刪除指定位置的值:
- lrem key count value 參數count 為刪除幾個,value為 刪誰
從列表左邊獲取一個值返回,並刪除它
- lpop key
獲取指定索引的值
- lindex key index
刪除指定范圍之外的所有元素
- ltrim key start end
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
7) "3"
127.0.0.1:6379> lset list 1 'lina'
OK
127.0.0.1:6379> lrem list 2 1
(integer) 2
127.0.0.1:6379> lpop list
"3"
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
3) "2"
4) "3"
127.0.0.1:6379> ltrim list 0 1
OK
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
127.0.0.1:6379> lindex list 1
"insert"
2.3 幾個不常用的命令,但很厲害
把列表一右邊pop 添加到列表2 lpush 左邊
- rpoplpush key1 key2
左邊刪除一個數據,如果列表為空,就等待超時時間,在超時時間內,列表中出現了元素理解刪除。像隊列中的queue一般
- blpop key timeout
三、set集合
創建一個集合:
- sadd key value value value value
查看集合中的成員:
- smembers key
返回集合中的元素個數:
- scard key
差集:
- sdiff key1 key2
將兩個集合中的差集放入第三個集合
- sdiffstore new_dest key1 key2
交集:
- sinter key1 key2
並集:
- sunion key1 key2
檢查元素是否為集合中成員:
-
sismember key value
-
spop key
-
sscan key cursor match pattern
四、有序集合
-
zadd key 權重值 member 權重值2 member2 權重值3 member3
-
zrange key start end 可選參數為 withscores
-
zcount key min max 統計權重最小到最大
127.0.0.1:6379> zadd zz 1 shiqi 2 zengyue 3 yuan
(integer) 3
127.0.0.1:6379> zrange zz 0 -1
1) "shiqi"
2) "zengyue"
3) "yuan"
127.0.0.1:6379> zrange zz 0 -1 withscores
1) "shiqi"
2) "1"
3) "zengyue"
4) "2"
5) "yuan"
127.0.0.1:6379> zcount zz 1 2
(integer) 2
-
zrank key member 獲取成員排名
-
zrem key member member2 刪除指定成員