Redis入门教程-基础篇

一、什么是Redis

Redis(Remote Dictionary Server)是一个开源的、高性能的键值对存储系统,通常被称为数据结构服务器Redis以其快速的数据读写速度而闻名,可以支持多种数据类型如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)以及有序集合(sorted sets)等。

以下是Redis的一些主要特点:

  1. 内存数据库:Redis主要在内存中操作数据,这意味着它的速度非常快,适合需要快速访问数据的应用场景。
  2. 持久化支持:虽然Redis是基于内存的数据库,但它也提供了几种不同的方式来将数据持久化到磁盘上,以防止数据丢失。主要包括RDB(Redis Database Backup)快照和AOF(Append Only File)日志两种机制。
  3. 数据结构丰富:除了基本的键值对存储外,Redis还支持更复杂的数据结构,这使得它可以用于更多样的应用场景,比如缓存、消息队列等。
  4. 多语言支持:Redis有多种编程语言的客户端实现,包括但不限于Python、Ruby、PHP、Java等,这使得开发者可以很容易地在各种环境中使用Redis。
  5. 事务支持:Redis支持简单的事务处理,可以将多个命令打包成一个序列执行,保证这些命令要么全部成功,要么全部失败。
  6. 发布/订阅模式:Redis提供了发布/订阅功能,允许客户端订阅一个或多个频道,然后其他客户端可以向这些频道发送消息。
  7. 主从复制:Redis支持主从复制,可以在多个服务器之间复制数据,提高系统的可用性和性能。
  8. 集群支持:Redis Cluster提供了一种分布式解决方案,可以自动将数据分布在多个节点上,提高系统的扩展性和可靠性。

二、Windows环境下安装Redis

  1. 下载

  2. 安装步骤

    下载好后解压,先双击服务端程序redis-server.exe,再双击客户端程序redis-cli.exe

    image-20241121155308003

三、Redis数据结构

字符串

定义

字符串可以存三种数据类型:字节串、整数、浮点数。对于整数和浮点数,可以执行自增或自减操作。整数的取值范围和系统的长整数(long integer)的取值范围相同(在32位系统上,整数就是32位有 符号整数,在64位系统上,整数就是64位有符号整数),而浮点数的取值范围和精度则与IEEE 754标准的双精度浮点数(double)相同。

基本操作

  1. SET key value

    • 描述:设置指定键的值

    • 返回值:成功时返回 OK

    SET mykey "Hello"  # 返回 OK
    
  2. GET key

    • 描述:获取指定键的值
    • 返回值:返回键的值,如果键不存在则返回nil
    GET mykey  # 返回 "Hello"
    
  3. GETSET key value

    • 描述:设置指定键的值,并返回旧值
    • 返回值:返回旧值,如果键不存在则返回nil
    GETSET mykey "World"  # 返回 "Hello"
    
  4. MSET key value [key value …]

    • 描述:同时设置多个键的值
    • 返回值:成功时返回OK
    MSET key1 "value1" key2 "value2"  # 返回 OK
    
  5. SETNX key value

    • 描述:只有键不存在时才设置键的值
    • 返回值:设置成功返回1,键已存在返回0
    SETNX mykey "hello" # 返回 0 (因为 mykey 已经存在)
    
  6. SETEX key seconds value

    • 描述:设置键的值,并设置过期时间(秒)
    • 返回值:成功时返回OK
    SETNX mykey 10 "Hello" # 返回 OK
    
  7. PSETEX key milliseconds value

    • 描述:设置键的值,并设置过期时间(毫秒)
    • 返回值:成功时返回 OK

