redis常用命令

一.通用命令

目录

一.通用命令

1. 键管理

2.过期时间管理

3.数据操作

4.服务器管理

 5.调试与性能

6.事务与脚本

7.持久化

二.字符串(string)

三.列表(list)

四.集合(set)

五.有序集合(sorted set)

六.哈希表(hash)

七.HyperLogLog

八.发布/订阅(Pub/Sub)

九.模块(Module)


1. 键管理

// 删除一个或多个键 例: DEL mykey1 mykey2
DEL key [key ...]

// 检查键是否存在,返回 1 表示存在,0 表示不存在
EXISTS key

// 查找所有符合给定模式(pattern)的键 
// 例: KEYS user:* (查找所有以 user: 开头的键)
KEYS pattern

// 重命名键 例: RENAME oldkey newkey
RENAME key newkey 

// 仅当新键名不存在时,重命名键
RENAMENX key newkey

// 返回键存储的数据类型 例: TYPE mykey (返回 string、list、hash、set、zset 等)
TYPE key

// 增量迭代键空间,适合处理大量键 例: SCAN 0 MATCH user:* COUNT 10
SCAN cursor [MATCH pattern] [COUNT count]

// 对列表、集合或有序集合中的元素进行排序
SORT key 

// 查看键的内部信息(如引用计数、编码方式等)
// 例: OBJECT REFCOUNT mykey
OBJECT subcommand key

// 查看键占用的内存大小
MEMORY USAGE key

SCAN 0 MATCH user:* COUNT 10 是 Redis 中用于增量迭代键空间的命令。它的作用是逐步遍历数据库中符合 user:* 模式的键,每次返回最多 10 个键。以下是该命令的详细说明:

  • SCAN:用于增量迭代键空间,适合处理大量键,避免一次性返回所有键导致性能问题。

  • 0:游标(cursor),表示开始迭代。每次调用 SCAN 后,Redis 会返回一个新的游标,用于下一次迭代。

  • MATCH user:*:指定匹配模式,只返回符合 user:* 模式的键。

  • COUNT 10:指定每次迭代返回的键数量(近似值)。Redis 可能会返回多于或少于 10 个键。

2.过期时间管理

// 为键设置过期时间(以秒为单位) 例: EXPIRE mykey 60 (60 秒后过期)
EXPIRE key seconds

// 为键设置过期时间(以 UNIX 时间戳为单位) 例: EXPIREAT mykey 1672502400 (在指定时间戳过期)
EXPIREAT key timestamp

// 为键设置过期时间(以毫秒为单位)
PEXPIRE key milliseconds

// 获取键的剩余生存时间(以秒为单位)返回 -2 表示键不存在,-1 表示键没有设置过期时间。
TTL key

// 获取键的剩余生存时间(以毫秒为单位)
PTTL key

// 移除键的过期时间,使其永久有效 
PERSIST key

// 更新键的最后访问时间,但不修改其值或过期时间
TOUCH key [key ...]

// 配置 notify-keyspace-events 来启用过期事件通知
CONFIG SET notify-keyspace-events Ex

3.数据操作

// 序列化键的值,返回序列化后的数据 
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

4.服务器管理

// 清空当前数据库中的所有键
FLUSHDB

// 清空所有数据库中的所有键
FLUSHALL

// 切换到指定的数据库(Redis 默认有 16 个数据库,索引从 0 到 15)
SELECT index

// 返回当前数据库中的键数量
DBSIZE

 5.调试与性能

// 测试与 Redis 服务器的连接是否正常。返回 PONG 表示连接正常
PING

// 回显指定的消息
ECHO message

// 返回当前服务器时间(以秒和微秒为单位)
TIME

// 查看慢查询日志
SLOWLOG GET 10 (获取最近的 10 条慢查询记录)
SLOWLOG LEN (获取当前慢查询日志中的记录数量)
SLOWLOG RESET (清空慢查询日志中的所有记录)

6.事务与脚本

// 开启事务
MULTI

// 执行事务中的所有命令
EXEC

// 取消事务
DISCARD

// 执行Lua脚本
// 例: EVAL "return redis.call('GET', KEYS[1])" 1 mykey
EVAL script numkeys key [key ...] arg [arg ...]

7.持久化

// 同步保存数据到磁盘
SAVE

// 异步保存数据到磁盘
BGSAVE

// 返回最后一次成功保存数据的时间戳
LASTSAVE

二.字符串(string)

Redis 的字符串(String)是最基本的数据类型,可以存储文本、数字或二进制数据。字符串类型的值最大可以存储 512MB 的数据。

// 设置键值对
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)

Redis 的列表(List)是一个有序的字符串集合,基于双向链表实现。它支持从头部或尾部插入和删除元素,适合用作队列(FIFO)或栈(LIFO)。

// 将一个或多个值插入到列表的头部
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)

Redis 的集合(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]

五.有序集合(sorted set)

Redis 的有序集合(Sorted Set / ZSet)是一个有序的字符串集合,每个元素关联一个分数(score),用于排序。有序集合结合了集合和列表的特性,既保证了元素的唯一性,又支持按分数排序和范围查询。

// 向有序集合中添加一个或多个成员
// 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)

Redis 的哈希表(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 是一种用于基数统计(估算集合中不重复元素的数量)的数据结构。

// 向 HyperLogLog 中添加元素
PFADD key element [element ...]

// 统计 HyperLogLog 中不重复元素的数量
PFCOUNT key [key ...]

// 将多个 HyperLogLog 合并到一个目标 HyperLogLog 中
PFMERGE destkey sourcekey [sourcekey ...]

八.发布/订阅(Pub/Sub)

Redis 的发布/订阅(Pub/Sub)是一种消息通信模式,允许客户端通过频道(channel)发布和订阅消息。发布者将消息发送到频道,订阅者可以接收并处理这些消息。Redis 的发布/订阅模式非常适合实现实时消息通知、事件驱动架构等场景。

// 向指定频道发布消息
PUBLISH channel message

// 订阅一个或多个频道
SUBSCRIBE channel [channel ...]

// 订阅与模式匹配的频道
PSUBSCRIBE pattern [pattern ...]

// 取消订阅一个或多个频道
UNSUBSCRIBE [channel [channel ...]]

// 取消订阅与模式匹配的频道
PUNSUBSCRIBE [pattern [pattern ...]]

九.模块(Module)

Redis 模块(Module)是 Redis 的一种扩展机制,允许开发者通过加载外部模块来扩展 Redis 的功能。模块可以添加新的数据类型、命令和功能,从而满足特定的业务需求。Redis 模块使用 C 语言编写,并通过 Redis 提供的 API 与 Redis 核心进行交互。

// 加载指定路径的模块
// 例: MODULE LOAD /path/to/mymodule.so
MODULE LOAD path

// 列出已加载的模块
MODULE LIST

// 卸载指定名称的模块
MODULE UNLOAD name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值