• Redis


    (5种数据结构)命令总结

     

    一丶Keys

      1) 查询key

    • EXISTS key 判断key是否存在
    • TYPE key 查询key对应的类型
    • KEYS pattern 查询匹配表达式的key, 时间复杂度O(1), 在key多时,不建议使用
    • SCAN cursor [MATCH pattern] [COUNT count]
      • 使用游标查询key
      • MATCH key表达式
      • COUNT 命中多少个key后返回, 有时可能比指定个数多一点, 默认是10

      

       2) 删除key

    • DEL key [key ...]  删除key, 包括key对应的值
    • UNLINK key [key ...] 异步删除key, 非阻塞

      3) 修改key名字

    • RENAME key newkey  如果newkey已经存在, 存在的将会被覆盖, 如果key不存在, 将会报错
    • RENAMENX key newkey 只有当newkey不存在时,才会修改key

      4)有效期

      redis常用作缓存, 所以在使用redis存储数据时, 一般会设置有效期

    • EXPIRE key seconds  设置key有效期为指定秒数, 在指定秒数后, 该key将会被自动删除
    • EXPIREAT key timestamp 设置key在指定时间戳(单位秒)时失效
    • PEXPIRE key milliseconds 设置key有效期为指定毫秒数
    • PEXPIREAT key milliseconds  设置key在指定时间戳(单位毫秒)时失效
    • PERSIST key 移除key的有效期设置, 即key永久有效
    • TTL key 查询key的有效期(仍可存活的时间) 单位秒   -1表示未设置有效期, -2表示key不存在
    • PTTL key 查询key的有效期(仍可存活的时间) 单位毫秒  -1表示未设置有效期, -2表示key不存在

      5) 迁移key

     

    二丶Strings

     

      本数据类型为字符串, 可以用于存储数字, 有数字运算操作, 如增加, 位运算.

      1) 增加

    • SET key value [EX seconds|PX milliseconds] [NX|XX]
      • 设置添加一个字符串
      • EX 设置过期时间,单位秒
      • PX 设置过期时间,单位毫秒
      • NX 只有当key不存在时才设置
      • XX 只有当key存在时才设置
    • SETNX key value 添加设置value, 只有当key不存在时才添加
    • MSET key value [key value ...]   批量添加
    • MSETNX key value [key value ...] 批量添加, 只有当key不存在时才添加
    • SETEX key seconds value 添加,同时设置有效期(单位秒)
    • PSETEX key milliseconds value 添加,同时设置有效期(单位毫秒)
    • APPEND key value 追加字符串,如果key不存在,则设置(set key value)

      2)查询

    • GET key  查询value
    • MGET key [key ...]  批量查询value
    • GETRANGE key start end 查询value的子字符串
    • STRLEN key 查询value长度

      3)修改 (可以使用1中操作修改key对应的value)

    • SETRANGE key offset value 替换value中的子字符串   offset 偏移, 起始是0

      4) 数字运算

    • INCR key   值加1
    • INCRBY key increment  值加上指定整数
    • INCRBYFLOAT key increment 值加上指定浮点数
    • DECR key   值减1
    • DECRBY key decrement  值减去指定整数

      5) 位操作

     

    三丶Lists

     

     

       本数据类型是列表,左边是头部, 右边是尾部, 可以理解为双端队列,类似java中的Deque,如LinkedList.

      1) 增加

    • LPUSH key element [element ...]  从队列左边(头部)(批量)添加值
    • LPUSHX key element 从队列左边(头部)添加值, 只有当值存在时才添加(并不会覆盖)
    • RPUSH key element [element ...] 从队列右边(尾部)(批量)添加值
    • RPUSHX key element 从队列右边(尾部)添加值, 只有当值存在时才添加(并不会覆盖)
    • LINSERT key BEFORE|AFTER pivot  element        在指定值"pivot" 前|后 插入值"element"

      2) 查询

    • LINDEX key index  通过下标获取队列中对应的元素 (下标起始是0, 从左边到右边递增) 
      • 从时间复杂度为O(N)可以推断底层实现应该是链表
    • LRANGE key start stop 批量查询,  起始下标是0, -1表示列表最后一个元素, -2表示倒数第二个
    • LLEN key 查询队列的长度

      3) 修改

    • LSET key index element 修改(替换)指定下标的元素

      4) 删除

    • LREM key count element 删除count个值为element的元素
    • LTRIM key start stop  保留[start, stop]下标范围元素的队列, 裁剪去其他  (批量删)
    • LPOP key  删除第一个元素(左边头部), 并返回该元素
    • RPOP key 删除最后一个元素(右边尾部), 并返回该元素
    • BLPOP key timeout 删除第一个元素(左边头部), 并返回该元素, 如果队列为空, 则阻塞等待timeout秒
    • BRPOP key timeout 删除最后一个元素(右边尾部), 并返回该元素, 如果队列为空, 则阻塞等待timeout秒

      5) 其他

    • RPOPLPUSH source destination   将source队列的最后一个元素移除, 并添加到destination队列的头部
    • BRPOPLPUSH source destination timeout   将source队列的最后一个元素移除, 并添加到destination队列的头部, 如果source队列为空, 则阻塞等待timeout秒

    四丶Sets

     

     

    本数据类型是(不重复)集合, 与列表不一样的地方在于, 它没有顺序, 且值不重复, 可以类比java中的Set.

     

     1) 增加

    • SADD key member [member ...] (单个或批量增)

     

    2) 查询

    • SMEMBERS key 获取set中的所有成员
    • SRANDMEMBER key [count] 随机获取set中的一个或者多个成员
    • SSCAN key cursor [MATCH pattern] [COUNT count] 使用游标迭代遍历集合中的元素
    • SCARD key  查询集合中的成员个数
    • SISMEMBER key member 判断member是不是在集合中

     

    3) 删除

    • SREM key member [member ...] 删除指定成员
    • SPOP key [count]  随机删除并返回一个或多个成员

     

    4) 集合与集合之间的运算

    • 交集
      • SINTER key [key ...]
      • SINTERSTORE destination key [key ...] 求出交集, 并保存到目的集合中
    • 并集
      • SUNION key [key ...]
      • SUNIONSTORE destination key [key ...] 求出并集, 并保存到目的集合中
    • 差集
      • SDIFF key [key ...]
      • SDIFFSTORE destination key [key ...] 求出差集, 并保存到目的集合中
    • 其他
      • SMOVE source destination member 从一个集合移除指定成员,并放到指定集合中

     

    五丶Sorted Sets

     

       本数据类型为有序集合,根据数据对(score, member)中的score排序存储, member不重复, 可以类比java中的SortedSet, (用的比较少)

      1) 增加或修改

    •  ZADD key [XX|NX] [CH] [INCR] score member [score member ...]
      • XX 只更新已存在成员的分数, 不添加成员
      • NX 只添加新成员, 不更新已存在成员
      • CH 添加新成员, 如果成员已经存在,则更新分数, 并返回改变的成员数量(包括添加的和修改分数的)
      • INCR 和命令ZINCRBY类似, 用于"增加"修改分数

      2) 查询

    2.1) 查询成员

    • ZRANGE start stop [WITHSCORES]
      • 排序集合, 根据分数从低到高排序,  zrange命令指定下标范围返回对应的值
      • WITHSCORES 返回时,带上分数
    • ZREVRANGE start stop [WITHSCORES]
      • 排序集合, 根据分数从高到低排序, zrevrange命令指定下表范围返回对应的值
      • WITHSCORES 返回时,带上分数
    • ZRANGEBYLEX key min max [LIMIT offset count]
      • 分数相同是前提, 分数相同的成员字典排序(如abcd) 
      • 对分数相同的成员进行范围查询
      • 默认情况下, “max” 和 “min” 参数前必须加 “[” 符号作为开头。”[” 符号与成员之间不能有空格, 返回成员结果集会包含参数 “min” 和 “max” 。
      • “max” 和 “min” 参数前可以加 “(“ 符号作为开头表示小于, “(“ 符号与成员之间不能有空格。返回成员结果集不会包含 “max” 和 “min” 成员。
      • 可以使用 “-“ 和 “+” 表示得分最小值和最大值
      • LIMIT 分页查询
    •  ZREVRANGEBYLEX key min max [LIMIT offset count]
      • 与上面命令类似, 只是排序相反

     

    • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
      • 根据分数范围查询成员, (默认是分数从低到高排序)
      • min, max  如 1 5,  查询结果将会包含最大最小值, 如果想排除, 数字前面可以加(
      • -inf +inf 可以表示最小最大值
      • WITHSCORES 返回时,带上分数
      • LIMIT 分页查询
    • ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
      • 与上面命令类似, 只是排序相反

     

     

     
     

    2.2) 查询排名和分数

    • ZRANK key member   查询指定成员对应的排名(下标, 起始是0, 分数从低到高)
    • ZREVRANK key member  与上面命令类似, 只是排序相反
    • ZSCORE key member  查询指定成员的分数

     

     

    2.3) 统计

    • ZCARD key  统计集合中成员的个数
    • ZCOUNT key min max   统计分数范围内的成员个数,     min, max 可以参考ZRANGEBYSCORE
    • ZLEXCOUNT key min max  当所有分数都相同时使用, 这种情况下, 会根据member字典排序,  统计member在min,max范围的个数,    min,max可以参考ZRANGEBYLEX

     

      3) 删除

    • ZPOPMIN key [count] 删除一个或多个最小分数的值, 并返回对应的成员和分数
    • ZPOPMAX key [count] 删除一个或多个最大分数的值, 并返回对应的成员和分数
    • BZPOPMIN key [key ...] timeout 删除一个或多个最小分数的值, 并返回对应的成员和分数, 如果没有,则阻塞等待指定秒数
    • BZPOPMAX key [key ...] timeout 删除一个或多个最大分数的值, 并返回对应的成员和分数, 如果没有,则阻塞等待指定秒数
       
    • ZREM key member [member ...] 删除指定成员
    • ZREMRANGEBYLEX key min max  当所有分数都相同时使用, 这种情况下, 会根据member字典排序,  删除在min,max范围的member,    min,max可以参考ZRANGEBYLEX
    • ZREMRANGEBYRANK key min max   删除排名(下标)范围内的成员,     min, max  起始下标是0, -1表示列表最后一个元素, -2表示倒数第二个
    • ZREMRANGEBYSCORE key min max     删除分数范围内的成员,     min, max 可以参考ZRANGEBYSCORE

    4) 集合之间的运算

    • ZINTERSTORE destination key [key ...]    求交集并存储到destination
    • ZUNIONSTORE destination key [key ...]    求并集并存储到destination

     

    5) 分数运算

    • ZINCRBY key increment member  给指定成员增加指定分数

     

     

     

     

    六丶Hashes

     

      本数据类型为哈希, 可以类比java中的HashMap

      1) 增加或修改

    • HSET key field value  在key添加哈希键值对,  field value,  类似java中, HashMap.put(field, value)
    • HMSET key field value [field value ...] 批量加
    • HSETNX key field value 只有当field不存在时才添加

      2) 查询

    • HGET key field  
    • HMGET key field [field ...] 批量查
    • HGETALL key 查询所有
    • HSCAN key cursor [MATCH pattern] [COUNT count] 使用游标查询
    • HKEYS key 查询所有field
    • HVALS key 查询所有values
    • HEXISTS key field 判断field是否存在
    • HLEN key 查询键值对的个数
    • HSTRLEN key field  查询field对应value的字符长度

      3) 删除

    • HDEL key field [field ...] 删除一个或多个field

      4) 运算

    • HINCRBY key field increment 值为整数时, 增加指定值
    • HINCRBYFLOAT key field increment 值为浮点数时, 增加指定值

     

     七丶后记

      虽说后台总被嘲讽CRUD, 但"增删查改"确实是学习数据相关的技术的菩提总纲, 精辟

     

     

     

     学习资料:

      官方文档

     

     

     

     

     

    人生没有彩排,每一天都是现场直播
  • 相关阅读:
    js 数组相减
    js 对象数组去重
    vue 首次不触发watch的解决方法
    "神药"推荐--紫花地丁
    openstack 平台添加 nvidia vGPU
    string易错点整理总结
    CentOS安装图形界面
    CentOs安装ssh和scp
    数组把0移到末尾
    Windows下Celery安装与下使用
  • 原文地址:https://www.cnblogs.com/timfruit/p/12094251.html
Copyright © 2020-2023  润新知