美文网首页
Redis数据结构和相应操作

Redis数据结构和相应操作

作者: hbhey | 来源:发表于2020-04-16 15:59 被阅读0次

    Redis通用操作

    1. Keys [pattern] # 遍历出指定模式的key,可使用 , ?等通配符 - 一般不在生产环境中使用,O(n)
        Keys
      # 遍历出所有key
      Keys he[h-l]* # 遍历以 he 开头,第三个字符在 h-l 期间的匹配key
    2. dbsize # 计算 key 的总数,O(1)
    3. exists key # 检查 key 是否存在,O(1)级别时间复杂度
    4. del key # 删除指定 key ,O(1)
    5. expire key seconds # key在 seconds 秒后过期 ,O(1)
    6. ttl key # 查看 key 剩余过期时间 -1 表达无过期时间 -2表示已过期,O(1)
    7. persist key # 去掉 key 的过期时间 ,O(1)
    8. type key # 返回 key 的类型 ,O(1)

    String类型

    String键值结构

    String数据结构.png

    操作

    1. get key # 获取 key 对应value ,O(1)
    2. set key value # 设置 key-value ,已有相同 key 值,则进行覆盖,O(1)
    3. setnx key value # 设置 key-value ,key 不存在,才进行设置,O(1)
    4. set key value xx # 设置 key-value ,key 存在,才进行设置,O(1)
    5. del key # 删除 key-value ,O(1)
    6. incr key # key 自增1, 如果key不存在,自增都get(key)=1 ,O(1)
    7. decr key # key 自减1, 如果key不存在,自减都get(key)=-1 ,O(1)
    8. incrby key k # key 自增k, 如果key不存在,自增都get(key)=k ,O(1)
    9. decrby key k # key 自减k, 如果key不存在,自减都get(key)=-k,O(1)
    10. mget key1 key2 key3… # 批量获取key,原子操作,O(n)
    11. mset key1 value1 key2 value2 key3 value3… # 批量设置key-value,原子操作,O(n)
    12. getset key newvalue # set key newvalue并返回 oldvalue,O(1)
    13. append key value # 将 value 将追加到 oldvalue,O(1)
    14. strlen key # 返回字符串长度(注意中文) ,O(1)
    15. incrbyfloat key floatValue # 增加key 对应的值 ,O(1)
    16. getrange key start end # 获取字符串指定下标的所有值 ,O(1)
    17. setrange key index value # 设置指定下标对应的值 ,O(1)

    Hash类型

    Hash键值结构

    Hash数据结构.png

    注: field不能相同,value可以相同

    操作

    1. hget key field # 获取 hash key 对应field 的 value ,O(1)
    2. hset key field value # 设置 hash key 对应field 的 value ,O(1)
    3. hdel key field # 删除 hash key 对应field 的 value ,O(1)
    4. hexists key field # 判断 hash key 是否有对应 field ,O(1)
    5. hlen key # 获取 hash key 的 field 数量,O(1)
    6. hmget key field1 field2… # 批量获取hash-key的一批 field 对应值,O(n)
    7. hmset key field1 value1 field2 value2… # 批量设置 hash-key的一批 field 对应值,O(n)
    8. hgetall key # 返回 hash-key 对应所有的 field-value 值,O(n)
    9. hvals key # 返回 hash-key 对应所有 field 的 value 值,O(n)
    10. hkeys key # 返回 hash-key 对应所有 field ,O(n)
    11. hincrby key field k # key field 自增 k ,如果key不存在,自增都hget(key, field)=k ,O(1)
    12. hincrbyfloat key field k # key field 自增 k ,如果key不存在,自增都hget(key, field)=k ,O(1)
    13. hsetnx key field value # 设置 hash key对应 field的 value ,field 不存在,才进行设置,O(1)

    List类型

    List键值结构

    List数据结构.png

    注: 有序(由插入顺序决定遍历顺序),可以重复,左右两边插入弹出

    操作

    1. rpush key value1 value2… # 从列表的右端插入值 ,O(1~n)
    2. lpush key value1 value2… # 从列表的左端插入值 ,O(1~n)
    3. linsert key before/after value newvalue # 在list指定的值前|后插入新值,O(n)
    4. lpop key # 从列表的左端弹出一个值(删除) ,O(1)
    5. rpop key # 从列表的右端弹出一个值(删除) ,O(1)
    6. lrem key count value # 根据 count 值,从列表中删除所有 value 相等的项 ,O(n)
      • count > 0 , 从左到右,删除最多 count 个 value 相等的项目
      • count < 0 , 从右到左,删除最多 Math.abs(count) 个 value 相等的项目
      • count = 0 , 删除所有 value 相等的项目
    7. ltrim key start end # 按照索引范围(索引从 0 开始 ,-1 表示最后一个元素)修剪列表 ,O(n)
    8. lrange key start end # 获取列表指定索引范围(索引从 0 开始,-1 表示最后一个元素,包括 end )的值 ,O(n)
      • lrange list 0 5 = lrange list -6 -1 = lrange list 0 -1
    9. lindex key index # 获取列表指定索引的值 ,O(n)
    10. llen key # 获取列表长度 ,O(1)
    11. lset key index newValue # 设置列表指定索引的值 ,O(n)
    12. blpop key timeout # lpop 阻塞版本,timeout 是阻塞超时时间,为0 表示永不超时 ,O(1)
    13. rlpop key timeout # rpop 阻塞版本,timeout 是阻塞超时时间,为0 表示永不超时 ,O(1)

    Set类型

    Set键值结构

    Set数据结构.png

    注: 无序(顺序不由插入顺序决定),不可重复,支持集合间的操作

    操作

    1. sadd key value1 value2…. # 向集合 key 中添加元素,若已有重复元素,则添加失败 ,O(n)
    2. srem key value1 value2…. # 移除集合 key 中元素,O(n)
    3. scard key # 计算集合元素个数,O(1)
    4. sismember key value # 判断集合 key 中 value 元素是否存在,O(n)
    5. srandmember key count # 随机从集合 key 中挑选 count 个元素,O(n)
    6. spop key # 随机从集合 key 中挑选 1 个元素,O(1)
    7. smembers key # 获取集合 key 中所有元素,O(n)
    8. sdiff key1 key2 # 两个集合的差集,O(n)
    9. sinter key1 key2 # 两个集合的交集,O(n)
    10. sunion key1 key2 # 两个集合的并集,O(n)
    11. sunionstore/sdiffstore/sinterstore destkey key1 key2 # 并集/差集/交集结果存到 destkey 中,O(n)

    Sorted Set类型

    Sorted Set键值结构

    SortedSet数据结构.png

    注: 有序,不可重复,支持集合间的操作

    操作

    1. zadd key score value score2 value2…. # 向有序集合 key 中添加score value对,value不可重复元素,否则添加失败 ,O(logN)
    2. zrem key value value2…. # 删除有序集合 key 中添加元素 ,O(1)
    3. zscore key value # 获取有序集合 key 中 value 对应的 score ,O(1)
    4. zincrby key increScore value # 增加有序集合 key 中 value 对应的 score 值,O(1)
    5. zcard key # 获取有序集合 key 中 value 个数,O(1)
    6. zrank key value # 获取有序集合 key 中 value 的排名(从低到高),O(1)
    7. zrevrank key value # 获取有序集合 key 中 value 的排名(从高到低),O(1)
    8. zrange key start end [withscores] # 获取有序集合指定索引范围(索引从 0 开始,-1 表示最后一个元素)的值并打印 score - 升序,O(logn + m)
    9. zrevrange key start end [withscores] # 获取有序集合指定索引范围(索引从 0 开始,-1 表示最后一个元素)的值并打印 score - 降序,O(logn + m)
    10. zrangebyscore key minScore maxScore [withscores] # 获取有序集合指定分数范围的值并打印 score - 升序,O(logn + m)
    11. zrevrangebyscore key minScore maxScore [withscores] # 获取有序集合指定分数范围的值并打印 score - 降序,O(logn + m)
    12. zcount key minScore maxScore # 获取有序集合指定分数范围的值的个数 ,O(logn + m)
    13. zremrangebyrank key start end # 删除指定排名内的升序元素,O(logn + m)
    14. zremrangebyscore key minScore maxScore # 删除指定分数范围的升序元素,O(logn + m)

    参考资料

    [1] http://redisdoc.com/
    [2] https://coding.imooc.com/class/151.html

    相关文章

      网友评论

          本文标题:Redis数据结构和相应操作

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