增删改查

  1. INCR key

    • 描述:将键的整数值加1
    • 返回值:返回增加后的值
    INCR mycounter # 返回 1
    
  2. DECR key

    • 描述:将键的整数值减1
    • 返回值:返回减少后的值
    DECR mucounter # 返回 0
    
  3. INCRBY key increment

    • 描述:将键的整数值增加指定的增量
    • 返回值:返回增加后的值
    INCRBY mycounter 5 # 返回 5
    
  4. DECRBY key decrement

    • 描述:将键的整数值减少指定的减量。
    • 返回值:返回减少后的值。
    DECRBY mycounter 3  # 返回 2
    
  5. INCRBYFLOAT key increment

    • 描述:将键的浮点数值增加指定的增量。
    • 返回值:返回增加后的值。
    INCRBYFLOAT myfloat 2.5  # 返回 "2.5"
    INCRBYFLOAT myfloat -1.2  # 返回 "1.3"
    

字符串操作

  1. APPEND key value

    • 描述:将值追加到已存在的字符串值后面
    • 返回值:返回追加后的字符串长度
    APPEND mykey " World"  # 返回 11
    
  2. STRLEN key

    • 描述:返回键的字符串值的长度
    • 返回值:返回字符串长度
    STRLEN mykey  # 返回 11
    
  3. GETRANGE key start end

    • 描述:获取字符串值的一部分,从 start 位置到 end 位置
    • 返回值:返回指定范围的字符串
    GETRANGE mykey 0 5  # 返回 "Hello "
    
  4. SETRANGE key offset value

    • 描述:修改字符串值的一部分,从指定的偏移量开始
    • 返回值:返回修改后的字符串长度
    SETRANGE mykey 6 "Redis"  # 返回 11
    

列表

定义

列表(List)是一种有序的字符串集合,元素可以重复,支持从头部和尾部进行插入和删除操作。

基本操作

  1. LPUSH key value [value …]

    • 描述:将一个或多个值插入到列表的头部

    • 返回值:返回列表的长度

    LPUSH mylist "one" "two"  # 返回 2
    
  2. RPUSH key value [value …]

    • 描述:将一个或多个值插入到列表的尾部
    • 返回值:返回列表的长度
    RPUSH mylist "three" "four"  # 返回 4
    
  3. LPOP key

    • 描述:移除并返回列表的头元素
    • 返回值:返回头元素的值,如果列表为空或键不存在则返回 nil
    LPOP mylist  # 返回 "one"
    
  4. RPOP key

    • 描述:移除并返回列表的尾元素
    • 返回值:返回尾元素的值,如果列表为空或键不存在则返回 nil
    RPOP mylist  # 返回 "four"
    
  5. LLEN key

    • 描述:返回列表的长度
    • 返回值:返回列表的长度,如果键不存在则返回 0
    LEN mylist  # 返回 2
    

获取列表元素

  1. LRANGE key start stop

    • 描述:返回列表中指定范围的元素,索引从0开始,其中0表示列表的第一个元素,-1表示列表的最后一个元素
    • 返回值:返回一个包含指定范围元素的数组
    LRANGE mylist 0 -1  # 返回 ["two", "three"]
    
  2. LINDEX key index

    • 描述:返回列表中指定位置的元素
    • 返回值:返回指定位置的元素,如果索引超出范围或键不存在则返回 nil
    LINDEX mylist 0  # 返回 "two"
    

修改列表元素

  1. LSET key index value

    • 描述:设置列表中指定位置的元素值

    • 返回值:成功时返回 OK,如果索引超出范围则返回错误

    LSET mylist 0 "one"  # 返回 OK
    

插入和删除

  1. LINSERT key BEFORE|AFTER pivot value

    • 描述:在列表中找到值为 pivot 的元素,并在其之前(BEFORE)或之后(AFTER)插入新的值 value

    • 返回值:返回插入后的列表长度,如果列表中没有值为 pivot 的元素则返回 -1

    LINSERT mylist BEFORE "three" "two" # 返回 3
    
  2. LREM key count value

    • 描述:从列表中移除指定数量的值为 value 的元素。
    • 参数:
      • count > 0:从头部开始移除最多 count 个值为 value 的元素。
      • count < 0:从尾部开始移除最多 count 个值为 value 的元素。
      • count = 0:移除所有值为 value 的元素。
    • 返回值:返回实际移除的元素数量。
    LREM mylist 0 "two"  # 返回 2
    

