Redis 常用命令总结

 更新时间:2026年04月21日 09:59:34   作者:一只小白000  
本文总结了Redis在开发中常用的基础操作、String(字符串)、Hash(哈希)、List(列表)、Set(集合)、ZSet(有序集合)等等常用应用场景,缓存场景、计数器、分布式锁、排行榜、消息队列、用户标签等,感兴趣的朋友跟随小编一起看看吧

        在日常开发中,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

到此这篇关于Redis 常用命令总结的文章就介绍到这了,更多相关redis 常用命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • redis主从+哨兵搭建的实现示例

    redis主从+哨兵搭建的实现示例

    本文主要介绍了redis主从+哨兵搭建的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Redis中的GEO详解

    Redis中的GEO详解

    Redis GEO是一个轻量级的地理位置解决方案,适合需要快速存储和查询位置数据的场景,本文给大家介绍Redis的GEO详解,感兴趣的朋友一起看看吧
    2025-06-06
  • Redis数据类型string和Hash详解

    Redis数据类型string和Hash详解

    大家都知道Redis中有五大数据类型分别是String、List、Set、Hash和Zset,本文给大家分享Redis数据类型string和Hash的相关操作,感兴趣的朋友跟随小编一起看看吧
    2022-03-03
  • Redis分布式锁python-redis-lock使用方法

    Redis分布式锁python-redis-lock使用方法

    这篇文章主要介绍了Redis分布式锁python-redis-lock使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Redis分布式锁解决超卖问题

    Redis分布式锁解决超卖问题

    超卖问题是典型的多线程安全问题,本文就来介绍一下Redis分布式锁解决超卖问题,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Redis的Cluster集群搭建的实现步骤

    Redis的Cluster集群搭建的实现步骤

    本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨。感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Redis中lua脚本实现及其应用场景

    Redis中lua脚本实现及其应用场景

    本文主要介绍了Redis中lua脚本实现及其应用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • redis全局命令set、get、keys使用方法

    redis全局命令set、get、keys使用方法

    这篇文章主要介绍了redis全局命令set、get、keys使用方法的相关资料,详细讲解了Redis的基本概念和常用命令,强调了在生产环境中避免使用keys命令的重要性,需要的朋友可以参考下
    2025-03-03
  • Redis高效率原因及数据结构分析

    Redis高效率原因及数据结构分析

    这篇文章主要为大家详细的介绍了Redis高效的原因以及分析了Redis高效的数据结构,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • Redis的RDB持久化使用及说明

    Redis的RDB持久化使用及说明

    这篇文章主要介绍了Redis的RDB持久化使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-12-12

最新评论