Redis命令合集


Redis命令

1. 基本操作

命令 功能描述
redis-server 启动 Redis 服务
redis-cli 启动 Redis 命令行客户端(Redis CLI Client)
telnet 127.0.0.1 6379 通过 telnet 连接 Redis 服务(默认地址 127.0.0.1,端口 6379)
quit / exit 退出 Redis 命令行客户端

2. 字符串(Strings)

命令 功能描述 时间复杂度
SET key value 设置键 key 的值为 value O(1)
SETEX key seconds value 设置键 key 的值为 value,并指定超时时间(单位:秒) O(1)
PSETEX key milliseconds value 设置键 key 的值为 value,并指定超时时间(单位:毫秒) O(1)
SETNX key value 仅当键 key 不存在时,才将其值设置为 value(不存在则设值) O(1)
GET key 返回键 key 存储的值 O(1)
GETSET key value 将键 key 的值设为 value,同时返回设置前的旧值;无旧值则返回 nil O(1)
APPEND key value 若 key 存在且为字符串,将 value 追加到原字符串末尾;若 key 不存在,直接设值为 value O(1)
SETRANGE key offset value 从偏移量 offset(从 0 开始)起,用 value 覆盖键 key 存储的原字符串 O(1)
GETRANGE key start end 返回键 key 存储的字符串中,从 start 到 end(含两端)的子串 O(N)
INCR / DECR key 将键 key 存储的数字值加 1 / 减 1;key 不存在则先初始化为 0 再运算 O(1)
INCRBY / DECRBY key increment/decrement 将键 key 存储的数字值加 / 减指定量(increment/decrement);key 不存在则初始化为 0 O(1)
INCRBYFLOAT key increment 将键 key 存储的浮点数值加指定增量(increment);key 不存在则初始化为 0 O(1)
MSET key value [key value ...] 同时为多个键设置对应的值 O(N)
MGET key [key ...] 同时返回多个给定键的值 O(N)
MSETNX key value [key value ...] 仅当所有给定键都不存在时,才同时设值;有一个键存在则全部不设 O(N)
DEL key [key ...] 删除一个或多个键的值 O(1)
STRLEN key 获取键 key 对应值的字符串长度 O(1)

3. 列表(Lists)

命令 功能描述 时间复杂度
LPUSH key element [element ...] 将一个或多个元素插入列表 key 的表头(左侧);key 不存在则创建列表 O(1)
LPUSHX key element [element ...] 仅当 key 存在且为列表时,才将元素插入表头 O(1)
RPUSH key element [element ...] 将一个或多个元素插入列表 key 的表尾(右侧);key 不存在则创建列表 O(1)
RPUSHX key element [element ...] 仅当 key 存在且为列表时,才将元素插入表尾 O(1)
LPOP key [count] 从列表 key 的表头移除并返回 1 个或 count 个元素;key 不存在则返回 nil O(1)
RPOP key [count] 从列表 key 的表尾移除并返回 1 个或 count 个元素;key 不存在则返回 nil O(1)
RPOPLPUSH source destination 原子操作:将 source 列表的表尾元素弹出,插入到 destination 列表的表头 O(1)
LREM key count element 移除列表 key 中与 element 相等的 count 个元素,返回被移除的元素数量 O(N)
LLEN key 返回列表 key 的长度;key 不存在则返回 0;非列表类型返回错误 O(1)
LINDEX key index 返回列表 key 中索引为 index 的元素 O(N)
LINSERT key BEFORE|AFTER pivot element 将 element 插入列表 key 中,位于 pivot 元素之前(BEFORE)或之后(AFTER) O(N)
LSET key index element 将列表 key 中索引为 index 的元素设为 element O(1)
LRANGE key start stop 返回列表 key 中,从 start 到 stop(含两端)的所有元素 O(S+N)
LTRIM key start stop 仅保留列表 key 中,索引在 start 到 stop(含两端)之间的元素 O(N)
BLPOP key [key ...] timeout 阻塞版 LPOP:列表无元素时阻塞,直到超时或有元素可弹出 O(1)
BRPOP key [key ...] timeout 阻塞版 RPOP:列表无元素时阻塞,直到超时或有元素可弹出 O(1)
BRPOPLPUSH source destination timeout 阻塞版 RPOPLPUSH:source 列表无元素时阻塞,直到超时或有元素 O(1)