截取列表

  1. LTRIM key start stop

    • 描述:对列表进行修剪,使其只保留指定范围内的元素。
    • 返回值:成功时返回 OK
    LTRIM mylist 0 1  # 返回 OK
    

集合

定义

集合(Set)是一种无序的字符串集合,不允许重复元素。集合支持多种操作,如添加、删除、成员检查等。

基本操作

  1. SADD key member [member …]

    • 描述:将一个或多个成员添加到集合中。如果成员已经存在于集合中,则不会再次添加
    • 返回值:返回成功添加的新成员数量
    SADD myset "one" "two" "three" # 返回 3
    
  2. SCARD key

    • 描述:返回集合中成员的数量
    • 返回值:返回集合的大小,如果键不存在则返回 0
    SCARD myset # 返回 3
    
  3. SMEMBERS key

    • 描述:返回集合中的所有成员
    • 返回值:返回一个包含所有成员的数组
    SMEMBERS myset # 返回 ["one", "two", "three"]
    
  4. SISMEMBER key member

    • 描述:检查成员是否存在于集合中
    • 返回值:如果成员存在于集合中,返回 1;否则返回 0
    SISMEMBER myset "one" # 返回 1
    

删除操作

  1. SREM key member [member …]

    • 描述:从集合中移除一个或多个成员
    • 返回值:返回成功移除的成员数量
    SREM myset "one" "two"  # 返回 2
    

集合运算

  1. SINTER key [key …]

    • 描述:返回多个集合的交集
    • 返回值:返回一个包含交集成员的数组
    SADD set1 "one" "two" "three"
    SADD set2 "two" "three" "four"
    SINTER set1 set2  # 返回 ["two", "three"]
    
  2. SINTERSTORE destination key [key …]

    • 描述:将多个集合的交集保存到新的集合中
    • 返回值:返回交集中成员的数量
    SINTERSTORE set3 set1 set2  # 返回 2
    
  3. SUNION key [key …]

    • 描述:返回多个集合的并集
    • 返回值:返回一个包含并集成员的数组
    SUNION set1 set2  # 返回 ["one", "two", "three", "four"]
    
  4. SUNIONSTORE destination key [key …]

    • 描述:将多个集合的并集保存到新的集合中
    • 返回值:返回并集中成员的数量
    SUNIONSTORE set4 set1 set2  # 返回 4
    
  5. SDIFF key [key …]

    • 描述:返回第一个集合与其他集合的差集
    • 返回值:返回一个包含差集成员的数组
    SDIFF set1 set2  # 返回 ["one"]
    
  6. SDIFFSTORE destination key [key …]

    • 描述:将第一个集合与其他集合的差集保存到新的集合中
    • 返回值:返回差集中成员的数量
    SDIFFSTORE set5 set1 set2  # 返回 1
    

随机操作

  1. SRANDMEMBER key [count]

    • 描述:随机返回集合中的一个或多个成员。
    • 参数
      • 如果 count 为正数,随机返回 count 个不重复的成员,如果集合中的成员数量小于 count,则返回集合中所有成员
      • 如果 count 为负数,随机返回 |count| 个可以重复的成员,无论集合中的成员数量如何,都会返回 |count| 个成员,成员可以重复
      • 如果 count 未指定,随机返回一个成员
    • 返回值:返回一个包含随机成员的数组。
    SRANDMEMBER myset 2  # 返回 ["one", "two"]
    SRANDMEMBER myset 5  # 返回 ["one", "two", "three", "four"]
    SRANDMEMBER myset -3 # 可能返回 ["one", "one", "two"]
    SRANDMEMBER myset -5 # 可能返回 ["one", "one", "two", "two", "three"]
    
  2. SPOP key [count]

    • 描述:随机移除并返回集合中的一个或多个成员。
    • 参数:
      • 如果 count 为正数,随机移除并返回 count 个不重复的成员,如果集合中的成员数量小于 count,则返回集合中所有成员,并清空集合
      • 如果 count 为负数,随机移除并返回 count 个可以重复的成员,无论集合中的成员数量如何,都会返回 |count| 个成员,成员可以重复
      • 如果 count 未指定,随机移除并返回一个成员
    • 返回值:返回一个包含随机成员的数组。
    SPOP myset 2  # 返回 ["one", "two"]
    SPOP myset 5  # 返回 ["one", "two", "three", "four"]
    SPOP myset -3 # 可能返回 ["one", "one", "two"]
    SPOP myset -5 # 可能返回 ["one", "one", "two", "two", "three"]
    

