redis 所有常用命令,整理在一起了方便拿取,并配上了思维导图

在这里插入图片描述


一、键(Key)相关命令

这些命令用于管理键本身,与键的数据类型无关。

命令语法描述示例
DELDEL key [key …]删除一个或多个键。返回被删除键的数量。DEL name age
EXISTSEXISTS key [key …]检查一个或多个键是否存在。返回存在的数量。EXISTS name
EXPIREEXPIRE key seconds为键设置生存时间(秒),超时后自动删除。EXPIRE session:123 3600
PEXPIREPEXPIRE key milliseconds类似 EXPIRE,但时间单位为毫秒。PEXPIRE temp_key 5000
TTLTTL key查看键的剩余生存时间(秒)。-2=键不存在,-1=键无过期时间。TTL session:123
PTTLPTTL key类似 TTL,但返回毫秒。PTTL session:123
PERSISTPERSIST key移除键的过期时间,使其成为永久键。PERSIST session:123
KEYSKEYS pattern(生产环境慎用) 查找所有符合给定模式 pattern 的键。KEYS user:*
SCANSCAN cursor [MATCH pattern] [COUNT count](安全推荐) 增量式迭代键,避免 KEYS 命令造成的阻塞。SCAN 0 MATCH user:* COUNT 10
RENAMERENAME key newkey将键重命名。如果 newkey 已存在,则会被覆盖。RENAME old_name new_name
RENAMENXRENAMENX key newkey仅当 newkey 不存在时,将 key 改名为 newkey。RENAMENX old_name new_name
TYPETYPE key返回键所存储的值的类型。TYPE mylist
DUMPDUMP key序列化给定键,并返回被序列化的值。
RESTORERESTORE key ttl serialized-value反序列化 DUMP 命令序列化的值,并将其与键关联。
RANDOMKEYRANDOMKEY从当前数据库中随机返回一个键。
MOVEMOVE key db将当前数据库的 key 移动到给定的数据库 db 中。

二、字符串(String)相关命令

字符串是 Redis 最基本的数据类型,可以包含任何数据,如文本、数字(整数/浮点数)或二进制数据。

