Redis_命令大全

说明

  官网命令:http://www.redis.cn/commands/config-get.html

  Redis_入门学习:https://www.cnblogs.com/chunxiaozhang/p/12718672.html

  Redis_配置文件:https://www.cnblogs.com/chunxiaozhang/p/12718647.html

  Redis_数据使用:https://www.cnblogs.com/chunxiaozhang/p/12718618.html

命令列表

  Redis命令十分丰富,包括的命令组有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、Sorted Sets、Streams、Strings、Transactions一共15个redis命令组两百多个redis命令,以下包含Redis所有命令。

###cluster###
    cluster addslots slot [slot ...]
        assign new hash slots to receiving node
    cluster count-failure-reports node-id
        return the number of failure reports active for a given node
    cluster countkeysinslot slot
        return the number of local keys in the specified hash slot
    cluster delslots slot [slot ...]
        set hash slots as unbound in receiving node
    cluster failover [force|takeover]
        forces a slave to perform a manual failover of its master.
    cluster forget node-id
        remove a node from the nodes table
    cluster getkeysinslot slot count
        return local key names in the specified hash slot
    cluster info
        provides info about redis cluster node state
    cluster keyslot key
        returns the hash slot of the specified key
    cluster meet ip port
        force a node cluster to handshake with another node
    cluster nodes
        get cluster config for the node
    cluster replicas node-id
        list replica nodes of the specified master node
    cluster replicate node-id
        reconfigure a node as a slave of the specified master node
    cluster reset [hard|soft]
        reset a redis cluster node
    cluster saveconfig
        forces the node to save cluster state on disk
    cluster set-config-epoch config-epoch
        set the configuration epoch in a new node
    cluster setslot slot importing|migrating|stable|node [node-id]
        bind an hash slot to a specific node
    cluster slaves node-id
        list slave nodes of the specified master node
    cluster slots
        get array of cluster slot to node mappings
    readonly
        enables read queries for a connection to a cluster slave node
    readwrite
        disables read queries for a connection to a cluster slave node
        
###Connection###        
    auth password
        验证服务器命令
    echo message
        回显输入的字符串
    ping
        ping 服务器
    quit
        关闭连接,退出
    select index
        选择新数据库
    swapdb index index
        swaps two redis databases

###Geo###
    geoadd key longitude latitude member [longitude latitude member ...]
        添加一个或多个地理空间位置到sorted set
    geohash key member [member ...]
        返回一个标准的地理空间的geohash字符串
    geopos key member [member ...]
        返回地理空间的经纬度
    geodist key member1 member2 [unit]
        返回两个地理空间之间的距离
    georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
        查询指定半径内所有的地理空间元素的集合。
    georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
        查询指定半径内匹配到的最大距离的一个地理空间元素。

###Hashes###
    hdel key field [field ...]
        删除一个或多个hash的field
    hexists key field
        判断field是否存在于hash中
    hget key field
        获取hash中field的值
    hgetall key
        从hash中读取全部的域和值
    hincrby key field increment
        将hash中指定域的值增加给定的数字
    hincrbyfloat key field increment
        将hash中指定域的值增加给定的浮点数
    hkeys key
        获取hash的所有字段
    hlen key
        获取hash里所有字段的数量
    hmget key field [field ...]
        获取hash里面指定字段的值
    hmset key field value [field value ...]
        设置hash字段值
    hset key field value
        设置hash里面一个字段的值
    hsetnx key field value
        设置hash的一个字段,只有当这个字段不存在时有效
    hstrlen key field
        获取hash里面指定field的长度
    hvals key
        获得hash的所有值
    hscan key cursor [match pattern] [count count]
        迭代hash里面的元素    

###HyperLogLog###
    pfadd key element [element ...]
        将指定元素添加到hyperloglog
    pfcount key [key ...]
        return the approximated cardinality of the set(s) observed by the hyperloglog at key(s).
    pfmerge destkey sourcekey [sourcekey ...]
        merge n different hyperloglogs into a single one.

###Keys###
    del key [key ...]
        删除指定的key(一个或多个)
    dump key
        导出key的值
    exists key [key ...]
        查询一个key是否存在
    expire key seconds
        设置一个key的过期的秒数
    expireat key timestamp
        设置一个unix时间戳的过期时间
    keys pattern
        查找所有匹配给定的模式的键
    migrate host port key destination-db timeout [copy] [replace]
        原子性的将key从redis的一个实例移到另一个实例
    move key db
        移动一个key到另一个数据库
    object subcommand [arguments [arguments ...]]
        检查内部的再分配对象
    persist key
        移除key的过期时间
    pexpire key milliseconds
        设置key的有效时间以毫秒为单位
    pexpireat key milliseconds-timestamp
        设置key的到期unix时间戳以毫秒为单位
    pttl key
        获取key的有效毫秒数
    randomkey
        返回一个随机的key
    rename key newkey
        将一个key重命名
    renamenx key newkey
        重命名一个key,新的key必须是不存在的key
    restore key ttl serialized-value [replace]
        create a key using the provided serialized value, previously obtained using dump.
    sort key [by pattern] [limit offset count] [get pattern [get pattern ...]] [asc|desc] [alpha] [store destination]
        对队列、集合、有序集合排序
    ttl key
        获取key的有效时间(单位:秒)
    type key
        获取key的存储类型
    wait numslaves timeout
        wait for the synchronous replication of all the write commands sent in the context of the current connection
    scan cursor [match pattern] [count count]
        增量迭代key