散列

定义

散列(Hash)是一种键值对的集合,每个键值对都有一个字段(field)和一个值(value)。散列的字段(field)必须是唯一的,不能重复。

基本操作

  1. HSET key field value

    • 描述:将字段的值设置为给定的值,如果字段已经存在,则更新该字段的值
    • 返回值:如果字段是一个新字段并且值已设置,则返回 1;如果字段已经存在并且值已更新,则返回 0
    HSET myhash field1 "hello"  # 返回 1
    HSET myhash field1 "world"  # 返回 0
    
  2. HGET key field

    • 描述:获取散列中指定字段的值
    • 返回值:返回字段的值,如果字段不存在则返回 nil
    HGET myhash field1  # 返回 "world"
    
  3. HMSET key field value [field value …]

    • 描述:同时设置多个字段的值
    • 返回值:成功时返回 OK
    HMSET myhash field2 "foo" field3 "bar"  # 返回 OK
    
  4. HMGET key field [field …]

    • 描述:获取多个字段的值
    • 返回值:返回一个包含多个字段值的数组,如果某个字段不存在则对应位置返回 nil
    HMGET myhash field1 field2  # 返回 ["world", "foo"]
    
  5. HGETALL key

    • 描述:获取散列中所有字段和值
    • 返回值:返回一个包含所有字段和值的数组,格式为 [field1, value1, field2, value2, ...]
    HGETALL myhash  # 返回 ["field1", "world", "field2", "foo", "field3", "bar"]
    

存在性检查

  1. HEXISTS key field

    • 描述:检查散列中是否存在指定字段
    • 返回值:如果字段存在,返回 1;否则返回 0
    HEXISTS myhash field1  # 返回 1
    HEXISTS myhash field4  # 返回 0
    

删除操作

  1. HDEL key field [field …]

    • 描述:删除一个或多个字段
    • 返回值:返回成功删除的字段数量
    HDEL myhash field1 field2  # 返回 2
    

长度和字段列表

  1. HLEN key

    • 描述:返回散列中字段的数量
    • 返回值:返回字段的数量
    HLEN myhash  # 返回 1
    
  2. HKEYS key

    • 描述:返回散列中所有字段的名称
    • 返回值:返回一个包含所有字段名称的数组
    HKEYS myhash  # 返回 ["field3"]
    
  3. HVALS key

    • 描述:返回散列中所有字段的值
    • 返回值:返回一个包含所有字段值的数组
    HVALS myhash  # 返回 ["bar"]
    

增删改查

  1. HINCRBY key field increment

    • 描述:将字段的整数值增加指定的增量
    • 返回值:返回增加后的值
    HINCRBY myhash counter 5  # 返回 5
    
  2. HINCRBYFLOAT key field increment

    • 描述:将字段的浮点数值增加指定的增量
    • 返回值:返回增加后的值
    HINCRBYFLOAT myhash floatCounter 2.5  # 返回 "2.5"
    

有序集合

定义

有序集合(Sorted Set)是一种集合类型,其中每个成员都关联一个分数(score),用于排序。有序集合中的成员是唯一的,但分数可以重复。