4. 集合(Sets)

命令 功能描述 时间复杂度
SADD key member [member ...] 将一个或多个元素加入集合 key;已存在的元素会被忽略 O(N)
SREM key member [member ...] 从集合 key 中移除一个或多个元素;不存在的元素会被忽略 O(N)
SMEMBERS key 返回集合 key 中的所有成员 O(N)
SISMEMBER key member 判断 member 是否为集合 key 的成员;是返回 1,否或 key 不存在返回 0 O(1)
SPOP key [count] 移除并返回集合 key 中的 1 个或 count 个随机元素 O(1)
SRANDMEMBER key [count] 返回集合 key 中的 1 个或 count 个随机元素;仅返回不移除 O(1)
SMOVE source destination member 原子操作:将 member 从 source 集合移动到 destination 集合 O(1)
SCARD key 返回集合 key 的基数(元素数量) O(1)
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] 基于游标的增量迭代器,用于遍历集合元素;类似命令有 HSCAN、ZSCAN O(1)
SINTER key [key ...] 返回一个或多个集合的交集(共同元素) O(N*M)
SINTERSTORE destination key [key ...] 功能同 SINTER,但将交集结果存储到 destination 集合(覆盖已有) O(N*M)
SUNION key [key ...] 返回一个或多个集合的并集(所有元素,去重) O(N*M)
SUNIONSTORE destination key [key ...] 功能同 SUNION,但将并集结果存储到 destination 集合(覆盖已有) O(N*M)
SDIFF key [key ...] 返回一个或多个集合的差集(前者有、后者无的元素) O(N*M)
SDIFFSTORE destination key [key ...] 功能同 SDIFF,但将差集结果存储到 destination 集合(覆盖已有) O(N*M)

5. 有序集合(Sorted Sets)

命令 功能描述 时间复杂度
ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...] 将一个或多个(score, member)对加入有序集合 key;支持 NX(不存在才加)等选项 O(M*LogN)
ZREM key member [member ...] 从有序集合 key 中移除一个或多个成员;不存在的成员忽略 O(N)
ZSCORE key member 返回有序集合 key 中 member 的分数(score) O(1)
ZINCRBY key increment member 为有序集合 key 中 member 的分数加增量 increment O(LogN)
ZCARD key 返回有序集合 key 的基数(成员数量) O(1)
ZCOUNT key min max 返回有序集合 key 中,分数在 min 到 max(含两端)之间的成员数量 O(1)
ZRANGE key start stop [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES] 返回有序集合 key 中指定区间的成员(默认按 score 从小到大排序);可带分数返回 O(LogN+M)
ZREVRANGE key start stop [WITHSCORES] 返回有序集合 key 中指定区间的成员(按 score 从大到小排序);可带分数返回 O(LogN+M)
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回有序集合 key 中,分数在 min 到 max(含两端)的成员(按 score 升序) O(LogN+M)
ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回有序集合 key 中,分数在 min 到 max(含两端)的成员(按 score 降序) O(LogN+M)
ZRANK key member 返回有序集合 key 中 member 的排名(按 score 升序,排名从 0 开始) O(LogN)
ZREVRANK key member 返回有序集合 key 中 member 的排名(按 score 降序,排名从 0 开始) O(LogN)
ZREMRANGEBYRANK key start stop 移除有序集合 key 中,排名在 start 到 stop(含两端)的所有成员 O(LogN+M)
ZREMRANGEBYSCORE key min max 移除有序集合 key 中,分数在 min 到 max(含两端)的所有成员 O(LogN+M)
ZREMRANGEBYLEX key min max 移除有序集合 key 中,字典序在 min 到 max(含两端)的所有成员 O(LogN+M)
ZRANGEBYLEX key min max [LIMIT offset count] 返回有序集合 key 中,字典序在 min 到 max(含两端)的成员 O(LogN)
ZLEXCOUNT key min max 返回有序集合 key 中,字典序在 min 到 max(含两端)的成员数量 O(LogN)
ZSCAN cursor [MATCH pattern] [COUNT count] [TYPE type] 基于游标的增量迭代器,用于遍历有序集合元素 O(1)
ZUNIONSTORE destination numkeys key [key ...] 计算一个或多个有序集合的并集,将结果存储到 destination O(N*LogN)
ZINTERSTORE destination numkeys key [key ...] 计算一个或多个有序集合的交集,将结果存储到 destination O(N*LogN)

