美文网首页
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