基本操作

  1. ZADD key [NX | XX] [CH] [INCR] score member [score member …]

    • 描述:向有序集合中添加一个或多个成员,或者更新已存在的成员的分数
    • 参数:
      • NX:仅在成员不存在时添加
      • XX:仅在成员已存在时更新
      • CH:仅在成员的分数发生变化时返回更新的成员数量
      • INCR:如果成员已存在,则返回更新后的分数
    • 返回值:返回成功添加或更新的成员数量
    ZADD myzset 1 "one" 2 "two" 3 "three"  # 返回 3
    ZADD myzset 4 "three"  # 返回 0,因为 "three" 已存在
    ZADD myzset NX 1 "one"  # 返回 0,因为 "one" 已存在
    ZADD myzset XX 4 "one"  # 返回 1,因为 "one" 已存在
    ZADD myzset INCR 1 "one"  # 返回 2,因为 "one" 的分数从 1 增加到 2
    
  2. ZCARD key

    • 描述:返回有序集合中的成员数量
    • 返回值:返回有序集合中的成员数量
    ZCARD myzset  # 返回 3
    
  3. ZCOUNT key min max]

    • 描述:返回有序集合中分数在指定范围内的成员数量
    • 返回值:返回分数在指定范围内的成员数量
    ZCOUNT myzset 1 3  # 返回 3
    

成员查询

  1. ZSCORE key member

    • 描述:返回有序集合中指定成员的分数
    • 返回值:返回成员的分数,如果成员不存在则返回 nil
    ZSCORE myzset "one"  # 返回 "2"
    
  2. ZRANK key member

    • 描述:返回有序集合中指定成员的排名(从0开始)
    • 返回值:返回成员的排名,如果成员不存在则返回 nil
    ZRANK myzset "one"  # 返回 0
    
  3. ZREVRANK key member

    • 描述:返回有序集合中指定成员的排名(从高到低,从0开始)
    • 返回值:返回成员的排名,如果成员不存在则返回 nil
    ZREVRANK myzset "one"  # 返回 2
    

范围查询

  1. ZRANGE key start stop [WITHSCORES]

    • 描述:返回有序集合中指定范围内的成员,按分数从小到大排序
    • 参数:
      • WITHSCORES:返回成员及其分数
    • 返回值:返回一个包含成员的数组,如果指定了 WITHSCORES,则返回一个包含成员及其分数的数组
    ZRANGE myzset 0 -1  # 返回 ["one", "two", "three"]
    ZRANGE myzset 0 -1 WITHSCORES  # 返回 ["one", "2", "two", "2", "three", "3"]
    
  2. ZREVRANGE key start stop [WITHSCORES]

    • 描述:返回有序集合中指定范围内的成员,按分数从大到小排序
    • 参数:
      • WITHSCORES:返回成员及其分数
    • 返回值:返回一个包含成员的数组,如果指定了 WITHSCORES,则返回一个包含成员及其分数的数组
    ZREVRANGE myzset 0 -1  # 返回 ["three", "two", "one"]
    ZREVRANGE myzset 0 -1 WITHSCORES  # 返回 ["three", "3", "two", "2", "one", "2"]
    
  3. ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

    • 描述:返回有序集合中分数在指定范围内的成员,按分数从小到大排序
    • 参数:
      • WITHSCORES:返回成员及其分数
      • LIMIT offset count:返回指定范围内的成员
    • 返回值:返回一个包含成员的数组,如果指定了 WITHSCORES,则返回一个包含成员及其分数的数组
    ZRANGEBYSCORE myzset 1 3  # 返回 ["one", "two", "three"]
    ZRANGEBYSCORE myzset 1 3 WITHSCORES  # 返回 ["one", "2", "two", "2", "three", "3"]
    ZRANGEBYSCORE myzset 1 3 LIMIT 0 2  # 返回 ["one", "two"]
    
  4. ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

    • 描述:返回有序集合中分数在指定范围内的成员,按分数从大到小排序
    • 参数:
      • WITHSCORES:返回成员及其分数
      • LIMIT offset count:返回指定范围内的成员
    • 返回值:返回一个包含成员的数组,如果指定了 WITHSCORES,则返回一个包含成员及其分数的数组
    ZREVRANGEBYSCORE myzset 3 1  # 返回 ["three", "two", "one"]
    ZREVRANGEBYSCORE myzset 3 1 WITHSCORES  # 返回 ["three", "3", "two", "2", "one", "2"]
    ZREVRANGEBYSCORE myzset 3 1 LIMIT 0 2  # 返回 ["three", "two"]
    