命令语法描述示例
SETSET key value [EX secondsPX msNX
GETGET key获取指定键的值。GET name
MSETMSET key value [key value …]同时设置一个或多个键值对。MSET k1 v1 k2 v2
MGETMGET key [key …]获取所有给定键的值。MGET k1 k2
SETNXSETNX key value(SET if Not eXists) 只有在键 key 不存在的情况下才设置值。是 SET key value NX 的旧式写法。SETNX lock_key 1
SETEXSETEX key seconds value设置值并同时指定过期时间(秒)。是 SET key value EX seconds 的旧式写法。SETEX session_id 3600 “sess_data”
PSETEXPSETEX key milliseconds value类似 SETEX,但时间单位为毫秒。PSETEX temp_key 5000 “temp”
GETSETGETSET key value设置新值并返回旧值。GETSET counter 0
INCRINCR key将键中储存的数字值增一。如果键不存在,会先初始化为0再执行。INCR page_views
DECRDECR key将键中储存的数字值减一。DECR inventory
INCRBYINCRBY key increment将键所储存的值加上给定的增量值。INCRBY counter 5
DECRBYDECRBY key decrement将键所储存的值减去给定的减量值。DECRBY inventory 3
INCRBYFLOATINCRBYFLOAT key increment将键所储存的值加上给定的浮点数增量值。INCRBYFLOAT price 2.5
APPENDAPPEND key value如果键 key 已经存在并且是一个字符串,将 value 追加到原有值的末尾。APPEND msg " world"
STRLENSTRLEN key返回键所储存的字符串值的长度。STRLEN name
GETRANGEGETRANGE key start end返回键中字符串值的子字符串,由 start 和 end 偏移量决定(闭区间)。GETRANGE name 0 3
SETRANGESETRANGE key offset value用 value 参数覆写键所储存的字符串值,从偏移量 offset 开始。SETRANGE greeting 6 “Redis”

三、哈希(Hash)相关命令

哈希是键值对集合,非常适合存储对象(如用户信息)。

命令语法描述示例
HSETHSET key field value [field value …]为哈希表中的字段赋值。可以设置多个。HSET user:1000 name “Alice” age 30
HGETHGET key field获取哈希表中指定字段的值。HGET user:1000 name
HMSETHMSET key field value [field value …](已弃用,建议用 HSET) 同时将多个 field-value 对设置到哈希表中。HMSET user:1000 name “Alice” age 30
HMGETHMGET key field [field …]获取哈希表中所有给定字段的值。HMGET user:1000 name age
HGETALLHGETALL key获取哈希表中所有的字段和值。HGETALL user:1000
HDELHDEL key field [field …]删除哈希表中的一个或多个指定字段。HDEL user:1000 age
HEXISTSHEXISTS key field查看哈希表中,指定的字段是否存在。HEXISTS user:1000 name
HKEYSHKEYS key获取哈希表中的所有字段名。HKEYS user:1000
HVALSHVALS key获取哈希表中的所有值。HVALS user:1000
HLENHLEN key获取哈希表中字段的数量。HLEN user:1000
HINCRBYHINCRBY key field increment为哈希表中的字段值加上整型增量。HINCRBY user:1000 score 5
HINCRBYFLOATHINCRBYFLOAT key field increment为哈希表中的字段值加上浮点数增量。HINCRBYFLOAT user:1000 height 0.5
HSCANHSCAN key cursor [MATCH pattern] [COUNT count]增量式迭代哈希表中的键值对。HSCAN user:1000 0 MATCH n*
HSETNXHSETNX key field value只有在字段 field 不存在时,才设置哈希表字段的值。HSETNX user:1000 email “a@b.com”

四、列表(List)相关命令

列表是简单的字符串列表,按照插入顺序排序。你可以从列表的头部或尾部添加/移除元素。

命令语法描述示例
LPUSHLPUSH key element [element …]将一个或多个值插入到列表的头部(左边)。LPUSH mylist “world” “hello”
RPUSHRPUSH key element [element …]将一个或多个值插入到列表的尾部(右边)。RPUSH mylist “world”
LPOPLPOP key [count]移除并返回列表头部的第一个元素。LPOP mylist
RPOPRPOP key [count]移除并返回列表尾部的第一个元素。RPOP mylist
LRANGELRANGE key start stop返回列表中指定区间内的元素,基于0的索引,-1 表示最后一个元素。LRANGE mylist 0 -1
LLENLLEN key获取列表的长度。LLEN mylist
LINDEXLINDEX key index通过索引获取列表中的元素。LINDEX mylist 1
LSETLSET key index element通过索引来设置元素的值。LSET mylist 1 “new_value”
LINSERTLINSERT key BEFOREAFTER pivot element在列表的元素 pivot 的前或后插入元素。
LREMLREM key count element根据参数 count 的值,移除列表中与参数 element 相等的元素。
count > 0: 从表头开始移除 count 个。
count < 0: 从表尾开始移除 abs(count) 个。
count = 0: 移除所有。
LREM mylist 1 “hello”
LTRIMLTRIM key start stop对一个列表进行修剪,只保留指定区间内的元素。LTRIM mylist 1 3
RPOPLPUSHRPOPLPUSH source destination将 source 列表的最后一个元素弹出并返回,同时将该元素 LPUSH 到 destination 列表。RPOPLPUSH list1 list2
BLPOPBLPOP key [key …] timeout阻塞版 LPOP。如果列表为空,命令会阻塞连接直到超时或有元素可弹出。BLPOP mylist 30
BRPOPBRPOP key [key …] timeout阻塞版 RPOP。BRPOP mylist 30

五、集合(Set)相关命令

集合是 String 类型的无序集合,集合成员是唯一的,不允许重复。

命令语法描述示例
SADDSADD key member [member …]向集合添加一个或多个成员。SADD tags redis db
SREMSREM key member [member …]移除集合中一个或多个成员。SREM tags db
SMEMBERSSMEMBERS key返回集合中的所有成员。SMEMBERS tags
SISMEMBERSISMEMBER key member判断 member 元素是否是集合 key 的成员。SISMEMBER tags redis
SCARDSCARD key获取集合的成员数。SCARD tags
SRANDMEMBERSRANDMEMBER key [count]随机返回集合中一个或多个成员,但不移除。SRANDMEMBER tags 2
SPOPSPOP key [count]移除并返回集合中的一个或多个随机成员。SPOP tags 1
SINTERSINTER key [key …]返回多个集合的交集。SINTER set1 set2
SUNIONSUNION key [key …]返回多个集合的并集。SUNION set1 set2
SDIFFSDIFF key [key …]返回第一个集合与其他集合之间的差集。SDIFF set1 set2
SINTERSTORESINTERSTORE destination key [key …]将交集结果存入 destination 集合。SINTERSTORE new_set set1 set2
SUNIONSTORESUNIONSTORE destination key [key …]将并集结果存入 destination 集合。SUNIONSTORE new_set set1 set2
SDIFFSTORESDIFFSTORE destination key [key …]将差集结果存入 destination 集合。SDIFFSTORE new_set set1 set2
SMOVESMOVE source destination member将 member 元素从 source 集合移动到 destination 集合。SMOVE set1 set2 “foo”
SSCANSSCAN key cursor [MATCH pattern] [COUNT count]增量式迭代集合中的元素。SSCAN tags 0 MATCH r*

六、有序集合(Sorted Set / ZSet)相关命令

有序集合与集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数(score)。Redis 正是通过分数来为集合中的成员进行从小到大的排序。

命令语法描述示例
ZADDZADD key [NXXX] [GTLT] [CH] [INCR] score member [score member …]
ZREMZREM key member [member …]移除有序集合中的一个或多个成员。ZREM leaderboard “Bob”
ZRANGEZRANGE key start stop [WITHSCORES]通过索引区间返回有序集合指定区间内的成员(低到高)。ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANGEZREVRANGE key start stop [WITHSCORES]返回有序集合指定区间内的成员(高到低)。ZREVRANGE leaderboard 0 5
ZRANGEBYSCOREZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]返回有序集合中指定分数区间的成员(低到高)。ZRANGEBYSCORE leaderboard 90 100
ZREVRANGEBYSCOREZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]返回有序集合中指定分数区间的成员(高到低)。ZREVRANGEBYSCORE leaderboard 100 90
ZINCRBYZINCRBY key increment member增加有序集合中成员的分数。ZINCRBY leaderboard 5 “Alice”
ZCARDZCARD key获取有序集合的成员数。ZCARD leaderboard
ZCOUNTZCOUNT key min max计算在有序集合中指定分数区间内的成员数量。ZCOUNT leaderboard 90 100
ZSCOREZSCORE key member返回有序集合中成员的分数值。ZSCORE leaderboard “Alice”
ZRANKZRANK key member返回有序集合中指定成员的排名(从0开始,按分数升序)。ZRANK leaderboard “Alice”
ZREVRANKZREVRANK key member返回有序集合中指定成员的排名(按分数降序)。ZREVRANK leaderboard “Alice”
ZREMZREM key member [member …]移除有序集合中的一个或多个成员。ZREM leaderboard “Bob”
ZREMRANGEBYRANKZREMRANGEBYRANK key start stop移除有序集合中给定的排名区间的所有成员。ZREMRANGEBYRANK leaderboard 0 2
ZREMRANGEBYSCOREZREMRANGEBYSCORE key min max移除有序集合中给定的分数区间的所有成员。ZREMRANGEBYSCORE leaderboard -inf 80
ZINTERSTORE / ZUNIONSTOREZINTERSTOREZUNIONSTORE dest numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUMMIN

七、HyperLogLog 相关命令

用于做基数统计(估算集合中不重复元素的数量)的算法,优点是占用内存极小。

命令语法描述示例
PFADDPFADD key element [element …]添加指定元素到 HyperLogLog 中。PFADD hll_user_ips “192.168.1.1”
PFCOUNTPFCOUNT key [key …]返回给定 HyperLogLog 的基数估算值。PFCOUNT hll_user_ips
PFMERGEPFMERGE destkey sourcekey [sourcekey …]将多个 HyperLogLog 合并为一个。PFMERGE hll_total hll_day1 hll_day2

八、地理空间(Geospatial)相关命令

用于存储和操作地理位置信息,如经纬度、计算距离等。

命令语法描述示例
GEOADDGEOADD key [NXXX] longitude latitude member [longitude latitude member …]将指定的地理空间位置(经度、纬度、名称)添加到指定的 key 中。
GEOPOSGEOPOS key member [member …]从 key 里返回所有指定成员的位置(经度和纬度)。GEOPOS cities “Beijing”
GEODISTGEODIST key member1 member2 [mkmft
GEORADIUSGEORADIUS key longitude latitude radius mkmft
GEORADIUSBYMEMBERGEORADIUSBYMEMBER key member radius mkmft
GEOHASHGEOHASH key member [member …]返回一个或多个位置元素的 Geohash 表示。GEOHASH cities “Beijing”

九、流(Stream)相关命令(Redis 5.0+)

Stream 是 Redis 5.0 引入的新的数据类型,它是一个更强大的、可用于实现消息队列的、支持多消费者的抽象日志数据类型。

命令语法描述
XADDXADD key [NOMKSTREAM] [MAXLENMINID] id field value [field value …]
XLENXLEN key获取流中消息的长度。
XRANGEXRANGE key start end [COUNT count]返回流中 ID 在给定区间的消息。- 和 + 表示最小和最大 ID。
XREVRANGEXREVRANGE key end start [COUNT count]逆序返回流中 ID 在给定区间的消息。
XREADXREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key …] id [id …]从一个或多个流中读取消息,可阻塞。$ 表示只读取新消息。
XGROUP CREATEXGROUP CREATE key groupname id$ [MKSTREAM]
XREADGROUPXREADGROUP GROUP group consumer [COUNT count] [BLOCK ms] [NOACK] STREAMS key [key …] id [id …]通过消费者组读取消息。> 表示从未传递给其他消费者的消息开始读。
XACKXACK key groupname id [id …]将消息标记为“已处理”。
XPENDINGXPENDING key groupname检查待处理消息列表。

