redis的command命令
一.Redis命令详解
1.SLOWLOG
Redis 的 SLOWLOG 命令用于管理和查看 Redis 服务器上的慢查询日志。慢查询日志是记录执行时间超过指定阈值的查询,帮助识别和调优性能问题。以下是 SLOWLOG 的详细介绍及其相关命令:
SLOWLOG 基本功能
SLOWLOG 主要功能是记录和查看慢查询日志,包括以下几个命令:
SLOWLOG GET [count]:获取最新的慢查询日志条目。
SLOWLOG LEN:获取慢查询日志的长度,即已记录的条目数量。
SLOWLOG RESET:清空慢查询日志。
配置慢查询日志
Redis 提供了两个与慢查询日志相关的配置参数:
1.slowlog-log-slower-than:设置慢查询的阈值,单位是微秒(1秒 = 1,000,000微秒)。默认值是 10,000 微秒(即 0.01 秒)。任何执行时间超过该值的查询都会被记录。
2.slowlog-max-len:设置慢查询日志的最大长度(条数)。默认值是 128。日志记录达到该长度时,最早的记录会被移除。
可以通过修改 Redis 配置文件或使用 CONFIG SET 命令来调整这两个参数。
CONFIG SET slowlog-log-slower-than 10000 CONFIG SET slowlog-max-len 128
SLOWLOG 命令详细介绍
1.SLOWLOG GET [count]
该命令用于获取最新的慢查询日志条目。可以指定一个可选的参数 count 来限制返回的条目数量。如果不指定 count,则返回所有条目。
SLOWLOG GET 10
每个条目包含以下字段:
ID:日志条目的唯一标识符。
时间戳:记录日志的时间,格式为 UNIX 时间戳。
执行时间:查询执行时间,单位为微秒。
命令及参数:执行的命令及其参数。
示例输出:
1) 1) (integer) 13 2) (integer) 1322788883 3) (integer) 10 4) 1) "PING" 2) 1) (integer) 12 2) (integer) 1322788884 3) (integer) 20 4) 1) "SET" 2) "key" 3) "value"
2.SLOWLOG LEN
该命令返回慢查询日志的长度,即已记录的慢查询条目数量。
SLOWLOG LEN
示例输出:
(integer) 2
3.SLOWLOG RESET
该命令清空慢查询日志。
SLOWLOG RESET
示例输出:
OK
配置慢查询日志示例
修改 slowlog-log-slower-than
将慢查询阈值设置为 1 毫秒(1000 微秒):
CONFIG SET slowlog-log-slower-than 1000
修改 slowlog-max-len
将慢查询日志的最大长度设置为 200:
CONFIG SET slowlog-max-len 200
使用场景
慢查询日志对于以下场景特别有用:
性能调优:通过分析慢查询日志,可以发现哪些命令执行时间过长,从而进行优化。
故障排查:在系统性能异常时,慢查询日志提供了重要的诊断信息。
监控和报警:结合监控工具,实时监控慢查询日志,并设置报警阈值。
总结
SLOWLOG 是 Redis 提供的强大工具,用于记录和管理慢查询日志。通过合理配置和分析慢查询日志,可以显著提高 Redis 服务器的性能和稳定性。详细信息可以参考 Redis 官方文档:SLOWLOG.https://redis.io/docs/latest/commands/?name=SLOWLOG
2.AUTH
用途: 用于进行客户端认证。当 Redis 设置了密码时,客户端必须使用 AUTH 命令提供正确的密码才能连接成功。
格式: AUTH password
示例:
AUTH mypassword
3.CONFIG GET
用途: 用于获取 Redis 配置参数的值。可以查询一个或多个配置参数。
格式: CONFIG GET parameter
示例:
CONFIG GET maxmemory
CONFIG GET *
4.INFO
用途: 用于获取 Redis 服务器的各种信息和统计数据。可以获取服务器的总体信息或特定部分的信息。
格式: INFO [section]
常见的 section:
server: 关于 Redis 服务器的信息。
clients: 已连接客户端的信息。
memory: 内存使用情况。
persistence: RDB 和 AOF 持久化状态。
stats: 常规统计信息。
replication: 主从复制信息。
cpu: CPU 使用情况。
commandstats: 每个命令的统计信息。
cluster: 集群信息。
keyspace: 数据库相关的键的信息。
示例:
INFO INFO memory
二.Redis常用command列表
1.Key(键)命令
DEL key [key ...]
:删除一个或多个键。DUMP key
:序列化给定键,并返回被序列化的值。EXISTS key [key ...]
:检查一个或多个键是否存在。EXPIRE key seconds
:为键设置过期时间(以秒为单位)。EXPIREAT key timestamp
:为键设置过期时间(以 UNIX 时间戳表示)。KEYS pattern
:查找所有匹配给定模式的键。MOVE key db
:将键移动到另一个数据库。PERSIST key
:移除键的过期时间。PEXPIRE key milliseconds
:设置键的过期时间(以毫秒为单位)。PEXPIREAT key milliseconds-timestamp
:设置键的过期时间(以 UNIX 时间戳表示,毫秒为单位)。PTTL key
:以毫秒为单位返回键的剩余过期时间。RENAME key newkey
:更改键的名称。RENAMENX key newkey
:仅当新键名不存在时,将键改名。SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
:对列表、集合或有序集合排序。TTL key
:以秒为单位返回键的剩余过期时间。TYPE key
:返回键的存储类型。UNLINK key [key ...]
:异步删除一个或多个键。
2.String(字符串)命令
APPEND key value
:将值追加到键的末尾。BITCOUNT key [start end]
:计算字符串中被设置为 1 的位的数量。BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]
:处理字符串作为位域。BITOP operation destkey key [key ...]
:按位操作。BITPOS key bit [start] [end]
:返回位被设置为 1 或 0 的第一个位置。DECR key
:将键的值减一。DECRBY key decrement
:将键的值减去指定的减量。GET key
:获取键的值。GETBIT key offset
:返回字符串在偏移量上的位值。GETRANGE key start end
:获取子字符串。GETSET key value
:设置键的值,并返回其旧值。INCR key
:将键的值加一。INCRBY key increment
:将键的值加上指定的增量。INCRBYFLOAT key increment
:将键的值加上指定的浮点增量。MGET key [key ...]
:获取所有给定键的值。MSET key value [key value ...]
:同时设置多个键的值。MSETNX key value [key value ...]
:同时设置多个键的值,仅当这些键不存在。PSETEX key milliseconds value
:设置键的值及其过期时间(以毫秒为单位)。SET key value [EX seconds] [PX milliseconds] [NX|XX]
:设置键的值。SETBIT key offset value
:设置字符串在偏移量上的位值。SETEX key seconds value
:设置键的值及其过期时间(以秒为单位)。SETNX key value
:仅当键不存在时,设置键的值。SETRANGE key offset value
:覆盖键从指定偏移量开始的值。STRLEN key
:获取键值的长度。
3.Hash(哈希)命令
HDEL key field [field ...]
:删除一个或多个哈希表字段。HEXISTS key field
:查看哈希表 key 中,指定的字段是否存在。HGET key field
:获取存储在哈希表中指定字段的值。HGETALL key
:获取在哈希表中指定 key 的所有字段和值。HINCRBY key field increment
:为哈希表 key 中的指定字段的整数值加上增量 increment。HINCRBYFLOAT key field increment
:为哈希表 key 中的指定字段的浮点数值加上增量 increment。HKEYS key
:获取所有哈希表中的字段。HLEN key
:获取哈希表中字段的数量。HMGET key field [field ...]
:获取所有给定字段的值。HMSET key field value [field value ...]
:同时将多个 field-value (字段-值) 对设置到哈希表 key 中。HSET key field value
:将哈希表 key 中的字段 field 的值设为 value。HSETNX key field value
:只有在字段 field 不存在时,设置哈希表字段的值。HVALS key
:获取哈希表中所有值。
4.List(列表)命令
BLPOP key [key ...] timeout
:移出并获取列表的第一个元素,或阻塞,直到有一个可用。BRPOP key [key ...] timeout
:移出并获取列表的最后一个元素,或阻塞,直到有一个可用。BRPOPLPUSH source destination timeout
:从列表中弹出一个值,将它推入另一个列表并返回它;或阻塞,直到有一个可用。LINDEX key index
:通过索引获取列表中的元素。LINSERT key BEFORE|AFTER pivot value
:在列表的元素前或后插入元素。LLEN key
:获取列表长度。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
:对一个列表进行修剪。
5.Set(集合)命令
SADD key member [member ...]
:向集合添加一个或多个成员。SCARD key
:获取集合的成员数。SDIFF key [key ...]
:返回一个集合与给定集合的差集。SDIFFSTORE destination key [key ...]
:将差集存储在指定的集合。SINTER key [key ...]
:返回给定所有集合的交集。SINTERSTORE destination key [key ...]
:将交集存储在指定的集合。SISMEMBER key member
:判断 member 元素是否是集合 key 的成员。SMEMBERS key
:返回集合中的所有成员。SMOVE source destination member
:将 member 元素从 source 集合移动到 destination 集合。SPOP key [count]
:移除并返回集合中的一个或多个随机元素。SRANDMEMBER key [count]
:返回集合中的一个或多个随机元素。SREM key member [member ...]
:移除集合中的一个或多个成员。SUNION key [key ...]
:返回所有给定集合的并集。SUNIONSTORE destination key [key ...]
:将并集存储在指定的集合。
6.Sorted Set(有序集合)命令
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
:向有序集合添加一个或多个成员,或更新已存在成员的分数。ZCARD key
:获取有序集合的成员数。ZCOUNT key min max
:计算指定分数区间内的成员数量。ZINCRBY key increment member
:有序集合中对指定成员的分数加上增量 increment。ZINTERSTORE destination numkeys key [key ...]
:计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中。ZRANGE key start stop [WITHSCORES]
:通过索引区间返回有序集合成指定区间内的成员。ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
:通过分数返回有序集合指定区间内的成员。ZRANK key member
:返回有序集合中指定成员的索引。ZREM key member [member ...]
:移除有序集合中的一个或多个成员。ZREMRANGEBYRANK key start stop
:移除有序集合中给定的排名区间的所有成员。ZREMRANGEBYSCORE key min max
:移除有序集合中给定的分数区间的所有成员。ZREVRANGE key start stop [WITHSCORES]
:返回有序集合中指定区间内的成员,通过索引,分数从高到低。ZREVRANGEBYSCORE key max min [WITHSCORES]
:返回有序集合中指定分数区间内的成员,分数从高到低排序。ZREVRANK key member
:返回有序集合中指定成员的索引,按分数从高到低排序。ZSCORE key member
:返回有序集合中,成员的分数值。ZUNIONSTORE destination numkeys key [key ...]
:计算给定的一个或多个有序集的并集,并将结果集存储在新的有序集合 key 中。
7.HyperLogLog 命令
PFADD key element [element ...]
:将元素添加到 HyperLogLog 数据结构。PFCOUNT key [key ...]
:返回给定 HyperLogLog 的基数估计值。PFMERGE destkey sourcekey [sourcekey ...]
:将多个 HyperLogLog 合并为一个。
8.Geo(地理位置)命令
GEOADD key longitude latitude member [longitude latitude member ...]
:将地理空间位置(经度、纬度、名称)添加到指定键。GEODIST key member1 member2 [unit]
:返回两个成员之间的距离。GEOHASH key member [member ...]
:返回一个或多个成员的 Geohash 表示。GEOPOS key member [member ...]
:返回所有指定成员的位置(经度和纬度)。GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
:根据给定的经纬度坐标来查询指定范围内的地理位置集合。GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
:根据给定的成员位置来查询指定范围内的地理位置集合。
9.Stream(流)命令
XADD key ID field value [field value ...]
:将一个包含多个字段的消息添加到流。XCLAIM key group consumer min-idle-time ID [ID ...]
:将待处理的消息所有权转移给另一个消费者。XDEL key ID [ID ...]
:从流中删除一个或多个消息。XGROUP [CREATE key groupname id|$] [SETID key groupname id|$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]
:管理消费者组。XINFO [CONSUMERS key groupname] [GROUPS key] [STREAM key]
:获取有关流和消费者组的信息。XLEN key
:获取流中的消息数量。XPENDING key group [start end count [consumer]]
:获取有关消费者组中挂起消息的信息。XRANGE key start end [COUNT count]
:返回指定区间内的消息。XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
:返回多个流中指定 ID 之后的消息。XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]
:从流中读取消息,并将其分配给一个消费者组中的消费者。XREVRANGE key end start [COUNT count]
:返回指定区间内的消息,按消息 ID 倒序排列。XTRIM key MAXLEN [~] count
:修剪流,使其不超过指定长度。
10.发布/订阅(Pub/Sub)命令
PSUBSCRIBE pattern [pattern ...]
:订阅一个或多个符合给定模式的频道。PUBLISH channel message
:将信息发送到指定的频道。PUNSUBSCRIBE [pattern [pattern ...]]
:退订所有给定模式的频道。SUBSCRIBE channel [channel ...]
:订阅给定的一个或多个频道的信息。UNSUBSCRIBE [channel [channel ...]]
:指示客户端退订所有给定的频道。
11.事务(Transaction)命令
DISCARD
:取消事务。EXEC
:执行所有事务块内的命令。MULTI
:标记一个事务块的开始。UNWATCH
:取消 WATCH 命令对所有键的监视。WATCH key [key ...]
:监视一个或多个键,如果在事务执行之前这些键被其他命令所改动,那么事务将被打断。
12.脚本(Scripting)命令
EVAL script numkeys key [key ...] arg [arg ...]
:执行 Lua 脚本。EVALSHA sha1 numkeys key [key ...] arg [arg ...]
:执行缓存的 Lua 脚本。SCRIPT EXISTS sha1 [sha1 ...]
:检查脚本是否已经被加载到缓存中。SCRIPT FLUSH
:删除所有已经被加载的脚本。SCRIPT KILL
:杀死当前正在运行的 Lua 脚本。SCRIPT LOAD script
:将脚本加载到脚本缓存中,但不立即执行。
13.连接(Connection)命令
AUTH password
:验证密码。ECHO message
:回显消息。PING [message]
:检查服务器是否运行。QUIT
:关闭连接。SELECT index
:切换到指定的数据库。
14.服务器(Server)命令
BGREWRITEAOF
:在后台异步执行 AOF(Append Only File)文件重写。BGSAVE
:在后台异步保存数据集到磁盘。CLIENT GETNAME
:返回为连接设置的名字。CLIENT KILL [ip:port]
:关闭客户端连接。CLIENT LIST
:获取所有连接到服务器的客户端信息和统计数据。CLIENT PAUSE timeout
:在指定时间内停止处理来自客户端的请求。CLIENT SETNAME connection-name
:为当前连接设置名字。CONFIG GET parameter
:获取配置参数的值。CONFIG REWRITE
:重写配置文件。CONFIG SET parameter value
:修改配置参数的值。DBSIZE
:返回数据库的键的数量。DEBUG OBJECT key
:获取关于 key 的调试信息。DEBUG SEGFAULT
:让服务器崩溃。FLUSHALL
:删除所有数据库中的所有键。FLUSHDB
:删除当前数据库中的所有键。INFO [section]
:获取服务器的信息和统计数据。LASTSAVE
:返回最近一次成功将数据保存到磁盘的 Unix 时间戳。MONITOR
:实时打印出服务器接收到的命令,调试用。PSYNC replicationid offset
:用于复制功能的部分重同步。REPLICAOF host port
:使服务器成为指定主服务器的从服务器。ROLE
:返回主/从实例的角色信息。SAVE
:同步保存数据到磁盘。SHUTDOWN [NOSAVE|SAVE]
:同步保存数据到磁盘,然后关闭服务器。SLAVEOF host port
:将当前服务器变为另一个服务器的从服务器。SLOWLOG subcommand [argument]
:管理慢查询日志。SYNC
:用于复制功能的完全重同步。TIME
:返回当前服务器时间。
这些命令涵盖了 Redis 的大部分功能,但可能不是全部。详细的命令列表和每个命令的完整说明可以在 Redis 官方文档 中找到。