美文网首页
Redis__命令大全__2018-08版

Redis__命令大全__2018-08版

作者: 小懒豆 | 来源:发表于2018-05-29 19:57 被阅读11次

    为方便查阅,一篇文章介绍全部的命令,14类

    1 2 3 4 5 6 7
    Strings Lists Sets Hashes Sorted Sets Pub/Sub Connection
    8 9 10 11 12 13 14
    Server Scripting Keys HyperLogLog Geo Transactions(事务) Cluster(集群)

    Strings

    • 基本字符串命令
    • 字符串在长度小于 1M 之前,扩容空间采用加倍策略,也就是保留 100% 的冗余空间。当长度超过 1M 之后,为了避免加倍后的冗余空间过大而导致浪费,每次扩容只会多分配 1M 大小的冗余空间。
    命令 描述 语法
    Set 指定键设置任意值。存在则覆盖
    XX :只在键已经存在时,才对键进行设置操作。
    NX :只在键不存在时,才对键进行设置操作
    Set key value [EX seconds] [PX milliseconds] [NX|XX]
    SetNX Set if Not eXists SetNX key value
    SetEX 指定键设置任意值,生存时间以秒为单位 SetEX key seconds value
    PSetEX 指定键设置任意值,生存时间以毫秒为单位 PSetEX key milliseconds value
    MSet 指多个定键设置任意值。存在则覆盖,操作具有原子性 MSet key value [key value ...]
    MSetNX 指多个定键设置任意值,不允许指定键已存在,原子操作 MSetNX key value [key value ...]
    Get 返回指定键的字符串值,不存在返回nil,不是字符串则报错 Get key
    MGet 同Get,只是可以指定多个键 MGet key [key ...]
    Del 删除指定键,还可以删除其他类型的值 Del key [key ...]
    StrLen 获取指定键的值为字符串的长度,非字符串则报错 StrLen key
    • 修改字符串命令
    命令 描述 语法
    Append 追加字符串,不存在建立 Append key value
    GetRange 的到指定范围字符串的子串,start和end可以为负 GetRange key start end
    GetSet 得到旧值,设置新值,不存在返回nil,与Incr命令配合进行计数功能 GetSet key value
    SetRange 替换指定字符串的一部分,offset超过原长度时,则补0 SetRange key offset value
    • 修改数字值命令,以下命令键不存在时先赋值0,再操作
    命令 描述 语法
    Decr 减一 Decr key
    DecrBy 减指定数,可以为负 DecrBy key decrement
    Incr 加一 Incr key
    IncrBy 加指定数,可以为负 IncrBy key decrement
    IncrByFloat 对浮点数加指定值 IncrByFloat key decrement
    • 位图命令
    命令 描述 语法
    SetBit 设置或者清空指定位置的Bit值 SetBit
    GetBit 获取指定位置的Bit值 GetBit
    BitCount 统计字符串指定起始位置为1比特的位数 BitCount key [start end]
    BItPos 获取字符串里第一个被设置为1Bit或者0Bit的位置 BItPos
    Bitop 对一个或者多个二进制位进行位运算 Bitop
    BitField 对指定的字符串进行位数组寻址,位值自增自减操作 BitField

    Lists

    • Redis 的列表相当于 Java 语言里面的 LinkedList,注意它是链表而不是数组。这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n),这点让人非常意外。
    命令 描述 语法
    LPush 左边插入一个或者多个值,不存在则先创建 Push key value [value ...]
    RPush 右边插入一个或者多个值 RPush key value [value ...]
    LPop 左边读出并且删除一个元素,不存在返回nil LPop key
    RPop 右边读出并且删除一个元素,不存在返回nil RPop key
    LIndex 通过下标获取一个元素值,index可以为负 LIndex key index
    LRem 列表删除指定元素,count可以为负,返回值为删除的个数 LRem key count value
    LRange 获取指定范围列表元素,start和stop可以为负 LRange key start stop
    LLen 获取元素个数 LLen key
    LSet 设置列表指定位置的元素值 LSet key index value
    LTrim 对指定列表范围的元素进行修剪,保留start和stop之间的值,删除其他,可以为负 LTrim key start stop
    LInsert 在指定位置插入一个新元素 LInsert key Before|After pivot value
    LPushX 只有列表存在时,从左边插入元素,返回列表长度 LPushX key value
    RPopLPush 删除source右面最后一个元素,并追加到destination左边 RPopLPush source destination
    RPushX 只有列表存在时,从右边插入元素 RPushX key value
    BLPop 阻塞式LPop,timeout=0时为无过期时间 BLPop key [key ...] timeout
    BRPop 阻塞式RPop BRPop key [key ...] timeout
    BRPopLPush 阻塞式BRPopLPush BRPopLPush source destination timeout
    • LInsert Before指定元素之前插入,After指定元素之后插入。pivot为列表里面指定的值,key不存在时命令不指定,插入成功返回列表长度,pivot不存在时返回-1

    Hashes

    基本操作
    命令 描述 语法
    HSet 插入一个键值对,存在则重写 HSet key field value
    HGet 返回指定键的一个值 HGet key field
    HMSet 插入一个或者多个键值对 HMSet key field value [field value ...]
    HMGet 返回指定键的一个或者多个值 HMGet key field [field ...]
    HGetAll 返回所有的键值对,键值对作为数组元素奇偶排列 HGetAll key
    HExists 返回是否存在指定的标志 HExists key field
    HDel 删除指定键值对 HDel key field [field ...]
    HLen 包含的键值对数量 HLen key
    HSetNX 仅对指定散列表的新键设置值,已存在时无操作 HSetNX key field value
    HStrLen 返回散列表指定键的字符串长度 HStrLen key field
    HVals 返回散列表所有的键的值 HVals key
    HIncrBy 对散列表指定的键的整型值进行增量操作,不存在时先赋0,再操作 HIncrBy key field increment
    HIncrByFloat 对散列表指定的键的浮点型值进行增量操作,不存在时先赋0,再操作 HIncrByFloat key field increment
    HKeys 返回指定散列表表的所有键名 HKeys key
    HScan 增量迭代返回列表中的指定键值对 同SScan

    Sets

    • Redis 的集合相当于 Java 语言里面的 HashSet,它内部的键值对是无序的唯一的。它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值NULL。
    基本命令
    命令 描述 语法
    SAdd 添加一个或者多个元素到集合,存在则忽略添加 SAdd Key member [member ...]
    SMembers 返回集合的所有元素 SMembers Key
    SRem 删除集合中指定的元素,不存在则忽略 SRem key member [member ...]
    SCard 返回集合中元素数量 SCard key
    SRandMember 从集合中随机返回一个或者多个元素 SRandMember key [count]
    SMove 把集合中一个元素移动到另外一个集合,原集合不存在则忽略,目标集合存在则只删除源集合 SMove source destination member
    SPop 从集合中随机删除并返回一个或者多个元素 SPop key [count]
    SIsMember 集合成员是否存在,存在返回1,否则为0 SIsMember key member
    SScan 增量迭代返回集合元素 SScan key cursor [MATCH patttern] [COUNT count]
    • SRandMember count < 0 并且绝对值大于全部个数则返回值里面会出现一个元素多次出现情况,key不存在返回nil
    • SScan和SMembers:SScan和SMembers在高并发大集合时存在性能问题,SScan可以避免,但是SScan存在时效性,元素返回多次的可能,每次最多返回十几个元素
    合并交差
    命令 描述 语法
    SUnion 并,不重复 SUnion key [key ...]
    SUnionStore 带存储的并 SUnionStore destination key [key ...]
    SInter SInter key [key ...]
    SInterStore 带存储的交 SInterStore destination key [key ...]
    SDiff 差集,前面key减去后面的key SDiff key [key ...]
    SDiffStore 带存储的差集 SDiff destination key [key ...]

    ZSets

    • zset 可能是 Redis 提供的最为特色的数据结构,它也是在面试中面试官最爱问的数据结构。它类似于 Java 的 SortedSet 和 HashMap 的结合体,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。...
    命令 描述 语法
    ZAdd 有序集合添加键值对 ZAdd key [NX|XX] [CH] [INCR] score member [score member ...]
    ZRange 返回指定范围有序集合的键或键值对 ZRange key start stop [WRRHSCORES]
    ZCount 返回有序集合指定值范围的个数 ZCount key min max
    ZRem 删除有序集合指定键值对 ZRem key member [member ...]
    ZCard 返回有序集合键值对个数 ZCard key
    ZIncrBy 对有序集合指定键的值进行增量操作 ZIncrBy key increment member
    ZLexCount 返回有序集合指定键范围的个数 ZLexCount min max
    ZScore 返回游戏集合指定键对应的值 ZScore key member
    ZRank 返回有序集合指定值排名序号 ZRank key member
    ZUnionStore 带存储功能的多有序集合并运算 ZUnionStore destination key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]
    ZinterStore 带存储功能的多有序集合交运算 ZinterStore destination key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]
    ZremRangeByLex 在同值情况下,删除指定范围的键值对 ZremRangeByLex key min max
    ZrangeByLex 在同值情况下,返回指定范围的键值对 ZrangeByLex key min max [LIMIT offset count]
    ZrangeByScore 返回指定范围有序集的键或键值对列表 ZrangeByScore key min max [WITHSCORES] [LIMIT offset count]
    ZremRangeByScore 删除指定大小范围的键值对 ZremRangeByScore key min max
    ZremRangeByRank 删除指定小标范围的键值对 ZremRangeByRank
    ZrevRange 返回指定值下标范围的固定排序键或键值对列表 ZrevRange key start stop [WITHSCORES]
    ZrevRangeByLex 同值情况下返回指定键范围倒序键或键值对列表 ZrevRangeByLex key max min [WITHSCORES] [LIMIT offset count]
    ZrevRangeByScore 返回指定大小范围的固定排序键或键值对列表 ZrevRangeByScore key max min [WITHSCORES] [LIMIT offset count]
    ZrevRank 返回指定键在有序集合的排名 ZrevRankkey member
    ZScan 增量迭代返回所有有序集合中的键值对列表 ZScan cursor [MATCH pattern] [COUNT count]

    HyperLogLog

    命令 描述 语法
    PFAdd 添加到HyperLogLog PFAdd key element [element ...]
    PFCount 返回指定key的近似基数 PFCount key [key ...]
    PFMerge 将多个添加到HyperLogLog合并成一个 PFMerge destkey sourcekey [sourcekey ...]
    • pf 的内存占用为12k

    GeoHash

    命令 描述 语法
    GEOAdd 将指定的空间元素添加到指定的key里,返回新添加的元素个数,不包括更新的元素个数 GEOAdd key longitude latitude member [longitude latitude member ...]
    GEODist 返回指定位置之间的距离,unit为返回的距离单位(m,km,mi,ft) GEODist key member1 member2 [unit]
    GEOHash 返回一个标准的地理空间GEOHash字符串 GEOHash key member member2 [member ...]
    GEOPos 返回地理空间的经纬度 GEOPos key member [member ...]
    GEORadius 查询指定半径内所有的地理空间元素的集合 GEORadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]
    GEORadiusByMember 查询指定半径匹配到的地理空间元素 GEORadiusByMember key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

    GEORadius

    • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
    • WITHCOORD: 将位置元素的经度和维度也一并返回。
    • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
    • ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。
    • DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。

    Pub/Sub

    命令 描述 语法
    Publish 发布信息到指定频道,channel频道名,返回值为收到消息的客户端数量 Publish channel message
    Subscribe 订阅指定频道信息 Publish channel [channel ...]
    PSubscribe 订阅指定模式的频道信息 PSubscribe pattern [pattern ...]
    PunSubscribe 退订指定模式,并返回相关信息 PunSubscribe pattern [pattern ...]
    UnSubscribe 退订指定频道信息 UnSubscribe channel [channel ...]
    PubSub 统计Pub/Sub子系统状态的数量 subcommand [argument [argument ...]]
    • Pub/Sub的缺点就是客户端一放下线,下线后信息无法继续接收,部分信息丢失
    • PubSub subcommand为子命令,包括Channels、NumSub、NumPat。argument为对应参数
      PubSub Channels [pattern] 累出当前活动的频道,活跃为有至少一个订阅者
      PubSub NumSub [channel ...] 返回指定频道的订阅数量
      PubSub NumPat 返回指定模式的订阅数量

    Connection(连接命令)

    命令 描述 语法
    Auth 验证 Auth password
    Echo 客户端返回输入的字符串 Echo message
    Ping 测试连通性 Ping 字符串
    Quit 关闭连接 Quit
    Select 选择一个数据库,下标值从0开始,一个新连接默认连接的数据库是DB0。 Select index

    Server

    命令 描述 语法
    Client List 获得客户端连接信息及其数量列表 Client List
    Client SetName 设置当前链接的名称 Client SetName name
    Client GetName 获取当前列表的名称 Client GetName
    Client Kill 关闭客户端链接 Client Kill [ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]
    Client Pause 暂停处理客户端请求,timeout为暂停的时间 Client Pause timeout
    Command 返回redis所有命令 Command
    Command Cound 统计redis所有命令总数 Command Cound
    Command GetKeys 获得指定命令的所有键 Command GetKeys
    Command Info 获得指定命令的详细使用信息 Command Info command-name [command-name ...]
    Config Get 获取服务器端配置文件参数的值,paramenter为radis配置文件里的参数名 Config Get paramenter
    Config ResetStat 复位再分配使用Info命令报告的统计 Config ResetStat
    Config Set 设置配置文件中的指定参数的值 Config Set paramenter value
    Config Rewrite 重写内存中的配置文件 Config Rewrite
    BGRewriterAof 异步重写追加文件命令 BGRewriterAof
    BGRSave 异步保存数据集到磁盘上 BGRSave
    LastSave 获得最后一次同步磁盘的时间 LastSave
    Save 同步数据到磁盘上 Save
    DBSize 返回数据库实例里数据存储对象个数 DBSize
    Debug Object 数据存储对象调试命令 Debug Object key
    Debug SegFault 让Redis崩溃 Debug SegFault
    FlushAll 删除所有数据库所有数据 FlushAll
    FlushDB 删除当前数据库所有数据 FlushDB
    Iofo 返回redis服务器的各种信息和统计数据 Iofo [section]
    Monitor 持续返回服务器端处理的每条命令信息 Monitor
    Role 返回主从实例所属的角色 Role
    ShutDown 异步保存数据到磁盘,并关闭服务器Redis ShutDown [NOSAVE] [SAVE]
    SlaveOf 将当前服务器转变为指定服务器的从属服务器 SlaveOf host port
    SlowLog 管理Redis的慢速记录日志 SlowLog subcommang [argument]
    SYNC 用于复制功能的内部命令 SYNC
    Time 返回当前服务器时间 Time
    • Client List
    • Client Kill:[ip:port]指定客户端ip、端口号;[ID client-id]指定的客户端唯一id;TYPE指定一种特殊类型的客户端;[ADDR ip:port]为指定客户端ip、端口;SKIPME选择一种开关

    Scripting(脚本命令)

    命令 描述 语法
    EVal 执行Lua脚本,numkeys为key的个数,key拜师在脚本中用到的键 EVal script numkeys key [key ...] arg [arg ...]
    EValSha 根据给定的校验码,执行服务器端Lua脚本命令 EValSha sha1 numkeys key [key ...] arg [arg ...]
    Script Load 把Lua脚本代码加载到服务缓存上,并不执行 Script Load script
    Script Flush 从脚本缓存中移除所有脚本 Script Flush
    Script Exists 查看指定的脚本是否已经被保存到缓存中 Script Exists script [script ...]
    Script Kill 终止当前正在运行的Lua脚本 Script Kill

    Keys(键命令)

    命令 描述 语法
    Del 删除key指定的数据存储对象 Del key [key ...]
    Dump 序列化给定的key Dump key
    Exists 检查指定key是否存在 Exists key [key ...]
    Expire 设置key的过期时间,秒 Expire key seconds
    ExpireAt 设置key的过期时间,秒用时间戳 ExpireAt key timestamp
    keys 查找所有符合模式的key keys pattern
    Migrate 原子性的的把当前的key转移到指定数据库(可指定服务器)COPY为保留当前数据,REPLACE是否替换目标数据库中的key Migrate host port key destinatoon-db timeout [COPY] [REPLACE]
    Move 将当前数据库的key转移到指定数据库内(本机中) Move key db
    Object 以内部调试方式给出key的内部信息 Object subcommand [arguments [arguments ...]]
    Persist 移除key的过期时间 Persist key
    PExpire 设置key的过期时间,毫秒 PExpire key milliseconds
    PExpireAt 设置key的过期时间,毫秒用时间戳 PExpireAt key milliseconds-timestamp
    RandomKey 从数据库随机返回一个key RandomKey
    Rename 将指定key重命名,允许重复key Rename key newkey
    RenameNX 将指定key重命名不存在的key RenameNX key newkey
    Restore 反序列化指定key Restore key ttl serialized-value [REPLACE]
    Scan 增量迭代返回当前数据库中key的数组列表 Scan cursor [MATCH pattern] [COUNT count]
    Sort 对指定key对象进行排序并返回或者保存到目标key Sort key [BY pattern] [LIMIT offset count] [GET pattern] [ASC|DESC] [ALPHA] STORE destination
    TTL 秒返回key的剩余生存时间 TTL key
    PTTL 毫秒返回key的剩余生存时间 PTTL key
    Type 返回当前key的数据结构类型 Type key
    Wait 阻塞当前客户端到指定从服务器端的写操作 Wait numslaves timeout
    • 序列化生成的值有以下几个特点:

      • 它带有 64 位的校验和,用于检测错误,RESTORE 在进行反序列化之前会先检查校验和。
      • 值的编码格式和 RDB 文件保持一致。
      • RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 会拒绝对这个值进行反序列化操作。
      • 序列化的值不包括任何生存时间信息
    • Migrate COPY为保留当前数据,REPLACE是否替换目标数据库中的key

    Transactions(事务)

    命令 描述 语法
    Multi 标记一个事务块的开始 Multi
    Exec 执行所有事务块内的命令 Exec
    Discard 取消事务 Discard
    Watch 监事一个或者多个key Watch key [key ...]
    UnWatch 取消WATCH命令对所有key的监视 Un Watch
    • Redis 的事务根本不能算「原子性」,而仅仅是满足了事务的「隔离性」,隔离性中的串行化——当前执行的事务有着不被其它事务打断的权利。
    • watch 会在事务开始之前盯住 1 个或多个关键变量,当事务执行时,也就是服务器收到了 exec 指令要顺序执行缓存的事务队列时,Redis 会检查关键变量自 watch 之后,是否被修改了 (包括当前事务所在的客户端)。如果关键变量被人动过了,exec 指令就会返回 null 回复告知客户端事务执行失败,这个时候客户端一般会选择重试。...
    • Redis 禁止在 multi 和 exec 之间执行 watch 指令,而必须在 multi 之前做好盯住关键变量,否则会出错。

    Cluster(集群)

    • Hash Slots:Redis数据分片
    • Node:节点
    • Gossip:Redis节点之间通信协议
    命令 描述 语法
    Cluster Info 获取redis集群相关所有命令 Cluster Info
    Cluster Meet 实现集群节点之间的通信 Cluster Meet ip:port
    Cluster Replicate 把Master节点改成Slave节点 Cluster Replicate node-id
    Cluster nodes 列出当前集群的所有节点 Cluster nodes
    Cluster Forget 移除指定节点 Cluster Forget node-id
    Cluster Reset 重新设置集合节点 Cluster Reset [HARD|SOFT]
    Cluster SaveConfig 将节点的配置文件保存到磁盘 Cluster SaveConfig
    Cluster Set-Config-Epoch 将新节点设置特定的新的配置时间标志 Cluster Set-Config-Epoch config-epoch
    Cluster Slaves 提供为指定主节点相关的从从节点信息列表 Cluster Slaves node-id
    Cluster Count-Failure-Reports 返回指定节点的故障报告数量 Cluster Count-Failure-Reports node-id
    Cluster FailOver 手动从节点变为主节点 Cluster FailOver [FORCE|TAKEOVER]
    ReadOnly 集群吗中的从节点开启只读模式 ReadOnly
    ReadWrite 禁止读取请求跳转到集群的从节点 ReadWrite
    Cluster AddSlots 把Hash插槽分配给街搜命令的服务器节点 Cluster AddSlots slot [slot ...]
    Cluster SetSlot 设置节点的插槽信息 Cluster SetSlot slot IMPORTING|MIGRATING|STABLE|NODE [node-id]
    Cluster GetKeysSinslot 返回链接节点指定Hash Slot 里的key Cluster GetKeysSinslot slot count
    Cluster DelSlots 删除当前节点的指定插槽 Cluster DelSlots slot [slot ...]
    Cluster Slots 返回与插槽相关的节点信息 Cluster Slots
    Cluster KeySlot 计算key应该被放置在那个插槽上 Cluster KeySlot key
    Cluster CountKeySinSlot 返回当前节点指定插槽中键的数量 Cluster CountKeySinSlot key

    相关文章

      网友评论

          本文标题:Redis__命令大全__2018-08版

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