成员删除

  1. ZREM key member [member …]

    • 描述:从有序集合中移除一个或多个成员
    • 返回值:返回成功移除的成员数量
    ZREM myzset "one" "two"  # 返回 2
    

分数操作

  1. ZINCRBY key increment member

    • 描述:将有序集合中指定成员的分数增加指定的增量
    • 返回值:返回更新后的分数
    ZINCRBY myzset 2 "one"  # 返回 "4"
    

交集、并集和差集

  1. ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

    • 描述:计算多个有序集合的交集,并将结果存储在新的有序集合中
    • 参数:
      • destination:结果存储的目标键
      • numkeys:参与交集计算的有序集合数量
      • key [key ...]:参与交集计算的有序集合键
      • WEIGHTS weight [weight ...]:每个有序集合的权重
      • AGGREGATE SUM|MIN|MAX:聚合方式,可以是 SUMMINMAX
    • 返回值:返回结果有序集合中的成员数量。
    ZINTERSTORE zset3 2 myzset1 myzset2 WEIGHTS 1 2 AGGREGATE SUM  # 返回交集成员数量
    
  2. ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

    • 描述:计算多个有序集合的并集,并将结果存储在新的有序集合中
    • 参数:
      • destination:结果存储的目标键
      • numkeys:参与并集计算的有序集合数量
      • key [key ...]:参与并集计算的有序集合键
      • WEIGHTS weight [weight ...]:每个有序集合的权重
      • AGGREGATE SUM|MIN|MAX:聚合方式,可以是 SUMMINMAX
    • 返回值:返回结果有序集合中的成员数量
    ZUNIONSTORE zset3 2 myzset1 myzset2 WEIGHTS 1 2 AGGREGATE SUM  # 返回并集成员数量
    
  3. ZDIFFSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

    • 描述:计算多个有序集合的差集,并将结果存储在新的有序集合中
    • 参数:
      • destination:结果存储的目标键
      • numkeys:参与差集计算的有序集合数量
      • key [key ...]:参与差集计算的有序集合键
      • WEIGHTS weight [weight ...]:每个有序集合的权重
      • AGGREGATE SUM|MIN|MAX:聚合方式,可以是 SUMMINMAX
    • 返回值:返回结果有序集合中的成员数量
    ZDIFFSTORE zset3 2 myzset1 myzset2  # 返回差集成员数量
    

发布与订阅

定义

在 Redis 的发布与订阅(Pub/Sub)模型中,客户端订阅频道后会实时接收发布到这些频道的消息。如果客户端在执行订阅操作的过程中断线,那么客户端将丢失在断线期间发送的所有消息。这是因为 Redis 的 Pub/Sub 模型是基于推送的,而不是基于消息队列的。具体来说,这意味着:

  1. 实时推送:当消息发布到某个频道时,Redis 会立即将消息推送给所有当前订阅该频道的客户端。
  2. 无持久化:Redis 不会为 Pub/Sub 消息提供持久化存储。一旦消息被推送到客户端,Redis 就不再保留这些消息。
  3. 断线丢失:如果客户端在订阅期间断线,Redis 不会保存这些客户端在断线期间错过的消息。当客户端重新连接并恢复订阅时,它只会收到断线之后新发布的消息,而不会收到断线期间发布的消息。