###Lists###
    blpop key [key ...] timeout
        删除,并获得该列表中的第一元素,或阻塞,直到有一个可用
    brpop key [key ...] timeout
        删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用
    brpoplpush source destination timeout
        弹出一个列表的值,将它推到另一个列表,并返回它;或阻塞,直到有一个可用
    lindex key index
        获取一个元素,通过其索引列表
    linsert key before|after pivot value
        在列表中的另一个元素之前或之后插入一个元素
    llen key
        获得队列(list)的长度
    lpop key
        从队列的左边出队一个元素
    lpush key value [value ...]
        从队列的左边入队一个或多个元素
    lpushx key value
        当队列存在时,从队到左边入队一个元素
    lrange key start stop
        从列表中获取指定返回的元素
    lrem key count value
        从列表中删除元素
    lset key index value
        设置队列里面一个元素的值
    ltrim key start stop
        修剪到指定范围内的清单
    rpop key
        从队列的右边出队一个元
    rpoplpush source destination
        删除列表中的最后一个元素,将其追加到另一个列表
    rpush key value [value ...]
        从队列的右边入队一个元素
    rpushx key value
        从队列的右边入队一个元素,仅队列存在时有效

###Pub/Sub###
    psubscribe pattern [pattern ...]
        listen for messages published to channels matching the given patterns
    pubsub subcommand [argument [argument ...]]
        inspect the state of the pub/sub subsystem
    publish channel message
        发布一条消息到频道
    punsubscribe [pattern [pattern ...]]
        停止发布到匹配给定模式的渠道的消息听
    subscribe channel [channel ...]
        监听频道发布的消息
    unsubscribe [channel [channel ...]]
        停止频道监听

###Scripting###
    eval script numkeys key [key ...] arg [arg ...]
        在服务器端执行 lua 脚本
    evalsha sha1 numkeys key [key ...] arg [arg ...]
        在服务器端执行 lua 脚本
    script debug yes|sync|no
        set the debug mode for executed scripts.
    script exists script [script ...]
        check existence of scripts in the script cache.
    script flush
        删除服务器缓存中所有lua脚本。
    script kill
        杀死当前正在运行的 lua 脚本。
    script load script
        从服务器缓存中装载一个lua脚本。

###Server###
    bgrewriteaof
        异步重写追加文件命令
    bgsave
        异步保存数据集到磁盘上
    client kill [ip:port] [id client-id] [type normal|slave|pubsub] [addr ip:port] [skipme yes/no]
        关闭客户端连接
    client list
        获得客户端连接列表
    client getname
        获得当前连接名称
    client id
        returns the client id for the current connection
    client pause timeout
        暂停处理客户端命令
    client reply on|off|skip
        instruct the server whether to reply to commands
    client setname connection-name
        设置当前连接的名字
    client unblock client-id [timeout|error]
        unblock a client blocked in a blocking command from a different connection
    command
        get array of redis command details
    command count
        get total number of redis commands
    command getkeys
        extract keys given a full redis command
    command info command-name [command-name ...]
        get array of specific redis command details
    config get parameter
        获取配置参数的值
    config rewrite
        从写内存中的配置文件
    config set parameter value
        设置配置文件
    config resetstat
        复位再分配使用info命令报告的统计
    dbsize
        返回当前数据库里面的keys数量
    debug object key
        获取一个key的debug信息
    debug segfault
        使服务器崩溃命令
    flushall
        清空所有数据库命令
    flushdb
        清空当前的数据库命令
    info [section]
        获得服务器的详细信息
    lastsave
        获得最后一次同步磁盘的时间
    memory doctor
        outputs memory problems report
    memory help
        show helpful text about the different subcommands
    memory-malloc-stats
        show allocator internal stats
    memory-purge
        ask the allocator to release memory
    memory-stats
        show memory usage details
    memory-usage key [samples count]
        estimate the memory usage of a key
    monitor
        实时监控服务器
    replicaof host port
        make the server a replica of another instance, or promote it as master.
    role
        return the role of the instance in the context of replication
    save
        同步数据到磁盘上
    shutdown [nosave] [save]
        关闭服务
    slaveof host port
        指定当前服务器的主服务器
    slowlog subcommand [argument]
        管理再分配的慢查询日志
    sync
        用于复制的内部命令
    time
        返回当前服务器时间

###Sets###
    sadd key member [member ...]
        添加一个或者多个元素到集合(set)里
    scard key
        获取集合里面的元素数量
    sdiff key [key ...]
        获得队列不存在的元素
    sdiffstore destination key [key ...]
        获得队列不存在的元素,并存储在一个关键的结果集
    sinter key [key ...]
        获得两个集合的交集
    sinterstore destination key [key ...]
        获得两个集合的交集,并存储在一个关键的结果集
    sismember key member
        确定一个给定的值是一个集合的成员
    smembers key
        获取集合里面的所有元素
    smove source destination member
        移动集合里面的一个元素到另一个集合
    spop key [count]
        删除并获取一个集合里面的元素
    srandmember key [count]
        从集合里面随机获取一个元素
    srem key member [member ...]
        从集合里删除一个或多个元素
    sunion key [key ...]
        添加多个set元素
    sunionstore destination key [key ...]
        合并set元素,并将结果存入新的set里面
    sscan key cursor [match pattern] [count count]
        迭代set里面的元素

