首页 游戏 软件 资讯 排行榜 专题
首页
数据库
Redis常用命令总结

Redis常用命令总结

热心网友
96
转载
2026-04-23

在当今的开发实践中,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
来源:https://www.jb51.net/database/362569hnq.htm
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

mysql数据库主从延迟严重如何监控与解决_分析从库同步线程状态
数据库
mysql数据库主从延迟严重如何监控与解决_分析从库同步线程状态

MySQL主从延迟:别被“0延迟”骗了,这才是真实监控与排查指南 说起MySQL主从延迟,很多人的第一反应就是去查SHOW SLA VE STATUS里的那个Seconds_Behind_Master。但经验告诉我们,这个最显眼的数字,往往也是最会“撒谎”的。它明明显示为0,业务侧却反馈数据没同步过

热心网友
04.23
mysql如何利用锁函数实现应用级锁定_mysql get_lock函数实践
数据库
mysql如何利用锁函数实现应用级锁定_mysql get_lock函数实践

MySQL GET_LOCK():一个被误解的“分布式锁”工具 MySQL GET_LOCK() 能不能当分布式锁用 开门见山地说,直接把它当作生产级的分布式锁来用,风险极高。这个函数的设计初衷,其实是为了在单个MySQL实例内部,进行一些轻量级的协作控制。为什么这么说?原因很具体:首先,GET_L

热心网友
04.23
mysql如何查看当前执行的进程_使用show processlist查看状态
数据库
mysql如何查看当前执行的进程_使用show processlist查看状态

mysql如何查看当前执行的进程_使用show processlist查看状态 show processlist 返回的 State 字段到底代表什么 首先得澄清一个普遍的误解:State 字段显示的可不是什么“进程状态”,它真正揭示的,是当前线程在执行 SQL 时,其内部正处于哪个**具体的工作阶

热心网友
04.23
屎币与狗狗币的游戏规则,从迷因到市场的生存逻辑
web3.0
屎币与狗狗币的游戏规则,从迷因到市场的生存逻辑

在加密货币那个充满野性与想象力的世界里,“屎币”(Shiba Inu)和狗狗币(Dogecoin)绝对是两个无法被忽视的“异类”。它们从网络迷因中诞生,因社区狂欢而崛起,最终在残酷的市场博弈中,演化出了一套属于自己的独特生存法则。这套法则既包含了加密货币的底层逻辑,又被“去中心化”、“社区驱动”这些

热心网友
04.23
mysql如何限制特定IP的访问权限_配置GRANT与防火墙策略
数据库
mysql如何限制特定IP的访问权限_配置GRANT与防火墙策略

MySQL访问控制:GRANT与防火墙的协同策略 MySQL GRANT 语句中指定 IP 时,为什么 localhost 和 127 0 0 1 不等价? 这里有个关键细节常被忽略:MySQL的用户账户其实是一个二元组,由 user @ host 共同构成。其中, localhost 是一个特殊标

热心网友
04.23