Redis 的數據類型
$ redis-cli -v
redis-cli 3.2.6
redis 是 key-value
的數據結構,每條數據都是?個鍵值對。
- 鍵的類型是字符串。
- 值的類型分為五種:
- 字符串
string
- 哈希
hash
- 列表
list
- 集合
set
- 有序集合
zset
- 字符串
注意:鍵不能重復!
可以通過 type
命令查看 Reids key
所存儲的 value
的類型。
1)字符串 string
127.0.0.1:6379> set k1 aa
OK
127.0.0.1:6379> get k1
"aa"
127.0.0.1:6379> type k1
string
2)哈希 hash
127.0.0.1:6379> hset k2 k2_key aa
(integer) 1
127.0.0.1:6379> hget k2 k2_key
"aa"
127.0.0.1:6379> type k2
hash
3)列表 list
127.0.0.1:6379> lpush k3 a b c
(integer) 3
127.0.0.1:6379> lrange k3 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> type k3
list
4)集合 set
127.0.0.1:6379> sadd k4 a b c
(integer) 3
127.0.0.1:6379> smembers k4
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> type k4
set
5)有序集合 zset
127.0.0.1:6379> zadd k5 10 a 20 b 30 c
(integer) 3
127.0.0.1:6379> zrange k5 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrange k5 0 -1 WITHSCORES
1) "a"
2) "10"
3) "b"
4) "20"
5) "c"
6) "30"
127.0.0.1:6379> type k5
zset
TTL
語法:
TTL key
以秒為單位乓搬,返回給定 key
的剩余生存時間(TTL, time to live
)思犁。
返回值:
- 當
key
不存在時,返回-2
进肯。 - 當
key
存在但沒有設置剩余生存時間時激蹲,返回-1
。 - 否則江掩,以秒為單位学辱,返回 key 的剩余生存時間。
(1)字符串 string
127.0.0.1:6379> set k1 aa
OK
127.0.0.1:6379> ttl k1
(integer) -1
127.0.0.1:6379> expire k1 10
(integer) 1
127.0.0.1:6379> ttl k1
(integer) 8
127.0.0.1:6379> ttl k1
(integer) 7
127.0.0.1:6379> set k1 aa
OK
127.0.0.1:6379> ttl k1
(integer) -1
調用 set
命令后會重置 key
的 ttl环形。
(2)哈希 hash
127.0.0.1:6379> hset k2 k2_key1 aa
(integer) 1
127.0.0.1:6379> ttl k2
(integer) -1
127.0.0.1:6379> expire k2 100
(integer) 1
127.0.0.1:6379> ttl k2
(integer) 98
127.0.0.1:6379> hset k2 k2_key2 b
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> ttl k2
(integer) 90
127.0.0.1:6379> ttl k2
(integer) 87
調用 hset
命令后不會重置 key
的 ttl策泣。
(3)列表 list
127.0.0.1:6379> lpush k3 a b c
(integer) 3
127.0.0.1:6379> ttl k3
(integer) -1
127.0.0.1:6379> expire k3 100
(integer) 1
127.0.0.1:6379> ttl k3
(integer) 89
127.0.0.1:6379> lpush k3 d e f
(integer) 6
127.0.0.1:6379> ttl k3
(integer) 80
調用 lpush
命令后不會重置 key
的 ttl。
(4)集合 set
127.0.0.1:6379> sadd k4 a b c
(integer) 3
127.0.0.1:6379> ttl k4
(integer) -1
127.0.0.1:6379> expire k4 100
(integer) 1
127.0.0.1:6379> ttl k4
(integer) 97
127.0.0.1:6379> sadd k4 d e f
(integer) 3
127.0.0.1:6379> ttl k4
(integer) 86
調用 sadd
命令后不會重置 key
的 ttl抬吟。
(5)有序集合 zset
127.0.0.1:6379> zadd k5 10 a 20 b 30 c
(integer) 3
127.0.0.1:6379> ttl k5
(integer) -1
127.0.0.1:6379> expire k5 100
(integer) 1
127.0.0.1:6379> ttl k5
(integer) 97
127.0.0.1:6379> zadd k5 10 d 20 e 30 f
(integer) 3
127.0.0.1:6379> ttl k5
(integer) 84
調用 zadd
命令后不會重置 key
的 ttl萨咕。
結論
- 字符串
string
:調用set
會重置key
的 ttl。 - 哈希
hash
:不會重置key
的 ttl火本。 - 列表
list
:不會重置key
的 ttl危队。 - 集合
set
:不會重置key
的 ttl。 - 有序集合
zset
:不會重置key
的 ttl钙畔。