###Sorted Sets###
    zadd key [nx|xx] [ch] [incr] score member [score member ...]
        添加到有序set的一个或多个成员,或更新的分数,如果它已经存在
    zcard key
        获取一个排序的集合中的成员数量
    zcount key min max
        返回分数范围内的成员数量
    zincrby key increment member
        增量的一名成员在排序设置的评分
    zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
        相交多个排序集,导致排序的设置存储在一个新的关键
    zlexcount key min max
        返回成员之间的成员数量
    zpopmax key [count]
        remove and return members with the highest scores in a sorted set
    zpopmin key [count]
        remove and return members with the lowest scores in a sorted set
    zrange key start stop [withscores]
        根据指定的index返回,返回sorted set的成员列表
    zrangebylex key min max [limit offset count]
        返回指定成员区间内的成员,按字典正序排列, 分数必须相同。
    zrevrangebylex key max min [limit offset count]
        返回指定成员区间内的成员,按字典倒序排列, 分数必须相同
    zrangebyscore key min max [withscores] [limit offset count]
        返回有序集合中指定分数区间内的成员,分数由低到高排序。
    zrank key member
        确定在排序集合成员的索引
    zrem key member [member ...]
        从排序的集合中删除一个或多个成员
    zremrangebylex key min max
        删除名称按字典由低到高排序成员之间所有成员。
    zremrangebyrank key start stop
        在排序设置的所有成员在给定的索引中删除
    zremrangebyscore key min max
        删除一个排序的设置在给定的分数所有成员
    zrevrange key start stop [withscores]
        在排序的设置返回的成员范围,通过索引,下令从分数高到低
    zrevrangebyscore key max min [withscores] [limit offset count]
        返回有序集合中指定分数区间内的成员,分数由高到低排序。
    zrevrank key member
        确定指数在排序集的成员,下令从分数高到低
    zscore key member
        获取成员在排序设置相关的比分
    zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
        添加多个排序集和导致排序的设置存储在一个新的关键
    zscan key cursor [match pattern] [count count]
        迭代sorted sets里面的元素

###Streams###
    xack key group id [id ...]
        marks a pending message as correctly processed, effectively removing it from the pending entries list of the consumer group. 
    xadd key id field string [field string ...]
        appends a new entry to a stream
    xclaim key group consumer min-idle-time id [id ...] [idle ms] [time ms-unix-time] [retrycount count] [force] [justid]
        changes (or acquires) ownership of a message in a consumer group, as if the message was delivered to the specified consumer.
    xdel key id [id ...]
        removes the specified entries from the stream.
    xgroup [create key groupname id-or-$] [setid key id-or-$] [destroy key groupname] [delconsumer key groupname consumername]
        create, destroy, and manage consumer groups.
    xinfo [consumers key groupname] [groups key] [stream key] [help]
        get information on streams and consumer groups
    xlen key
        return the number of entires in a stream
    xpending key group [start end count] [consumer]
        return information and entries from a stream consumer group pending entries list, that are messages fetched but never acknowledged.
    xrange key start end [count count]
        return a range of elements in a stream, with ids matching the specified ids interval
    xread [count count] [block milliseconds] streams key [key ...] id [id ...]
        return never seen elements in multiple streams, with ids greater than the ones reported by the caller for each stream. can block.
    xreadgroup group group consumer [count count] [block milliseconds] streams key [key ...] id [id ...]
        return new entries from a stream using a consumer group, or access the history of the pending entries for a given consumer. can block.
    xrevrange key end start [count count]
        return a range of elements in a stream, with ids matching the specified ids interval, in reverse order (from greater to smaller ids) compared to xrange
    xtrim key maxlen [~] count
        trims the stream to (approximately if '~' is passed) a certain size

###Strings###
    append key value
        追加一个值到key上
    bitcount key [start end]
        统计字符串指定起始位置的字节数
    bitfield key [get type offset] [set type offset value] [incrby type offset increment] [overflow wrap|sat|fail]
        perform arbitrary bitfield integer operations on strings
    bitop operation destkey key [key ...]
        perform bitwise operations between strings
    bitpos key bit [start] [end]
        find first bit set or clear in a string
    decr key
        整数原子减1
    decrby key decrement
        原子减指定的整数
    get key
        返回key的value
    getbit key offset
        返回位的值存储在关键的字符串值的偏移量。
    getrange key start end
        获取存储在key上的值的一个子字符串
    getset key value
        设置一个key的value,并获取设置前的值
    incr key
        执行原子加1操作
    incrby key increment
        执行原子增加一个整数
    incrbyfloat key increment
        执行原子增加一个浮点数
    mget key [key ...]
        获得所有key的值
    mset key value [key value ...]
        设置多个key value
    msetnx key value [key value ...]
        设置多个key value,仅当key存在时
    psetex key milliseconds value
        set the value and expiration in milliseconds of a key
    set key value [ex seconds] [px milliseconds] [nx|xx]
        设置一个key的value值
    setbit key offset value
        sets or clears the bit at offset in the string value stored at key
    setex key seconds value
        设置key-value并设置过期时间(单位:秒)
    setnx key value
        设置的一个关键的价值,只有当该键不存在
    setrange key offset value
        overwrite part of a string at key starting at the specified offset
    strlen key
        获取指定key值的长度

###Transactions###
    discard
        丢弃所有 multi 之后发的命令
    exec
        执行所有 multi 之后发的命令
    multi
        标记一个事务块开始
    unwatch
        取消事务命令
    watch key [key ...]
        锁定key直到执行了 multi/exec 命令
View Code

命令详解-常用

  以下列举常用命令解释,其他命令详解可到官网查看,直接搜索相关命令即可。

  其中Hashes、Lists、Sets、Sorted Sets、Strings、Streams为数据结构操作,可参考Redis_数据使用或官网查看。

  其中Geo为地址位置相关信息查看,HyperLogLog为算法相关命令,较高深,可参考官网。

  重要:Redis集群在一些统计相关命令下及不友好,例如info commandstats、slowlog get、pubsub channels等统计命令下只统计了本节点下的数据,请使用时注意。

     Redis集群数据是通过key的hash槽点定位到对应节点以达到存储数据的存/取,各节点数据是独立的,不同的。

     Redis在集群中使用redis提供的事务机制要慎重。(以上只是本人简单测试的结果和理解,还请大神指点集群中统计信息的解决办法)

   1、Cluster

  Redis集群相关信息操作。

