Redis数据结构及常用API

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/love905661433/article/details/82011199

字符串

使用场景

  • 缓存
  • 分布式锁
  • 计数器

常用命令

  • get key : 获取key对应的value
  • set key value : 设置key-value,

    set key value : 不管key存不存在都进行设置
    setnx key value : key不存在,才设置
    set key value xx : key存在,才设置

  • del key : 删除key-value

  • incr key : key自增1,如果key不存在,自增后get(key)=1,仅用于整数
  • decr key : key自减1,如果key不存在,自减后get(key)=-1,仅用于整数
  • incrby key k : key自增k,如果key不存在,自增后get(key)=k,仅用于整数
  • decrby key k : key自减1,如果key不存在,自减后get(key)=-k,仅用于整数
  • mget key1 key2 key3… : 批量获取key,原子操作
  • mset key1 value1 key2 value2… : 批量设置key-value

其他命令

  • getset key newvalue : set key newvalue并返回旧的value
  • append key value : 将value追加到旧的value
  • strlen key : 返回字符串长度(注意中文)
  • incrbyfloat key 3.5 : 增加key对应的值3.5,自减传负值实现
  • getrange key start end : 获取字符串指定下标所有的值
  • setrange key index value : 设置指定下标所有对应的值

哈希(hash)

特点

key field-value
key-value, value是个map

常用命令

  • hget key field : 获取hash key对应的field的value
  • hset key field value(可多个) : 设置hash key对应的field的value
  • hsetnx key field value : 设置hash key对应field的value(如field已经存在,则失败)
  • hdel key field : 删除hash key对应的field的value
  • hexists key field : 判断hash key是否有field
  • hlen key 获取hash key field的数量
  • hmget key field1 field2…fieldn : 批量获取hash key的一批field对应的值
  • hmset key field1 value1 field2 value2…fieldn valuen : 批量设置hash key的一批field value
  • hincrby key field intCounter : hash key对应的field的value自增intCounter
  • hincrbyfloat key field floatCounter : hincrby浮点数版本
  • hgetall key : 返还hash key对应所有的field和value
  • hvals key : 返回hash key对应所有field的value
  • hkeys key : 返回hash key对应所有的field

列表

特点

  • 有序
  • 可重复
  • 左右两边进行弹出

常用命令

  • rpush key value1 value2…valueN : 从列表右端插入值(1-N个)
  • lpush key value1 value2…valueN : 从列表左端插入值(1-N个)
  • linsert key before|after value newValue : 在list指定的值前|后插入newValue
  • lpop key : 从列表左侧弹出一个item
  • rpop key : 从列表右侧弹出一个item
  • lrem key count value : 根据count值,从列表中删除所有value相等的项

    count>0,从左到右,删除最多count个value相等的项
    count<0,从右到左,删除最多Math.abs(count)个value相等的项
    count=0,删除所有与value相等的项

  • ltrim key start end : 按照索引范围修剪列表

  • lrange key start end(包含end) : 获取指定列表索引范围所有item
  • lindex key index : 获取列表指定索引的item
  • llen key : 获取列表长度
  • lset key index newValue : 设置列表指定索引值为newValue

其他命令

  • blpop key timeout : lpop的阻塞版本,timeout是阻塞超时时间,timeout=0位永远不阻塞
  • brpop key timeout : rpop的阻塞版本,timeout是阻塞超时时间,timeout=0位永远不阻塞

Tips

  • lpush + lpop = Stack
  • lpush + rpop = Queue
  • lpush + ltrim = Capped Collection
  • lpush + brpop = Message Queue

集合(Set)

特点

  • 无序
  • 不重复
  • 支持集合间操作

常用命令

  • sadd key element(可多个) : 向集合key添加element(如果element已经存在,添加失败)
  • srem key element(可多个) : 将集合key中的element移除掉
  • scard key : 计算集合大小
  • sismembber key item : 判读item是否在key对应的集合中
  • srandmember key count : 从集合中随机挑选count个元素(不会破坏集合)
  • spop key : 从集合中随机弹出一个元素

    集合中弹出,弹出之后集合中该元素就被删除了

  • smembers key : 获取集合所有元素

    集合元素数量较多的时候 慎用

  • sdiff key1 key2 : 差集,key1中存在,key2中不存在的元素,以key1中元素为主
  • sinter key1 key2 : 交集
  • sunion key1 key2 : 并集
  • sdiff |sinter |sunion + store destkey : 将差集|交集 | 并集结果保存到destkey中
    sdiffstore destkey key1 key2
    sinter store destkey key1 key2
    sunionstore destkey key1 key2

Tips

  • sadd = Tagging
  • spop/srandmember = Random item
  • sadd + sinter = Social Graph

有序集合(zset)

特点

  • 无重复元素
  • key value score

常用命令

  • zadd key score element(可以是多对) : 添加score 和element
  • zrem key element(可以多个) : 删除元素
  • zscore key element : 返回元素的分数
  • zincrby key incrScore element : 增加或减少元素的分数
  • zcard key : 返回集合元素总个数
  • zrank key element : 获取元素element的排名
  • zrange key start end : 返回指定索引范围内的升序元素(分值)
  • zrangebyscore key minScore maxScore : 返回指定分数范围内的升序元素(分值)
  • zcount key minScore maxScore : 返回有序集合内在指定分数范围内的个数
  • zremrangebyrank key start end : 删除指定排名内的升序元素
  • zremrangebyscore key minScore maxScore : 删除指定分数内的升序元素

猜你喜欢

转载自blog.csdn.net/love905661433/article/details/82011199