Redis五大数据类型应用

本文深入解析Redis中的五种主要数据结构:String、List、Set、Hash和Zset(sortedset)的使用方法及特性。从键的管理到每种数据结构的具体操作命令,包括创建、查询、修改和删除等,全面覆盖了Redis在实际应用中的各种场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Key

  • 显示所有键:keys *
  • 创建一个键值对:set k1 v1
  • 启动指定的key到另一个数据库:move k1 2
  • 查看某个key是否存在:exists k1
  • 通过key得到value:get k1
  • 设置key的有效期:expire k1 100 【也表示重置过期时间
  • 查看key的剩余有效期:ttl k1
  • 如果查看剩余有效期返回的是 -1 那么表示该key有效期为无限期,也表示该key没有设置有效期
  • 表示清除key的过期时间,使key持久化:persist key1
  • 删除某个key:del k1
  • 注意:如果当前数据库中有k1,那么再次set一个k1,后来的value将覆盖前一个value
  • 查看某个key的数据类型:type k1

String

  • set、get、del、append、strlen
  • incr【key如果是数字,那么+1】
  • decr【key如果是数字,那么-1】
  • incrby【key如果是数字,那么给key加上特点的数】
  • decrby【key如果是数字,那么给key减去特点的数】
  • getrange:获取指定区间范围内的值,类似between........and的关系
  • setrange:设置指定区间范围内的值,格式是setrange key值 具体值
  • 创建(key,value)键值对,并设置过期时间:setex k4 10 v4
  • 如果不存在才创建:setnx str11 v11
  • mset、mget、msetnx

List

  • lpush、rpush、lrange【返回列表中指定区间内的元素】、
  • lpop【从 list 的头部删除元素,并返回删除元素】、rpop【从 list 的尾部删除元素,并返回删除元素】
  • lindex【命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推】
  • llen【命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误】
  • lrem根据参数 COUNT(2) 的值,移除列表中与参数 VALUE(3) 相等的元素
    • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
    • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
    • count = 0 : 移除表中所有与 VALUE 相等的值。
  • ltrim【对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。】
  • rpoplpush 【命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回】
  • lset【通过索引来设置元素的值,当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误
  • linsert 【命令用于在列表的元素前或者后插入元素】
    • 当指定元素不存在于列表中时,不执行任何操作。
    • 当列表不存在时,被视为空列表,不执行任何操作。
    • 如果 key 不是列表类型,返回一个错误。
  • List性能总结:

Set

  • sadd命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略
    • 假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
    • 当集合 key 不是集合类型时,返回一个错误。
  • smembers【命令返回集合中的所有的成员】
    • 不存在的集合 key 被视为空集合
  • sismember【命令判断成员元素是否是集合的成员】
  • scard【获取集合里面的元素个数】
  • srem【删除指定的集合中的元素】
  • srandmember【用于返回集合中的一个或多个随机元素】
  • spop【随机出栈】
  • smove set01 set012 member【指定成员 member 元素从 set01 集合移动到 set02集合】
    • smove是原子性操作。
    • 如果 set01 集合不存在或不包含指定的 member 元素,则 smove 命令不执行任何操作,仅返回 0 。否则, member 元素从 set01 集合中被移除,并添加到 set02 集合中去。
    • 当 set02 集合已经包含 member 元素时, smove 命令只是简单地将 set01 集合中的 member 元素删除。
    • 当 set01 或 set02 不是集合类型时,返回一个错误。
  • ​​​​​​​
  • 数学集合类:

    • 差集:sdiff【在第一个set里面而不在后边任何一个set里面的项】
    • 交集:sinter
    • 并集:sunion
  • ​​​​​​​

Hash

  • KV模式不变,但V是一个键值对

  • hset、hget、hmset、hmget、hgetall、hdel
  • hlen
  • hexists
  • hkeys【获取哈希表中的所有域】
  • hvals【返回哈希表所有域(field)的值​​​​​​​】
  • hincrby【为哈希表中的字段值加上指定增量值】
    • 增量也可以为负数,相当于对指定字段进行减法操作。
    • 如果哈希表的 key 不存在,一个新的哈希表被创建并执行 hincrby命令。

    • 如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

    • 对一个储存字符串值的字段执行 hincrby命令将造成一个错误。

    • 本操作的值被限制在 64 位(bit)有符号数字表示之内。

  • hincrbyfloat【为哈希表中的字段值加上指定浮点数增量值】
    • ​​​​​​​如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。​​​​​​​
  • hsetnx【用于为哈希表中不存在的的字段赋值】
    • 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
    • 如果字段已经存在于哈希表中,操作无效。
    • 如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

  • ​​​​​​​

Zset(sorted set)

  • 多说一句:

  • zadd、zrange
  • zrangebyscore 【返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列】
    • 具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。
    • ​​​​​​​默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号,表示不包含。
    • limit作用是返回限制【从下标为2开始的两个value返回】,类似于分页
  • zrem【用于移除有序集中的一个或多个成员,不存在的成员将被忽略】
  • zcard【用于计算集合中元素的数量】
  • zcount【用于计算有序集合中指定分数区间的成员数量】
  • zrank【返回有序集中指定成员的排名】
    • 其中有序集成员按分数值递增(从小到大)顺序排列
  • zscore【返回有序集中,成员的分数值】
    • 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 nil 
  • zrevrank【返回有序集中成员的排名】【简单来说就是逆序】
    • ​​​​​​​其中有序集成员按分数值递减(从大到小)排序
    • 排名以 0 为底,也就是说, 分数值最大的成员排名为 0 
    • 使用 zrank 命令可以获得成员按分数值递增(从小到大)排列的排名
  • ​​​​​​​
  • zrevrange【返回有序集中,指定区间内的成员】【相当于倒序输出】
    • ​​​​​​​其中成员的位置按分数值递减(从大到小)来排列
    • 具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列
    • 除了成员按分数值递减的次序排列这一点外, zrevrange 命令的其他方面和 zrange 命令一样
  • zrevrangebyscore【返回有序集中指定分数区间内的所有的成员】
    • ​​​​​​​有序集成员按分数值递减(从大到小)的次序排列
    • 具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列
    • 除了成员按分数值递减的次序排列这一点外, zrevrangebyscore命令的其他方面和zrangebyscore 命令一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值