###cluster###
    cluster info //返回集群信息
        127.0.0.1:7004> cluster info
        cluster_state:ok
        cluster_slots_assigned:16384
        cluster_slots_ok:16384
        cluster_slots_pfail:0
        cluster_slots_fail:0
        cluster_known_nodes:6
        cluster_size:3
        cluster_current_epoch:7
        cluster_my_epoch:7
        cluster_stats_messages_ping_sent:53434
        cluster_stats_messages_pong_sent:5262
        cluster_stats_messages_auth-req_sent:5
        cluster_stats_messages_sent:58701
        cluster_stats_messages_ping_received:5258
        cluster_stats_messages_pong_received:4956
        cluster_stats_messages_fail_received:4
        cluster_stats_messages_auth-ack_received:2
        cluster_stats_messages_received:10220
        
        tips:
        cluster_state: ok状态表示集群可以正常接受查询请求。fail 状态表示至少有一个哈希槽没有被绑定、或者在错误的状态、或者该节点无法联系到多数master节点。.
        cluster_slots_assigned: 已分配到集群节点的哈希槽数量,16384个哈希槽全部被分配到集群节点是集群正常运行的必要条件.
        cluster_slots_ok: 哈希槽状态不是FAIL 和 PFAIL 的数量.
        cluster_slots_pfail: 哈希槽状态是PFAIL的数量。PFAIL表示当前不能和节点进行交互,只是临时的错误状态。只要哈希槽状态没有被升级到FAIL状态,这些哈希槽仍然可以被正常处理。
        cluster_slots_fail: 哈希槽状态是FAIL的数量。如果值不是0,那么集群节点将无法提供查询服务,除非cluster-require-full-coverage被设置为no 。
        cluster_known_nodes: 集群中节点数量,包括处于握手状态还没有成为集群正式成员的节点.
        cluster_size: 至少包含一个哈希槽且能够提供服务的master节点数量.
        cluster_current_epoch: 集群本地Current Epoch变量的值。这个值在节点故障转移过程时有用,它总是递增和唯一的。
        cluster_my_epoch: 当前正在使用的节点的Config Epoch值. 这个是关联在本节点的版本值.
        cluster_stats_messages_ping_sent:
        cluster_stats_messages_pong_sent:
        cluster_stats_messages_auth-req_sent:
        cluster_stats_messages_sent: 通过node-to-node二进制总线发送的消息数量.
        cluster_stats_messages_ping_received:
        cluster_stats_messages_pong_received:
        cluster_stats_messages_fail_received:
        cluster_stats_messages_auth-ack_received:
        cluster_stats_messages_received: 通过node-to-node二进制总线接收的消息数量.
        
    cluster nodes //返回节点信息
    
        c20a6b16d5e1f2269d966ff10f78e61026e0d722 127.0.0.1:7001@17001 myself,master -                                        0  1587522177000 1  connected 0-5460
        a021ce6216cc9a93218d538e626441c9a3cb99a5 127.0.0.1:7005@17005 slave         f1d4c0dff49c27d5b80684d2ac37dde5a6e22d2d 0  1587522176114 5  connected
        4db04880e8d51e60cfe0f569df83c47d205688aa 127.0.0.1:7002@17002 slave         a1ac254d0ec66d8861081c0935a0daa4cb113508 0  1587522178162 7  connected
        a1ac254d0ec66d8861081c0935a0daa4cb113508 127.0.0.1:7004@17004 master         -                                       0  1587522179182 7  connected 5461-10922
        b9ecf2cecdbf4c6db1a054cdc953613e4eebc591 127.0.0.1:7006@17006 slave         c20a6b16d5e1f2269d966ff10f78e61026e0d722 0  1587522177136 6  connected
        f1d4c0dff49c27d5b80684d2ac37dde5a6e22d2d 127.0.0.1:7003@17003 master         -                                       0  1587522177000 3  connected 10923-16383
        
        tips:
        id: 节点ID,是一个40字节的随机字符串,这个值在节点启动的时候创建,并且永远不会改变(除非使用CLUSTER RESET HARD命令)。
        ip:port: 客户端与节点通信使用的地址.
        flags: 逗号分割的标记位,可能的值有: myself, master, slave, fail?, fail, handshake, noaddr, noflags. 下一部分将详细介绍这些标记.
        master: 如果节点是slave,并且已知master节点,则这里列出master节点ID,否则的话这里列出”-“。
        ping-sent: 最近一次发送ping的时间,这个时间是一个unix毫秒时间戳,0代表没有发送过.
        pong-recv: 最近一次收到pong的时间,使用unix时间戳表示.
        config-epoch: 节点的epoch值,每当节点发生失败切换时,都会创建一个新的,独特的,递增的epoch。如果多个节点竞争同一个哈希槽时,epoch值更高的节点会抢夺到。
        link-state: node-to-node集群总线使用的链接的状态,我们使用这个链接与集群中其他节点进行通信.值可以是 connected 和 disconnected.
        slot: 哈希槽值或者一个哈希槽范围. 
        
        flags解释:
        myself: 当前连接的节点.
        master: 节点是master.
        slave: 节点是slave.
        fail?: 节点处于PFAIL 状态。 当前节点无法联系,但逻辑上是可达的 (非 FAIL 状态).
        fail: 节点处于FAIL 状态. 大部分节点都无法与其取得联系将会将改节点由 PFAIL 状态升级至FAIL状态。
        handshake: 还未取得信任的节点,当前正在与其进行握手.
        noaddr: 没有地址的节点(No address known for this node).
        noflags: 连个标记都没有(No flags at all).
        
        
    cluster replicas node-id
        该命令会列出指定主节点的辅助副本节点,输出格式同命令CLUSTER NODES
        
    cluster replicate node-id
        该命令重新配置一个节点成为指定master的salve节点。 如果收到命令的节点是一个empty master,那么该节点的角色将由master切换为slave。
        如果收到命令的节点不是slave而是master,只要在如下情况下,命令才会执行成功,该节点才会切换为slave:
            1、该节点不保存任何hash槽
            2、该节点是空的,key空间中不存储任何键
        如果命令执行成功,新的slave会立即尝试连接它的master以便进行数据复制
        
    cluster slaves node-id
        该命令会列出指定master节点所有slave节点,格式同CLUSTER NODES
        
    cluster slots    //列出所有节点hash槽情况
        127.0.0.1:7001> cluster slots
        1) 1) (integer) 0
           2) (integer) 5460
           3) 1) "127.0.0.1"
              2) (integer) 7001
              3) "c20a6b16d5e1f2269d966ff10f78e61026e0d722"
           4) 1) "127.0.0.1"
              2) (integer) 7006
              3) "b9ecf2cecdbf4c6db1a054cdc953613e4eebc591"
        2) 1) (integer) 5461
           2) (integer) 10922
           3) 1) "127.0.0.1"
              2) (integer) 7004
              3) "a1ac254d0ec66d8861081c0935a0daa4cb113508"
           4) 1) "127.0.0.1"
              2) (integer) 7002
              3) "4db04880e8d51e60cfe0f569df83c47d205688aa"
        3) 1) (integer) 10923
           2) (integer) 16383
           3) 1) "127.0.0.1"
              2) (integer) 7003
              3) "f1d4c0dff49c27d5b80684d2ac37dde5a6e22d2d"
           4) 1) "127.0.0.1"
              2) (integer) 7005
              3) "a021ce6216cc9a93218d538e626441c9a3cb99a5"    

   2、Connection

  Redis连接相关命令。