十、服务器与连接管理命令

这些命令用于管理 Redis 服务器和客户端连接。

命令语法描述
PINGPING [message]测试连接是否存活。如果连接正常则返回 PONG。
ECHOECHO message打印给定的字符串。
SELECTSELECT index切换到指定的数据库(0-15)。
AUTHAUTH [username] password验证密码。如果设置了用户名,则需要同时提供。
QUITQUIT关闭当前连接。
INFOINFO [section]获取 Redis 服务器的各种信息和统计。INFO stats,INFO memory。
CLIENT LISTCLIENT LIST获取连接到服务器的客户端列表。
CLIENT KILLCLIENT KILL ip:port关闭指定的客户端连接。
CONFIG GETCONFIG GET parameter获取 Redis 服务器的配置参数。
CONFIG SETCONFIG SET parameter value(慎用) 动态修改 Redis 服务器的配置参数。
DBSIZEDBSIZE返回当前数据库的 key 的数量。
BGSAVEBGSAVE [SCHEDULE]在后台异步保存当前数据库的数据到磁盘(生成 RDB 文件)。
SAVESAVE(同步,会阻塞) 保存当前数据库的数据到磁盘。
FLUSHDBFLUSHDB [ASYNC](危险命令) 清空当前数据库。
FLUSHALLFLUSHALL [ASYNC](危险命令) 清空所有数据库。
MONITORMONITOR(调试用,生产慎用) 实时打印服务器接收到的命令。
SLOWLOGSLOWLOG subcommand [argument]管理慢查询日志。
TIMETIME返回当前服务器时间。

总结与使用建议

  1. Key 设计:使用冒号 : 分隔来设计有层次的键名,如 user:1000:profile。
  2. 生产环境慎用:KEYS、FLUSHDB、FLUSHALL、MONITOR、CONFIG SET 等命令可能会造成服务阻塞或不安全。
  3. 选择合适的数据结构:
    • 对象缓存用 Hash。
    • 排行榜、有序集合用 ZSet。
    • 标签系统、唯一值集合用 Set。
    • 消息队列、最新列表用 List 或 Stream。
    • 简单键值对、计数器用 String。
    • 唯一用户数统计用 HyperLogLog。
    • 地理位置用 GEO。
  4. 使用 SCAN 系列命令:代替 KEYS 和 SMEMBERS 等可能阻塞的命令,进行增量迭代。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜雨hiyeyu.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值