键管理
//删除一个或者多个key
DEL key [key ...]
//检查键是否存在
EXISTS key
//查找所以符合给定模式的key
//示例:keys user:* 查找所以以user:开头的键
KEYS pattern
//仅当新键名不在的时,重命名key
RENAME key newkey
//返回存储的数据类型
TYPE key
//增量迭代key空间,适合处理大量键 例:SCAN 0 MATCH user:* COUNT 30
SCAN cursor [MATCH pattern] [COUNT count]
- SCAN:用于增量迭代键空间,适合处理大量键,避免一次性返回所有键导致性能问题。
- 0:游标(cursor),表示开始迭代。每次调用 SCAN 后,Redis 会返回一个新的游标,用于下一次迭代。
- MATCH user:*:指定匹配模式,只返回符合 user:* 模式的键。
- COUNT 20:指定每次迭代返回的键数量(近似值)。Redis 可能会返回多于或少于 10 个键。
//对列表、集合或有序集合中的元素进行排序
SORT key
//查看键内部信息(如引用计数、编码方式)
//例:OBJECT REFCOUNT mykey
OBJECT subcommand key
//查看键占用内存大小
MEMORY USAGE key
过期时间管理
// 为键设置过期时间(以秒为单位) expire mykey 60 60s后过期
EXPIRE key seconds
//为键设置过期时间,以unix 时间戳为单位。例:EXPIREAT mykey 1672502400 (在指定时间戳过期)
EXPIREAT key timestamp
//为键设置过期时间,以毫秒为单位
PEXPIRE key milliseconds
//获取键的剩余生存时间(以秒为单位)
TTL key
//以毫秒为单位
PTTL key
//移除键的过期时间,使其永久失效
PERSIST key
//更新键的最后访问时间,但不修改其值或过期时间
TOUCH key [key ...]
//配置 notify-keyspace-events 来启用过期事件通知
CONFIG SET notify-keyspace-events Ex
数据操作
// 序列化键的值,返回序列化后的数据
DUMP key
// 将 DUMP 命令序列化的值恢复到指定键
// 例: RESTORE newkey 0 "\x00\x03foo\x06\x00\xf0\x12\x34\x56\x78\x9a"
// 后面这一长串就是用dump命令得到的
RESTORE key ttl serialized-value
// 将键移动到另一个数据库 例: MOVE mykey 1
MOVE key db
// 将键复制到另一个键
COPY key newkey
服务器管理
// 清空当前数据库中的所有键
FLUSHDB
// 清空所有数据库中的所有键
FLUSHALL
// 切换到指定的数据库(Redis 默认有 16 个数据库,索引从 0 到 15)
SELECT index
// 返回当前数据库中的键数量
DBSIZE
调试与性能
// 测试与 Redis 服务器的连接是否正常。返回 PONG 表示连接正常
PING
// 回显指定的消息
ECHO message
// 返回当前服务器时间(以秒和微秒为单位)
TIME
// 查看慢查询日志
SLOWLOG GET 10 (获取最近的 10 条慢查询记录)
SLOWLOG LEN (获取当前慢查询日志中的记录数量)
SLOWLOG RESET (清空慢查询日志中的所有记录)
事务与脚本
// 开启事务
MULTI
// 执行事务中的所有命令
EXEC
// 取消事务
DISCARD
// 执行Lua脚本
// 例: EVAL "return redis.call('GET', KEYS[1])" 1 mykey
EVAL script numkeys key [key ...] arg [arg ...]
持久化
// 同步保存数据到磁盘
SAVE
// 异步保存数据到磁盘
BGSAVE
// 返回最后一次成功保存数据的时间戳
LASTSAVE
STR
// 设置键值对
SET key value
// 仅当键不存在时设置键值对
SETNX key value
// 设置键值对,并指定过期时间(以秒为单位)
SETEX key seconds value
// 设置键值对,并指定过期时间(以毫秒为单位)
PSETEX key milliseconds value
// 同时设置多个键值对
MSET key value [key value ...]
// 仅当所有键都不存在时,设置多个键值对
MSETNX key value [key value ...]
// 获取键对应的值
GET key
// 获取多个键的值
MGET key [key ...]
// 设置键的新值,并返回旧值
GETSET key value
// 获取键的值的子字符串(从 start 到 end)
// 例: GETRANGE mykey 0 4
GETRANGE key start end
// 获取键的值的长度
STRLEN key
// 将值追加到键的现有值末尾
APPEND key value
// 从指定偏移量开始,覆盖键的值
SETRANGE key offset value
// 将键的值加 1(值必须是整数)
INCR key
// 将键的值减 1(值必须是整数)
DECR key
// 将键的值增加指定的整数
INCRBY key increment
// 将键的值减少指定的整数
DECRBY key decrement
// 将键的值增加指定的浮点数
INCRBYFLOAT key increment
// 对多个键的值进行位运算(AND、OR、XOR、NOT),并将结果存储到 destkey
BITOP operation destkey key [key ...]
// 计算两个字符串的最长公共子序列(LCS)
STRALGO LCS key1 key2
LIST
// 将一个或多个值插入到列表的头部
LPUSH key value [value ...]
// 将一个或多个值插入到列表的尾部
RPUSH key value [value ...]
// 仅当列表存在时,将一个值插入到列表的头部
LPUSHX key value
// 仅当列表存在时,将一个值插入到列表的尾部
RPUSHX key value
// 在列表中指定元素的前面或后面插入一个新元素
// 例: LINSERT mylist BEFORE "World" "There"
LINSERT key BEFORE|AFTER pivot value
// 移除并返回列表的第一个元素
LPOP key
// 移除并返回列表的最后一个元素
RPOP key
// 移除源列表的最后一个元素,并将其插入到目标列表的头部
RPOPLPUSH source destination
// 阻塞式移除并返回列表的第一个元素。如果列表为空,会阻塞直到超时或有元素可弹出
// 例: BLPOP mylist 10
BLPOP key [key ...] timeout
// 阻塞式移除并返回列表的最后一个元素。如果列表为空,会阻塞直到超时或有元素可弹出
BRPOP key [key ...] timeout
// 阻塞式移除源列表的最后一个元素,并将其插入到目标列表的头部。如果列表为空,会阻塞直到超时或有元素可弹出
BRPOPLPUSH source destination timeout
// 移除列表中指定数量的匹配元素
LREM key count value
// 获取列表中指定范围的元素
LRANGE key start stop
// 获取列表中指定索引位置的元素
LINDEX key index
// 获取列表的长度
LLEN key
// 设置列表中指定索引位置的元素值
LSET key index value
// 修剪列表,只保留指定范围内的元素
LTRIM key start stop
// 将元素从一个列表移动到另一个列表
LMOVE source destination LEFT|RIGHT LEFT|RIGHT
SET
// 向集合中添加一个或多个成员
SADD key member [member ...]
// 从集合中移除一个或多个成员
SREM key member [member ...]
// 随机移除并返回集合中的一个或多个成员
SPOP key [count]
// 获取集合中的所有成员
SMEMBERS key
// 随机返回集合中的一个或多个成员(不删除)
SRANDMEMBER key [count]
// 检查成员是否在集合中
SISMEMBER key member
// 获取集合的成员数量
SCARD key
// 返回多个集合的交集
SINTER key [key ...]
// 计算多个集合的交集,并将结果存储到目标集合中
SINTERSTORE destination key [key ...]
// 返回多个集合的并集
SUNION key [key ...]
// 计算多个集合的并集,并将结果存储到目标集合中
SUNIONSTORE destination key [key ...]
// 返回多个集合的差集(以第一个集合为基准)
SDIFF key [key ...]
// 计算多个集合的差集,并将结果存储到目标集合中
SDIFFSTORE destination key [key ...]
// 将成员从源集合移动到目标集合
// 例: SMOVE set1 set2 "Hello"
SMOVE source destination member
// 增量迭代集合中的成员, 和通用命令中的差不多
SSCAN key cursor [MATCH pattern] [COUNT count]
ZSET
// 向有序集合中添加一个或多个成员
// NX: 仅当成员不存在时添加
// XX: 仅当成员存在时更新
// CH: 返回被修改的成员数量(包括新增和更新)
// INCR: 将成员的分数增加指定值(类似 ZINCRBY)
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
// 从有序集合中移除一个或多个成员
ZREM key member [member ...]
// 移除有序集合中指定排名范围的成员 (0是分数最小的)
ZREMRANGEBYRANK key start stop
// 移除有序集合中指定分数范围的成员
ZREMRANGEBYSCORE key min max
// 获取有序集合中指定排名范围的成员(按分数从小到大排序)
// WITHSCORES:返回成员及其分数
ZRANGE key start stop [WITHSCORES]
// 获取有序集合中指定排名范围的成员(按分数从大到小排序)
ZREVRANGE key start stop [WITHSCORES]
// 获取有序集合中指定分数范围的成员(按分数从小到大排序)
// LIMIT offset count 用于分页查询或限制返回结果的数量
// offset: 跳过的成员数量 count: 返回的成员数量
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
// 获取有序集合中指定分数范围的成员(按分数从大到小排序)
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
// 增量迭代有序集合中的成员
ZSCAN key cursor [MATCH pattern] [COUNT count]
// 获取成员在有序集合中的排名(按分数从小到大排序,从 0 开始)
ZRANK key member
// 获取成员在有序集合中的排名(按分数从大到小排序,从 0 开始)
ZREVRANK key member
// 获取成员的分数
ZSCORE key member
// 获取有序集合的成员数量
ZCARD key
// 统计有序集合中指定分数范围的成员数量
ZCOUNT key min max
// 计算多个有序集合的交集,并将结果存储到目标有序集合中
// 为每个有序集合的分数设置权重, 权重是一个浮点数,默认值为1, 权重会与每个有序集合中成员的分数相乘, 权重的数量必须与 numkeys 一致
// 指定交集结果的分数聚合方式: SUM: 将成员的分数相加(默认行为), MIN: 取成员的最小分数, MAX: 取成员的最大分数
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
// 计算多个有序集合的并集,并将结果存储到目标有序集合中
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
// 移除并返回有序集合中分数最小的成员(默认 1 个)
ZPOPMIN key [count]
// 移除并返回有序集合中分数最大的成员(默认 1 个)
ZPOPMAX key [count]
// 阻塞式移除并返回有序集合中分数最小的成员
BZPOPMIN key [key ...] timeout
// 阻塞式移除并返回有序集合中分数最大的成员
BZPOPMAX key [key ...] timeout
HASH
// 设置哈希表中一个或多个字段的值
HSET key field value [field value ...]
// 仅当字段不存在时,设置哈希表中字段的值
HSETNX key field value
// 获取哈希表中字段的值
HGET key field
// 获取哈希表中多个字段的值
HMGET key field [field ...]
// 获取哈希表中的所有字段和值
HGETALL key
// 获取哈希表中的所有字段
HKEYS key
// 获取哈希表中的所有值
HVALS key
// 删除哈希表中的一个或多个字段
HDEL key field [field ...]
// 检查哈希表中是否存在指定字段
HEXISTS key field
// 获取哈希表中字段的数量
HLEN key
// 获取哈希表中字段值的长度
HSTRLEN key field
// 将哈希表中字段的值增加指定的整数
HINCRBY key field increment
// 将哈希表中字段的值增加指定的浮点数
HINCRBYFLOAT key field increment
// 增量迭代哈希表中的字段和值, 同上
HSCAN key cursor [MATCH pattern] [COUNT count]
HyperLogLog
// 向 HyperLogLog 中添加元素
PFADD key element [element ...]
// 统计 HyperLogLog 中不重复元素的数量
PFCOUNT key [key ...]
// 将多个 HyperLogLog 合并到一个目标 HyperLogLog 中
PFMERGE destkey sourcekey [sourcekey ...]
Pub/Sub
// 向指定频道发布消息
PUBLISH channel message
// 订阅一个或多个频道
SUBSCRIBE channel [channel ...]
// 订阅与模式匹配的频道
PSUBSCRIBE pattern [pattern ...]
// 取消订阅一个或多个频道
UNSUBSCRIBE [channel [channel ...]]
// 取消订阅与模式匹配的频道
PUNSUBSCRIBE [pattern [pattern ...]]