###Connection###        
    auth password
        验证服务器密码命令
    echo message
        回显输入的字符串,即打印message。
    ping
        后面没有参数时返回PONG,否则返回参数。经常用来测试一个连接是否还是可用的,或者用来测试一个连接的延时。
    quit
        关闭连接,退出
    select index
        选择新数据库
    swapdb index index
        该命令可以交换同一Redis服务器上的两个DATABASE,可以实现连接某一数据库的连接立即访问到其他DATABASE的数据。访问交换前其他database的连接也可以访问到该DATABASE的数据。

   3、Keys

  Redis对存储数据key的其他操作。

###Keys###
    del key [key ...]
        删除指定的key(一个或多个)
    dump key
        导出key的值
    exists key
        查询一个key是否存在
    expire key seconds
        设置一个key的过期的秒数
    expireat key timestamp
        设置一个unix时间戳的过期时间
    keys pattern
        查找所有匹配给定的模式的键
    move key db
        移动一个key到另一个数据库
    persist key
        移除key的过期时间
    pexpire key milliseconds
        设置key的有效时间以毫秒为单位
    pexpireat key milliseconds-timestamp
        设置key的到期unix时间戳以毫秒为单位
    pttl key
        获取key的有效毫秒数
    randomkey
        返回一个随机的key
    rename key newkey
        将一个key重命名
    renamenx key newkey
        重命名一个key,新的key必须是不存在的key
    ttl key
        获取key的有效时间(单位:秒)
    type key
        获取key的存储类型

   4、Pub/Sub

  Redis发布订阅。

###Pub/Sub###
    
    /**
        1、redis的发布订阅类似于广播,可以实现消息的【发布-接受】,接收者必须在消息发布前订阅该发布渠道channel。
        2、订阅者无限制,即集群中任意节点都可以有多个连接订阅某消息渠道;
        3、subscribe、psubscribe在官方客户端为阻塞连接,故unsubscribe、punsubscribe无法模拟使用。
        4、在集群中,发布-订阅信息无影响,但统计信息只统计到当前节点(包括命令执行返回的统计信息,例如:publish返回收到消息的客户端数,只统计连接当前节点的客户端);
    **/
    pubsub subcommand [argument [argument ...]]
        pubsub 是自省命令,能够检测PUB/SUB子系统的状态。它由分别详细描述的子命令组成。通用格式如下:PUBSUB <subcommand> ... args ...
        1、pubsub channels [pattern]
        列出当前active channels.活跃是指信道含有一个或多个订阅者(不包括其他节点的订阅者) 如果pattern未提供,所有的信道都被列出,否则只列出匹配上指定全局-类型模式的信道被列出.    
        2、pubsub numsub [channel-1 ... channel-n]    
        列出指定信道的订阅者个数(不统计其他节点的订阅者),不给定任何频道只返回一个空列表.
        3、pubsub numpat
        返回订阅模式的数量.返回的不是订阅模式的客户端的数量,而是此客户端通过【psubscribe】订阅所有模式的数量总和。
    
    subscribe channel [channel ...]
        添加对一个或多个频道的订阅
    unsubscribe [channel [channel ...]]
        取消对一个或多个频道的订阅
    
    psubscribe pattern [pattern ...]
        取消对一个或多个模式类型频道的订阅
    punsubscribe [pattern [pattern ...]]
        取消对一个或多个模式类型频道的订阅
        
    publish channel message
        发布一条消息到频道

   5、Scripting

  Redis关于LUA脚本的使用。

###Scripting###

    eval script numkeys key [key ...] arg [arg ...]
        在服务器端执行 lua 脚本
    evalsha sha1 numkeys key [key ...] arg [arg ...]
        在服务器端执行 lua 脚本
    script debug yes|sync|no
        set the debug mode for executed scripts.
    script exists script [script ...]
        check existence of scripts in the script cache.
    script flush
        删除服务器缓存中所有lua脚本。
    script kill
        杀死当前正在运行的 lua 脚本。
    script load script
        从服务器缓存中装载一个lua脚本。

   6、Server

  Redis服务器命令。

