
上一篇【第06篇】Redis管道与批量操作——一次网络往返顶十次下一篇【第08篇】Redis安全最佳实践——别让你的Redis裸奔在公网上摘要不管是刚入行的新手还是摸爬滚打多年的老鸟,都免不了时不时翻阅Redis命令文档。与其每次去官网查,不如把最常用的命令刻在脑子里——至少刻在这篇文章里。本文按照通用命令、String、Hash、List、Set、Sorted Set、服务器管理7大分类,整理了80+条日常开发中最常用的Redis命令,每条都配有完整语法、参数说明和可直接复制使用的示例。建议收藏,随时翻阅。一、通用命令(General Commands)通用命令适用于所有数据类型,属于Redis的基本功。这些命令不关心你存的是String还是Hash,它们操作的是key本身。1.1 键的增删查命令语法说明示例返回值DELDEL key [key ...]删除一个或多个keyDEL user:1 user:2被删除的key数量EXISTSEXISTS key [key ...]检查key是否存在(Redis 3.0.3起支持多key)EXISTS user:1存在的key数量TYPETYPE key返回key存储的数据类型TYPE user:1string/hash/list/set/zset/noneKEYSKEYS pattern查找符合模式的key(生产慎用!)KEYS user:*匹配的key列表SCANSCAN cursor [MATCH pattern] [COUNT count]游标式迭代key(安全替代KEYS)SCAN 0 MATCH user:* COUNT 100新的游标+key数组RANDOMKEYRANDOMKEY返回一个随机keyRANDOMKEY随机key或nilRENAMERENAME key newkey重命名key(会覆盖掉newkey)RENAME old_name new_nameOKDUMPDUMP key序列化key的值(用于迁移)DUMP mykey序列化后的二进制数据RESTORERESTORE key ttl serialized-value [REPLACE]反序列化并恢复keyRESTORE mykey 0 "\x00\x03foo\x06..."OK# 实战示例redis-cli SET user:1"张三"redis-cli SET user:2"李四"redis-cli SET product:1"iPhone"# 精确查找redis-cli EXISTS user:1# 返回: (integer) 1redis-cli EXISTS user:999# 返回: (integer) 0# 通配符查找(生产环境别这么干!)redis-cli KEYS"user:*"# 返回: user:1 user:2# 安全替代:SCANredis-cli SCAN0MATCH"user:*"COUNT10⚠️ 注意:KEYS命令会遍历所有key,在数据量大的时候会导致Redis阻塞,线上环境绝对禁止使用!请用SCAN替代,它会分批返回结果,不会阻塞服务器。1.2 键的过期时间命令语法说明示例EXPIREEXPIRE key seconds设置key在seconds秒后过期EXPIRE session:abc 3600PEXPIREPEXPIRE key milliseconds设置key在milliseconds毫秒后过期PEXPIRE session:abc 5000EXPIREATEXPIREAT key timestamp设置key在指定时间戳(秒)过期EXPIREAT session:abc 1716710400PEXPIREATPEXPIREAT key milliseconds-timestamp设置key在指定毫秒时间戳过期PEXPIREAT session:abc 1716710400000TTLTTL key查看key剩余生存时间(秒)TTL session:abcPTTLPTTL key查看key剩余生存时间(毫秒)PTTL session:abcPERSISTPERSIST key移除key的过期时间,使其永不过期PERSIST important:key# 实战:实现一个验证码缓存redis-cli SET code:13800138000"8293"redis-cli EXPIRE code:13800138000300# 5分钟后过期redis-cli TTL code:13800138000# 返回: 287 (剩余287秒)redis-cli PERSIST code:13800138000# 取消过期(如果需要的话)+──────────────────────────────────────────────────────+ │ EXPIRE 时间单位速查 │ +──────────────────────────────────────────────────────+ │ EXPIRE 秒 EXPIRE key 3600 │ │ PEXPIRE 毫秒 PEXPIRE key 5000 │ │ EXPIREAT 秒时间戳 EXPIREAT key 1716710400 │ │ PEXPIREAT 毫秒时间戳 PEXPIREAT key 1716710400000 │ │ TTL 秒返回 TTL key ( -1=永久, -2=不存在) │ │ PTTL 毫秒返回 PTTL key │ +──────────────────────────────────────────────────────+1.3 键的内部信息命令语法说明示例OBJECT ENCODINGOBJECT ENCODING key查看key的内部编码OBJECT ENCODING mylistOBJECT REFCOUNTOBJECT REFCOUNT key查看key的引用计数OBJECT REFCOUNT mykeyOBJECT IDLETIMEOBJECT IDLETIME key查看key的空闲秒数(未被访问的时间)OBJECT IDLETIME mykeyOBJECT FREQOBJECT FREQ key查看key的LFU访问频率计数(Redis 4.0+)OBJECT FREQ mykeyredis-cli SET small_int100redis-cli OBJECT ENCODING small_int# 返回: "int"(整数编码,省内存!)redis-cli SET short_str"hello"redis-cli OBJECT ENCODING short_str# 返回: "embstr"(短字符串编码)redis-cli SET long_str"一个超长字符串..."redis-cli OBJECT ENCODING long_str# 返回: "raw"(长字符串编码)redis-cli OBJECT IDLETIME small_int# 返回: 300(300秒没被访问了)二、String命令String是Redis中最基础的数据类型。虽然叫String,但实际上可以存数字、JSON、二进制——因为它本质是二进制安全的字节数组。最大可存512MB。2.1 基础读写命令语法说明示例SETSET key value [EX seconds|PX milliseconds|NX|XX]设置key的值SET name "张三" EX 60GETGET key获取key的值GET nameMSETMSET key value [key value ...]批量设置多个keyMSET a 1 b 2 c 3MGETMGET key [key ...]批量获取多个keyMGET a b cGETSETGETSET key value设置新值并返回旧值(6.2.0已弃用,用SET … GET)GETSET counter 0SETNXSETNX key valuekey不存在时才设置(已弃用,用SET … NX)SETNX lock order:123SETEXSETEX key seconds value设置值同时指定过期时间(已弃用,用SET … EX)SETEX code:vip 60 "a1b2c3"PSETEXPSETEX key milliseconds value设置值同时指定毫秒过期时间PSETEX token 500