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。
网友评论