###Server###
    
    //文件即服务相关
    time
        返回当前服务器时间
    save
        同步数据到磁盘上
    shutdown [nosave] [save]
        关闭服务,关闭之前是否同步数据
    role
        返回当前节点角色信息
    lastsave
        获得最后一次同步磁盘的时间
    dbsize
        返回当前数据库里面的keys数量
    debug segfault
        使服务器崩溃命令
    debug object key
        获取一个key的debug信息,只能获取当前节点上的key
    flushall
        清空所有数据库命令
    flushdb
        清空当前的数据库命令
    bgrewriteaof
        异步重写追加文件命令
    bgsave
        异步保存数据集到磁盘上
    
    //配置相关    
    config get parameter
        获取配置参数的值
    config rewrite
        从写内存中的配置文件
    config set parameter value
        设置配置文件
    config resetstat
        复位再分配INFO命令统计里面的一些计算器。

    //连接相关    
    client list
        获得客户端连接列表
    client getname
        获得当前连接名称
    client id
        获取当前连接ID
    client pause timeout
        暂停处理客户端命令
    client reply on|off|skip
        设置服务器是否对客户端的命令进行回复。有如下选项:ON. 默认选项,回复客户端每条命令;OFF. 不回复客户端命令SKIP. 跳过该命令的回复
    client setname connection-name
        设置当前连接的名字
    client kill [ip:port] [id client-id] [type normal|slave|pubsub] [addr ip:port] [skipme yes/no]
        关闭客户端连接,后面跟筛选条件
    client unblock client-id [timeout|error]
        客户端阻塞设置命令
    
    //内存相关
    memory doctor
        命令MEMORY DOCTOR 会列出 Redis 服务器遇到的不同类型的内存相关问题,并提供相应的解决建议
    memory help
        命令MEMORY HELP返回不同子命令的说明
    memory malloc-stats
        命令MEMORY MALLOC-STATS 提供内存分配情况的内部统计报表,该命令目前仅实现了jemalloc作为内存分配器的内存统计,对其他分配器暂不支持
    memory purge
        命令MEMORY PURGE 尝试清除脏页以便内存分配器回收使用,该命令目前仅实现了jemalloc作为内存分配器的内存统计,对其他分配器暂不支持
    memory stats
        命令MEMORY STATS 将服务器的内存使用情况以数组情况返回
    memory usage key [samples count]
        命令MEMORY USAGE返回的结果是key的值以及为管理该key分配的内存总字节数,对于嵌套数据类型,可以使用选项SAMPLES,其中COUNT表示抽样的元素个数,默认值为5。
        当需要抽样所有元素时,使用SAMPLES 0
    
    //命令统计相关
    command
        以数组的形式返回有关所有Redis命令的详细信息,详细解释见官网。
    command count
        返回Redis服务器支持命令的总数。
    command getkeys 
        COMMAND GETKEYS是一个辅助命令,让你可以从完整的Redis命令中找到key。例:COMMAND GETKEYS MSET a b c d e f
    command info command-name [command-name ...]
        返回内容与command一致,只是提供了命令筛选,如:command info get set
        
    //其他
    monitor
        实时监控服务器
    replicaof host port
        make the server a replica of another instance, or promote it as master.
    slaveof host port
        指定当前服务器的主服务器
    sync
        用于复制的内部命令

    //日志相关
    slowlog subcommand [argument]
        /**
            1、Redis慢查询日志是一个记录超过指定执行时间的查询的系统。这里的执行时间不包括IO操作,比如与客户端通信,发送回复等等,而只是实际执行命令所需的时间。
            2、slowlog-log-slower-than配置Redis命令执行时间超过多少微秒被记录,使用负数将会关闭慢查询日志,而为0将强制记录每一个命令。
            3、slowlog-max-len是慢查询日志的长度,最小值是0。当一个新命令被记录,且慢查询日志已经达到其最大长度时,将从记录命令的队列中移除删除最旧的命令以腾出空间。
        **/
        slowlog len 
            可以获得慢查询日志的长度
        slowlog reset 
            可以获得慢查询日志的长度
        slowlog get 10 
            查询指定数量慢日志信息,缺省为全部查询
            127.0.0.1:7001> slowlog get 2
            1) 1) (integer) 0                                        //每个慢查询条目的唯一的递增标识符
               2) (integer) 1587529911                                //处理记录命令的unix时间戳
               3) (integer) 56570                                    //命令执行所需的总时间,以微秒为单位
               4) 1) "PSYNC"                                        //组成该命令的参数的数组
                  2) "810b70fdd00c461d7e4859463e9265789bd8ba0a"
                  3) "1"
               5) "127.0.0.1:39920"
               6) ""