订阅操作

  1. SUBSCRIBE channel [channel …]

    • 描述:订阅一个或多个给定的频道

    • 返回值:返回一个消息,指示客户端已成功订阅指定的频道

    • 消息格式["subscribe", channel, number_of_subscriptions]

    • 参数说明:

      • "subscribe":表示这是一个订阅成功的消息
      • channel:表示成功订阅的频道名称。
      • number_of_subscriptions:表示客户端当前订阅的频道总数(包括普通频道和模式订阅)
    • 示例

      SUBSCRIBE channel1 channel2
      
    • 返回示例

      1) "subscribe"
      2) "channel1"
      3) (integer) 1
      1) "subscribe"
      2) "channel2"
      3) (integer) 2
      
  2. PSUBSCRIBE pattern [pattern …]

    • 描述:订阅一个或多个符合给定模式的频道

    • 返回值:返回一个消息,指示客户端已成功订阅指定的模式

    • 消息格式["psubscribe", pattern, number_of_subscriptions]

    • 参数说明

      • "psubscribe":表示这是一个模式订阅成功的消息
      • pattern:表示成功取消订阅的模式
      • number_of_subscriptions:表示客户端当前订阅的频道总数(包括普通频道和模式订阅)
    • 示例

      PSUBSCRIBE channel* message*
      
    • 返回示例

      1) "psubscribe"
      2) "channel*"
      3) (integer) 1
      1) "psubscribe"
      2) "message*"
      3) (integer) 2
      

发布操作

  1. PUBLISH channel message

    • 描述:将消息发布到指定的频道。

    • 返回值:返回接收到消息的客户端数量。

    • 示例

      PUBLISH channel1 "Hello, World!"
      
    • 返回示例

      (integer) 2  # 表示有两个客户端接收到消息
      

取消订阅操作

  1. UNSUBSCRIBE [channel [channel …]]

    • 描述:取消订阅一个或多个给定的频道。如果没有指定频道,则取消订阅所有频道

    • 返回值:返回一个消息,指示客户端已成功取消订阅指定的频道

    • 消息格式["unsubscribe", channel, number_of_subscriptions]

    • 参数说明:

      • "unsubscribe":表示这是一个取消订阅成功的消息
      • channel:表示成功取消订阅的频道名称
      • number_of_subscriptions:表示客户端当前订阅的频道总数(包括普通频道和模式订阅)
    • 示例

      UNSUBSCRIBE channel1 channel2
      
    • 返回示例

      1) "unsubscribe"
      2) "channel1"
      3) (integer) 1
      1) "unsubscribe"
      2) "channel2"
      3) (integer) 0
      
  2. PUNSUBSCRIBE [pattern [pattern …]]

    • 描述:取消订阅一个或多个符合给定模式的频道。如果没有指定模式,则取消订阅所有模式

    • 返回值:返回一个消息,指示客户端已成功取消订阅指定的模式

    • 消息格式["punsubscribe", pattern, number_of_subscriptions]

    • 参数说明

      • "punsubscribe":表示这是一个取消模式订阅成功的消息
      • pattern:表示成功取消订阅的模式
      • number_of_subscriptions:表示客户端当前订阅的频道总数(包括普通频道和模式订阅)
    • 示例

      PUNSUBSCRIBE channel* message*
      
    • 返回示例

      1) "punsubscribe"
      2) "channel*"
      3) (integer) 1
      1) "punsubscribe"
      2) "message*"
      3) (integer) 0
      

过期时间

设置过期时间

  1. EXPIRE key seconds

    • 描述:设置键的过期时间,单位为秒

    • 返回值

      • 1:如果过期时间设置成功
      • 0:如果键不存在或过期时间设置失败
    • 示例

      EXPIRE mykey 60  # 设置 mykey 的过期时间为 60 秒
      
    • 返回示例

      (integer) 1
      
  2. PEXPIRE key milliseconds

    • 描述:设置键的过期时间,单位为毫秒

    • 返回值

      • 1:如果过期时间设置成功
      • 0:如果键不存在或过期时间设置失败
    • 示例

      PEXPIRE mykey 60000  # 设置 mykey 的过期时间为 60000 毫秒(60 秒)
      
    • 返回示例

      (integer) 1
      