6. 哈希(Hashes)

命令 功能描述 时间复杂度
HSET key field value [field value ...] 为哈希表 key 的一个或多个域(field)设置对应值(value) O(1)
HSETNX key field value 仅当哈希表 key 的域 field 不存在时,才设置其值为 value O(1)
HGET key field 返回哈希表 key 中域 field 对应的值 O(1)
HEXISTS key field 判断哈希表 key 中是否存在域 field;是返回 1,否返回 0 O(1)
HDEL key field [field ...] 从哈希表 key 中删除一个或多个域(field) O(1)
HLEN key 返回哈希表 key 中的域数量 O(1)
HSTRLEN key field 返回哈希表 key 中,域 field 对应值的字符串长度 O(1)
HINCRBY key field increment 将哈希表 key 中域 field 的值加指定整数增量(increment) O(1)
HINCRBYFLOAT key field increment 将哈希表 key 中域 field 的值加指定浮点增量(increment) O(1)
HMSET key field value [field value ...] 功能同 HSET,同时为多个域设值;已过时 O(N)
HMGET key field [field ...] 同时返回哈希表 key 中多个域(field)对应的值 O(N)
HKEYS key 返回哈希表 key 中的所有域(field) O(N)
HVALS key 返回哈希表 key 中所有域对应的值(value) O(N)
HGETALL key 返回哈希表 key 中所有的(field, value)对 O(N)
HSCAN key cursor [MATCH pattern] [COUNT count] 基于游标的增量迭代器,用于遍历哈希表元素 O(1)

7. 位图(Bitmaps)

命令 功能描述 时间复杂度
SETBIT key offset value 设置或清除键 key 对应位图中,偏移量 offset 处的位(value 为 0 或 1) O(1)
GETBIT key offset 读取键 key 对应位图中,偏移量 offset 处的位值(0 或 1) O(1)
BITOP operation destkey key [key ...] 对一个或多个位图执行位逻辑运算(operation:AND/OR/XOR/NOT),结果存到 destkey O(N)
BITPOS key bit [start [end [BYTE|BIT]]] 返回键 key 对应位图中,第一个值为 bit(0 或 1)的位位置 O(N)
BITCOUNT key [start [end [BYTE|BIT]]] 返回键 key 对应位图中,从 start 到 end(含两端)的所有 “1” 位数量 O(N)

8. 位域(Bitfields)

命令 功能描述 时间复杂度
BITFIELD key [GET encoding offset| [OVERFLOW WRAP|SAT|FAIL] <SET encoding offset value|INCRBY encoding offset increment> ...] 将字符串 key 视为 bit 数组,执行任意位域整数运算(支持 GET/SET/INCRBY,可指定溢出策略) O(1)
BITFIELD_RO key [GET encoding offset [GET encoding offset ...]] 功能同 BITFIELD,但仅支持只读操作(GET) O(1)

9. HyperLogLog

命令 功能描述 时间复杂度
PFADD key [element [element ...]] 将一个或多个元素加入 HyperLogLog 结构 key;key 不存在则创建 O(1)
PFCOUNT key [key ...] 返回一个或多个 HyperLogLog 结构的近似基数(元素去重后的数量) O(1)
PFMERGE destkey sourcekey [sourcekey ...] 将一个或多个 sourcekey 的 HyperLogLog 数据合并到 destkey O(N)
PFDEBUG subcommand key 调试 HyperLogLog 值的内部命令(用于开发 / 排查) -