###Server###

    info [section]
    /**
        1、info信息是redis重要的运行状态,数据分析命令。
        2、通过给定可选的参数 section ,可以让命令只返回某一部分的信息,默认为default:
            server: Redis服务器的一般信息
            clients: 客户端的连接部分
            memory: 内存消耗相关信息
            persistence: RDB和AOF相关信息
            stats: 一般统计
            replication: 主/从复制信息
            cpu: 统计CPU的消耗
            commandstats: Redis命令统计
            cluster: Redis集群信息
            keyspace: 数据库的相关统计
            
            它也可以采取以下值:
            all: 返回所有信息
            default: 值返回默认设置的信息,默认只是少了commandstats信息
        3、本文采用redis-5.0.8,查询结果集可能与之前版本不一样。
        4、有些参数官网未给出,技术有限,测不出含义,但不常用。
    **/

    info server
    127.0.0.1:7001> info server
    # Server
    redis_version:5.0.8        //Redis 服务器版本
    redis_git_sha1:00000000        //Git版本SHA1值
    redis_git_dirty:0        //Git版本dirty值
    redis_build_id:6d5a2b08f32bbbe7        //构建ID
    redis_mode:cluster        //服务器模式(standalone,sentinel或者cluster)
    os:Linux 3.10.0-1062.1.1.el7.x86_64 x86_64        //运行服务器版本
    arch_bits:64        //redis架构
    multiplexing_api:epoll        //Redis 所使用的事件处理机制
    atomicvar_api:atomic-builtin        //Redis使用的Atomicvar API
    gcc_version:4.8.5        //编译 Redis 时所使用的 GCC 版本
    process_id:1392        //服务器进程的 PID
    run_id:f4455d3123c8a15209116cef94fc6f5bfd68e6e9        //Redis 服务器的随机标识符(用于 Sentinel 和集群)
    tcp_port:7001        //Redis 服务器的随机标识符(用于 Sentinel 和集群)
    uptime_in_seconds:6917        //自 Redis 服务器启动以来,经过的秒数
    uptime_in_days:0        //自 Redis 服务器启动以来,经过的天数
    hz:10        //服务器的频率设置
    configured_hz:10        
    lru_clock:10478499        //以分钟为单位进行自增的时钟,用于 LRU 管理
    executable:/root/redis/bin/redis-server        //服务器的可执行文件路径
    config_file:/root/redis/cluster/7001/redis.conf        //配置文件路径
    
    info clients
    127.0.0.1:7001> info clients
    # Clients
    connected_clients:1        //已连接客户端的数量(不包括连接到集群或从节点的客户端)
    client_recent_max_input_buffer:2        //当前连接的客户端当中,最长的输出列表
    client_recent_max_output_buffer:0        //当前连接的客户端当中,最大输入缓存
    blocked_clients:0        //正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量

    info memory 
    127.0.0.1:7001> info memory
    # Memory
    used_memory:2655232        //由 Redis 分配器分配的内存总量,以字节(byte)为单位
    used_memory_human:2.53M        //以人类可读的格式返回 Redis 分配的内存总量
    used_memory_rss:9117696        //从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
    used_memory_rss_human:8.70M        //以人类可读的格式返回 Redis 的内存消耗峰值
    used_memory_peak:2697416        //Redis 的内存消耗峰值(以字节为单位)
    used_memory_peak_human:2.57M        //以人类可读的格式返回 Redis 的内存消耗峰值
    used_memory_peak_perc:98.44%        //使用内存占峰值内存的百分比
    used_memory_overhead:2578664        //服务器为管理其内部数据结构而分配的所有开销的总和(以字节为单位)
    used_memory_startup:1463184        //Redis在启动时消耗的初始内存大小(以字节为单位)
    used_memory_dataset:76568        //以字节为单位的数据集大小(used_memory减去used_memory_overhead)
    used_memory_dataset_perc:6.42%        //used_memory_dataset占净内存使用量的百分比(used_memory减去used_memory_startup)
    allocator_allocated:2696880        
    allocator_active:2940928
    allocator_resident:5341184
    total_system_memory:1019641856        //Redis主机具有的内存总量
    total_system_memory_human:972.41M        //以人类可读的格式返回 Lua 引擎所使用的内存大小
    used_memory_lua:37888        //Lua 引擎所使用的内存大小(以字节为单位)
    used_memory_lua_human:37.00K        //以人类可读的格式返回 Lua 引擎所使用的内存大小
    used_memory_scripts:0
    used_memory_scripts_human:0B
    number_of_cached_scripts:0
    maxmemory:0        //maxmemory配置指令的值
    maxmemory_human:0B        //以人类可读的格式返回 maxmemory配置指令的值
    maxmemory_policy:noeviction        //maxmemory-policy配置指令的值
    allocator_frag_ratio:1.09        
    allocator_frag_bytes:244048
    allocator_rss_ratio:1.82
    allocator_rss_bytes:2400256
    rss_overhead_ratio:1.71
    rss_overhead_bytes:3776512
    mem_fragmentation_ratio:3.49        //used_memory_rss 和 used_memory 之间的比率
    mem_fragmentation_bytes:6503480        
    mem_not_counted_for_evict:104
    mem_replication_backlog:1048576
    mem_clients_slaves:16922
    mem_clients_normal:49694
    mem_aof_buffer:104
    mem_allocator:jemalloc-5.1.0        //在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
    active_defrag_running:0        // 指示活动碎片整理是否处于活动状态的标志
    lazyfree_pending_objects:0        // 等待释放的对象数(由于使用ASYNC选项调用UNLINK或FLUSHDB和FLUSHALL)

    info persistence
    127.0.0.1:7001> info persistence 
    # Persistence
    loading:0        //指示转储文件(dump)的加载是否正在进行的标志
    rdb_changes_since_last_save:0        //自上次转储以来的更改次数
    rdb_bgsave_in_progress:0        //指示RDB文件是否正在保存的标志
    rdb_last_save_time:1587531125        //上次成功保存RDB的基于纪年的时间戳
    rdb_last_bgsave_status:ok        //上次RDB保存操作的状态
    rdb_last_bgsave_time_sec:0        //上次RDB保存操作的持续时间(以秒为单位)
    rdb_current_bgsave_time_sec:-1        //正在进行的RDB保存操作的持续时间(如果有)
    rdb_last_cow_size:2322432        //上次RDB保存操作期间copy-on-write分配的字节大小
    aof_enabled:1        //表示AOF记录已激活的标志
    aof_rewrite_in_progress:0        //表示AOF重写操作正在进行的标志
    aof_rewrite_scheduled:0        //表示一旦进行中的RDB保存操作完成,就会安排进行AOF重写操作的标志
    aof_last_rewrite_time_sec:-1        //上次AOF重写操作的持续时间,以秒为单位
    aof_current_rewrite_time_sec:-1        // 正在进行的AOF重写操作的持续时间(如果有)
    aof_last_bgrewrite_status:ok        //上次AOF重写操作的状态
    aof_last_write_status:ok        //上一次AOF写入操作的状态
    aof_last_cow_size:0        //上次AOF重写操作期间copy-on-write分配的字节大小
    
    如果启用了AOF,则会添加以下这些额外的字段:
    aof_current_size:227        //当前的AOF文件大小
    aof_base_size:175        //上次启动或重写时的AOF文件大小
    aof_pending_rewrite:0        //指示AOF重写操作是否会在当前RDB保存操作完成后立即执行的标志。
    aof_buffer_length:0        //AOF缓冲区大小
    aof_rewrite_buffer_length:0        //AOF重写缓冲区大小
    aof_pending_bio_fsync:0        //在后台IO队列中等待fsync处理的任务数
    aof_delayed_fsync:0        //延迟fsync计数器
    
    如果正在执行加载操作,将会添加这些额外的字段:
    loading_start_time:         //加载操作的开始时间(基于纪元的时间戳)
    loading_total_bytes:         //文件总大小
    loading_loaded_bytes:         //已经加载的字节数
    loading_loaded_perc:         //已经加载的百分比
    loading_eta_seconds:         //预计加载完成所需的剩余秒数
    
    info stats
    127.0.0.1:7001> info stats
    # Stats
    total_connections_received:5        //服务器接受的连接总数
    total_commands_processed:9357        // 服务器处理的命令总数
    instantaneous_ops_per_sec:1        //每秒处理的命令数
    total_net_input_bytes:347570        //
    total_net_output_bytes:81848
    instantaneous_input_kbps:0.04
    instantaneous_output_kbps:0.00
    rejected_connections:0        //由于maxclients限制而拒绝的连接数
    sync_full:1
    sync_partial_ok:0
    sync_partial_err:1
    expired_keys:0        //key到期事件的总数
    expired_stale_perc:0.00
    expired_time_cap_reached_count:0
    evicted_keys:0        //由于maxmemory限制而导致被驱逐的key的数量
    keyspace_hits:0        //在主字典中成功查找到key的次数
    keyspace_misses:1        //在主字典中查找key失败的次数
    pubsub_channels:0        //拥有客户端订阅的全局pub/sub通道数
    pubsub_patterns:0        //拥有客户端订阅的全局pub/sub模式数
    latest_fork_usec:640        //最新fork操作的持续时间,以微秒为单位
    migrate_cached_sockets:0
    slave_expires_tracked_keys:0
    active_defrag_hits:0
    active_defrag_misses:0
    active_defrag_key_hits:0
    active_defrag_key_misses:0
    
    info replication
    127.0.0.1:7001> info replication 
    # Replication
    role:master        //如果实例不是任何节点的从节点,则值是”master”,如果实例从某个节点同步数据,则是”slave”。一个从节点可以是另一个从节点的主节点(菊花链)
    connected_slaves:1        //已连接的从节点数
    slave0:ip=127.0.0.1,port=7006,state=online,offset=13478,lag=0 //从节点信息
    master_replid:2683e6d66969fc113b25f120714691ab46cee6ef
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:13478
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:13478

    info cpu
    127.0.0.1:7001> info cpu
    # CPU
    used_cpu_sys:8.630522        //由Redis服务器消耗的系统CPU
    used_cpu_user:7.188287        //由Redis服务器消耗的用户CPU
    used_cpu_sys_children:0.033723        //由后台进程消耗的系统CPU
    used_cpu_user_children:0.000000        //由后台进程消耗的用户CPU

    info cluster
    127.0.0.1:7001> info cluster
    # Cluster
    cluster_enabled:1        //表示已启用Redis集群
    
    info keyspace
    127.0.0.1:7001> info keyspace
    # Keyspace
    db0:keys=3,expires=0,avg_ttl=0         //key相关解释

    info commandstats 
    127.0.0.1:7001> info commandstats
    # Commandstats    //统计已执行过的redis命令,内容为:命令名:执行次数:总耗时:平均耗时(毫秒)
    cmdstat_replconf:calls=10710,usec=17202,usec_per_call=1.61
    cmdstat_memory:calls=4,usec=2681,usec_per_call=670.25
    cmdstat_set:calls=2,usec=15,usec_per_call=7.50
    cmdstat_cluster:calls=1,usec=79,usec_per_call=79.00
    cmdstat_command:calls=12,usec=4152,usec_per_call=346.00
    cmdstat_psync:calls=1,usec=56570,usec_per_call=56570.00
    cmdstat_info:calls=17,usec=882,usec_per_call=51.88
    cmdstat_ping:calls=1,usec=1,usec_per_call=1.00
    cmdstat_slowlog:calls=3,usec=32,usec_per_call=10.67
    cmdstat_get:calls=1,usec=1,usec_per_call=1.00

   7、Transactions

  Redis事务命令和举例使用。

###Transactions###

    multi
        标记一个事务块开始
    exec
        执行所有 multi 之后发的命令
    discard
        丢弃所有 multi 之后发的命令
    watch key [key ...]
        锁定key直到执行了 multi/exec 命令
    unwatch
        取消事务命令
        
    举例-单节点:
        127.0.0.1:7004> set name zhang
        OK
        127.0.0.1:7004> WATCH name
        OK
        127.0.0.1:7004> MULTI
        OK
        127.0.0.1:7004> set name2 li
        OK
        127.0.0.1:7004> EXEC
        OK
        127.0.0.1:7001> UNWATCH name

    /**
        1、正常情况下此命令执行成功。
        2、挡在WATCH name之后开启事务,此时如果另一个客户端对key【name】进行修改(select也算),则事务提交时会执行失败,回滚。
        3、集群中redis事务较难使用
    **/
原文地址:https://www.cnblogs.com/chunxiaozhang/p/12745405.html