Redis常用命令总结
在当今的开发实践中,Redis凭借其卓越的性能,早已成为缓存、消息队列和排行榜等场景下的核心组件。面对如此丰富的命令集,如何快速定位并高效使用,是每个开发者都会遇到的课题。本文将系统梳理那些在日常开发中间出场率最高的Redis命令,旨在为你构建一份清晰、实用的速查手册。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

一. 基础操作
1.1 连接与通用命令
# 连接 Redis redis-cli redis-cli -h 127.0.0.1 -p 6379 redis-cli -a password # 切换数据库 SELECT 0-15 # Redis 默认有16个数据库 # 清空当前数据库 FLUSHDB # 清空所有数据库 FLUSHALL # 查看 key 的数量 DBSIZE # 查看服务器信息 INFO # 测试连接 PING
1.2 Key 操作
# 设置键值对(带过期时间) SET key value SET key value EX 3600 # 3600秒后过期 SET key value PX 300000 # 300000毫秒后过期 # 获取值 GET key # 删除 key DEL key1 key2 key3 # 判断 key 是否存在 EXISTS key # 设置过期时间 EXPIRE key 3600 # 3600秒后过期 EXPIREAT key 1700000000 # 指定时间戳过期 # 查看剩余过期时间 TTL key # 返回秒 PTTL key # 返回毫秒 # 移除过期时间 PERSIST key # 重命名 key RENAME oldkey newkey RENAMENX oldkey newkey # 仅当 newkey 不存在时重命名 # 查找 key KEYS pattern # KEYS user:* (生产环境慎用) SCAN cursor MATCH pattern COUNT count # SCAN 0 MATCH user:* COUNT 10 (推荐) # 查看 key 类型 TYPE key
二、String(字符串)
# 设置和获取 SET key value GET key MGET key1 key2 key3 # 批量获取 MSET key1 val1 key2 val2 # 批量设置 # 数值操作 INCR key # 自增1 INCRBY key 10 # 自增指定值 DECR key # 自减1 DECRBY key 10 # 自减指定值 # 字符串追加 APPEND key value # 返回字符串长度 # 获取长度 STRLEN key # 截取子串 GETRANGE key 0 -1 # 0到-1表示全部 # 设置指定位置的值 SETRANGE key offset value
三、Hash(哈希)
# 设置字段 HSET key field value HMSET key field1 value1 field2 value2 # 获取字段 HGET key field HMGET key field1 field2 # 获取所有字段和值 HGETALL key # 删除字段 HDEL key field1 field2 # 判断字段是否存在 HEXISTS key field # 获取所有字段名 HKEYS key # 获取所有字段值 HVALS key # 获取字段数量 HLEN key # 数值操作 HINCRBY key field 10 HINCRBYFLOAT key field 10.5
四、List(列表)
# 添加元素(左侧) LPUSH key value1 value2 LPUSHX key value # 仅当列表存在时添加 # 添加元素(右侧) RPUSH key value1 value2 RPUSHX key value # 弹出元素 LPOP key # 左侧弹出 RPOP key # 右侧弹出 # 获取列表范围内的元素 LRANGE key 0 -1 # 获取全部 LRANGE key 0 10 # 获取前11个 # 获取列表长度 LLEN key # 删除指定值的元素 LREM key count value # count>0从头删,count<0从尾删,count=0全删 # 获取指定索引的元素 LINDEX key index # 设置指定索引的元素 LSET key index value # 列表修剪 LTRIM key 0 100 # 保留0-100的元素,其他删除 # 阻塞操作(实现消息队列) BLPOP key1 key2 timeout BRPOP key1 key2 timeout
五、Set(集合)
# 添加元素 SADD key member1 member2 # 获取所有元素 SMEMBERS key # 删除元素 SREM key member1 member2 # 判断元素是否存在 SISMEMBER key member # 获取集合大小 SCARD key # 随机弹出元素 SPOP key [count] # 随机获取元素(不删除) SRANDMEMBER key [count] # 集合运算 SINTER key1 key2 key3 # 交集 SUNION key1 key2 key3 # 并集 SDIFF key1 key2 # 差集(key1有key2没有) # 集合运算并存储结果 SINTERSTORE dest key1 key2 SUNIONSTORE dest key1 key2 SDIFFSTORE dest key1 key2
六、ZSet(有序集合)
# 添加元素 ZADD key score1 member1 score2 member2 # 获取分数范围内的元素(升序) ZRANGE key 0 -1 ZRANGE key 0 -1 WITHSCORES # 带分数 # 获取分数范围内的元素(降序) ZREVRANGE key 0 -1 ZREVRANGE key 0 -1 WITHSCORES # 按分数范围获取 ZRANGEBYSCORE key min max ZREVRANGEBYSCORE key max min # 获取元素排名(升序) ZRANK key member # 获取元素排名(降序) ZREVRANK key member # 获取元素分数 ZSCORE key member # 获取指定分数范围内的元素数量 ZCOUNT key min max # 获取集合大小 ZCARD key # 删除元素 ZREM key member1 member2 # 按排名删除 ZREMRANGEBYRANK key 0 5 # 按分数删除 ZREMRANGEBYSCORE key min max # 增加分数 ZINCRBY key increment member
七、常用应用场景
7.1 缓存场景
# 设置缓存
SET cache:user:1001 '{"id":1001,"name":"张三"}' EX 3600
# 获取缓存
GET cache:user:1001
# 删除缓存
DEL cache:user:1001
7.2 计数器
# 文章阅读量 INCR article:1001:views # 点赞数 INCR post:1001:likes # 批量点赞计数 INCRBY post:1001:likes 10
7.3 分布式锁
# 获取锁
SET lock:resource UNIQUE_VALUE NX PX 30000
# 释放锁(Lua脚本保证原子性)
EVAL "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end" 1 lock:resource UNIQUE_VALUE
7.4 排行榜
# 添加分数 ZADD leaderboard 95 "player1" 87 "player2" 92 "player3" # 获取前10名 ZREVRANGE leaderboard 0 9 WITHSCORES # 获取玩家排名 ZREVRANK leaderboard "player1" # 增加分数 ZINCRBY leaderboard 5 "player1"
7.5 消息队列
# 生产者(左侧入队)
LPUSH queue:task '{"id":1,"type":"email"}'
# 消费者(右侧出队,阻塞5秒)
BRPOP queue:task 5
7.6 用户标签
# 添加标签 SADD user:1001:tags "程序员" "技术控" "音乐迷" # 获取标签 SMEMBERS user:1001:tags # 判断标签是否存在 SISMEMBER user:1001:tags "程序员" # 查找共同标签的用户(交集) SINTER user:1001:tags user:1002:tags
热门专题
热门推荐
MySQL主从延迟:别被“0延迟”骗了,这才是真实监控与排查指南 说起MySQL主从延迟,很多人的第一反应就是去查SHOW SLA VE STATUS里的那个Seconds_Behind_Master。但经验告诉我们,这个最显眼的数字,往往也是最会“撒谎”的。它明明显示为0,业务侧却反馈数据没同步过
MySQL GET_LOCK():一个被误解的“分布式锁”工具 MySQL GET_LOCK() 能不能当分布式锁用 开门见山地说,直接把它当作生产级的分布式锁来用,风险极高。这个函数的设计初衷,其实是为了在单个MySQL实例内部,进行一些轻量级的协作控制。为什么这么说?原因很具体:首先,GET_L
mysql如何查看当前执行的进程_使用show processlist查看状态 show processlist 返回的 State 字段到底代表什么 首先得澄清一个普遍的误解:State 字段显示的可不是什么“进程状态”,它真正揭示的,是当前线程在执行 SQL 时,其内部正处于哪个**具体的工作阶
在加密货币那个充满野性与想象力的世界里,“屎币”(Shiba Inu)和狗狗币(Dogecoin)绝对是两个无法被忽视的“异类”。它们从网络迷因中诞生,因社区狂欢而崛起,最终在残酷的市场博弈中,演化出了一套属于自己的独特生存法则。这套法则既包含了加密货币的底层逻辑,又被“去中心化”、“社区驱动”这些
MySQL访问控制:GRANT与防火墙的协同策略 MySQL GRANT 语句中指定 IP 时,为什么 localhost 和 127 0 0 1 不等价? 这里有个关键细节常被忽略:MySQL的用户账户其实是一个二元组,由 user @ host 共同构成。其中, localhost 是一个特殊标





