Redis中有5種數(shù)據(jù)結(jié)構(gòu),分別是string(字符串)、list(鏈表)、set(無(wú)序集合)、hash(健值對(duì))和zset(有序集合)
1. string字符串
跟其他語(yǔ)言中的字符串一樣,形如key value,如hello world, hello是key, world是值。
操作命令
| 命令 | 行為 |
|---|---|
| set | 設(shè)置在給定鍵的值 |
| get | 獲取指定鍵的值 |
| del | 刪除給定鍵的所有值(通用命令,適合任何數(shù)據(jù)結(jié)構(gòu)) |
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get hello
(nil)
2. list鏈表
一個(gè)列表結(jié)構(gòu)可以有序的存儲(chǔ)多個(gè)值,就跟數(shù)據(jù)結(jié)構(gòu)中的鏈表一樣

image.png
值可以重復(fù)
操作命令
| 命令 | 行為 |
|---|---|
| rpush/lpush | 將給定的值從右邊/左邊推入到鏈表中 |
| rpop/rpush | 將給定的值從鏈表的右邊/左邊推出 |
| lrange | 獲取鏈表中給定范圍的值 |
| lindex | 獲取鏈表中給定位置的單個(gè)值 |
127.0.0.1:6379> rpush list-key item
(integer) 1
127.0.0.1:6379> rpush list-key item2
(integer) 2
127.0.0.1:6379> rpush list-key item
(integer) 3
127.0.0.1:6379> lrange list 0 -1
(empty list or set)
127.0.0.1:6379> lrange list-key 0 -1
1) "item"
2) "item2"
3) "item"
127.0.0.1:6379> lindex list-key 0
"item"
127.0.0.1:6379> lindex list-key 1
"item2"
127.0.0.1:6379> lpop list-key
"item"
127.0.0.1:6379> lrange list-key 0 -2
1) "item2"
127.0.0.1:6379> lrange list-key 0 -1
1) "item2"
2) "item"
127.0.0.1:6379> rpop list-key
"item"
127.0.0.1:6379> lrange list-key 0 -1
1) "item2"
3. set集合(無(wú)序不重復(fù))
跟Java中的set集合一樣無(wú)序不重復(fù)

image.png
操作命令
| 操作 | 命令 |
|---|---|
| sadd | 將值插入到給定的集合中 |
| smembers | 獲取集合中所有的值 |
| sismember | 檢查值是否在集合中 |
| srem | 移除集合中的這個(gè)值 |
127.0.0.1:6379> sadd set-key item
(integer) 1
127.0.0.1:6379> sadd set-key item2
(integer) 1
127.0.0.1:6379> sadd set-key item3
(integer) 1
127.0.0.1:6379> sadd set-key item
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item2"
3) "item"
127.0.0.1:6379> sismember set-key item4
(integer) 0
127.0.0.1:6379> sismember set-key item
(integer) 1
127.0.0.1:6379> srem set-key item4
(integer) 0
127.0.0.1:6379> srem set-key item2
(integer) 1
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item"
4. hash 散列
Redis的散列可以存儲(chǔ)多個(gè)健值對(duì),跟字符串一樣,散列的值可以存儲(chǔ)字符串和數(shù)字。

image.png
hash-key是一個(gè)存儲(chǔ)了倆個(gè)健值對(duì)的散列
操作命令
| 命令 | 行為 |
|---|---|
| hset | 給指定散列填充健值對(duì) |
| hget | 獲取指定散列的指定健值對(duì) |
| hdel | 刪除指定散列中指定的健值對(duì) |
| hgetall | 獲取指定散列的所有健值對(duì) |
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 1
127.0.0.1:6379> hset hash-key sub-key2 value2
(integer) 1
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 0
127.0.0.1:6379> hset hash-key sub-key1 value2
(integer) 0
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value2"
3) "sub-key2"
4) "value2"
127.0.0.1:6379> hget hash-key sub-key2
"value2"
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 1
127.0.0.1:6379> hget hash-key sub-key2
(nil)
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value2"
hset時(shí)散列中的鍵對(duì)應(yīng)的值會(huì)覆蓋
5. 有序集合
有序集合和散列一樣都是存儲(chǔ)的健值對(duì),不一樣的是,有序集合的值只能是浮點(diǎn)數(shù),有序集合的鍵稱之為成員,值稱之為分值

image.png
zset-key是一個(gè)有兩個(gè)健值對(duì)的集合
操作命令
| 命令 | 行為 |
|---|---|
| zadd | 給指定集合添加已知分值的成員 |
| zrange | 根據(jù)順序范圍獲取成員(0 -1)是全部 |
| zrangebyscore | 根據(jù)分值范圍獲取成員 |
| zrem | 移除集合中指定成員 |
127.0.0.1:6379> zadd zset-key 728 member
(integer) 1
127.0.0.1:6379> zadd zset-key 982 member0
(integer) 1
127.0.0.1:6379> zadd zset-key 982 member0
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1
1) "member"
2) "member0"
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member"
2) "728"
3) "member0"
4) "982"
127.0.0.1:6379> zrange zset-key 0 800 withscore
(error) ERR syntax error
127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores
1) "member"
2) "728"
127.0.0.1:6379> zrem zset-key member
(integer) 1
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"
zadd時(shí)在同一個(gè)有序集合中相同的成員分值會(huì)被覆蓋