10. 地理空间(Geospatial)

命令 功能描述 时间复杂度
GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...] 将一个或多个(经纬度,成员)对加入地理空间集合 key O(1)
GEODIST key member1 member2 [M|KM|FT|MI] 计算地理空间集合 key 中,member1 与 member2 的距离;单位可选(米 / 千米 / 英尺 / 英里) O(1)
GEOHASH key member [member ...] 以哈希字符串形式,返回地理空间集合 key 中成员的地理信息 O(1)
GEOPOS key member [member ...] 返回地理空间集合 key 中,一个或多个成员的经纬度坐标 O(1)
GEORADIUS key longitude latitude radius M|KM|FT|MI 以(longitude, latitude)为中心,半径 radius 内的地理成员,返回结果 O(N+LogM)
GEORADIUSBYMEMBER key member radius M|KM|FT|MI 以地理空间集合 key 中的 member 为中心,半径 radius 内的成员,返回结果 O(N+LogM)
GEOSEARCH key FROMMEMBER member|FROMLONLAT longitude latitude BYRADIUS radius M|KM|FT|MI|BYBOX width height M|KM|FT|MI [ASC|DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH] 按条件搜索地理成员:支持 “按成员” 或 “按经纬度” 为中心,范围为圆形 / 矩形,可带附加信息 O(N+LogM)
GEOSEARCHSTORE destination source FROMMEMBER member|FROMLONLAT longitude latitude BYRADIUS radius M|KM|FT|MI|BYBOX width height M|KM|FT|MI [ASC|DESC] [COUNT count [ANY]] [STOREDIST] 功能同 GEOSEARCH,但将搜索结果存储到 destination 集合 O(LogN+M)

11. 流(Streams)

命令 功能描述 时间复杂度
XADD key [NOMKSTREAM] [MAXLEN|MINID [=[] threshold [LIMIT count]]] *[id field value [field value ...] 向流 key 追加新消息;key 不存在则创建;支持限制消息数量 O(1)
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...] 读取流 key 中比指定 id 大的消息;无消息则阻塞至超时或有新消息 O(1)
XLEN key 返回流 key 中存储的消息数量 O(1)
XRANGE key start end [COUNT count] 返回流 key 中,id 在 start 到 end(含两端)之间的消息 O(N)
XINFO STREAM key [FULL [COUNT count]] 返回流 key 的详细信息(如消息数、消费者组等) O(1)
XACK key group id [id ...] 确认流 key 中,消费者组 group 已成功处理的消息(id 指定) O(1)
XCLAIM key group consumer min-idle-time id [id ...] 为消费者组 group 的 consumer “认领” 流 key 中闲置超时的消息 O(1)
XDEL key id [id ...] 从流 key 中删除指定 id 的消息,返回删除的消息数量 O(1)
XGROUP CREATE key groupname id|$ [MKSTREAM] [ENTRIESREAD entries_read] 为流 key 创建消费者组 groupname;id 指定起始消息位置 O(1)
XGROUP CREATECONSUMER key groupname consumername 在消费者组 groupname 中,创建新消费者 consumername O(1)
XGROUP DELCONSUMER key groupname consumername 从消费者组 groupname 中,删除消费者 consumername O(1)
XGROUP DESTROY key groupname 删除流 key 的消费者组 groupname O(1)
XGROUP SETID key groupname id|$ [ENTRIESREAD entries_read] 设置消费者组 groupname 的 “最后交付 id”(调整消息消费起点) O(1)
XINFO CONSUMERS key groupname 返回流 key 的消费者组 groupname 中,所有消费者的信息 O(1)
XINFO GROUPS key 返回流 key 的所有消费者组信息 O(1)
XTRIM key MAXLEN|MINID [=|~] threshold [LIMIT count] 从流 key 的开头删除消息,按 “最大长度” 或 “最小 id” 限制消息数量 O(1)

0 条评论

发表评论

暂无评论,欢迎发表您的观点!