获取过期时间

  1. TTL key

    • 描述:获取键的剩余生存时间(TTL),单位为秒

    • 返回值

      • 正整数:表示键的剩余生存时间(以秒为单位)
      • -1:如果键存在但没有设置过期时间
      • -2:如果键不存在
    • 示例

      TTL mykey  # 获取 mykey 的剩余生存时间
      
    • 返回示例

      (integer) 50  # 剩余生存时间为 50 秒
      
  2. PTTL key

    • 描述:获取键的剩余生存时间(TTL),单位为毫秒

    • 返回值

      • 正整数:表示键的剩余生存时间(以毫秒为单位)
      • -1:如果键存在但没有设置过期时间
      • -2:如果键不存在
    • 示例

      PTTL mykey  # 获取 mykey 的剩余生存时间
      
    • 返回示例

      (integer) 50000  # 剩余生存时间为 50000 毫秒(50 秒)
      

修改过期时间

  1. EXPIREAT key timestamp

    • 描述:设置键的过期时间为指定的 Unix 时间戳(秒)。

    • 返回值

      • 1:如果过期时间设置成功。
      • 0:如果键不存在或过期时间设置失败。
    • 示例

      EXPIREAT mykey 1633072800  # 设置 mykey 的过期时间为 2021-10-01 12:00:00 UTC
      
    • 返回示例

      (integer) 1
      
  2. PEXPIREAT key timestamp

    • 描述:设置键的过期时间为指定的 Unix 时间戳(毫秒)。

    • 返回值

      • 1:如果过期时间设置成功。
      • 0:如果键不存在或过期时间设置失败。
    • 示例

      PEXPIREAT mykey 1633072800000  # 设置 mykey 的过期时间为 2021-10-01 12:00:00 UTC
      
    • 返回示例

      (integer) 1
      

删除过期时间

  1. PERSIST key

    • 描述:移除键的过期时间,使键永不过期。

    • 返回值

      • 1:如果过期时间成功移除。
      • 0:如果键不存在或键没有设置过期时间。
    • 示例

      PERSIST mykey  # 移除 mykey 的过期时间
      
    • 返回示例

      (integer) 1
      

      PTTL mykey # 获取 mykey 的剩余生存时间

      
      
    • 返回示例

      (integer) 50000  # 剩余生存时间为 50000 毫秒(50 秒)
      

修改过期时间

  1. EXPIREAT key timestamp

    • 描述:设置键的过期时间为指定的 Unix 时间戳(秒)。

    • 返回值

      • 1:如果过期时间设置成功。
      • 0:如果键不存在或过期时间设置失败。
    • 示例

      EXPIREAT mykey 1633072800  # 设置 mykey 的过期时间为 2021-10-01 12:00:00 UTC
      
    • 返回示例

      (integer) 1
      
  2. PEXPIREAT key timestamp

    • 描述:设置键的过期时间为指定的 Unix 时间戳(毫秒)。

    • 返回值

      • 1:如果过期时间设置成功。
      • 0:如果键不存在或过期时间设置失败。
    • 示例

      PEXPIREAT mykey 1633072800000  # 设置 mykey 的过期时间为 2021-10-01 12:00:00 UTC
      
    • 返回示例

      (integer) 1
      

删除过期时间

  1. PERSIST key

    • 描述:移除键的过期时间,使键永不过期。

    • 返回值

      • 1:如果过期时间成功移除。
      • 0:如果键不存在或键没有设置过期时间。
    • 示例

      PERSIST mykey  # 移除 mykey 的过期时间
      
    • 返回示例

      (integer) 1
      
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值