美文网首页
Redis 的五大数据类型和 TTL

Redis 的五大数据类型和 TTL

作者: 蓝笔头 | 来源:发表于2021-07-06 12:50 被阅读0次

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。

参考

相关文章

网友评论

      本文标题:Redis 的五大数据类型和 TTL

      本文链接:https://www.haomeiwen.com/subject/jnhgultx.html