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的五种核心数据类型:String、Hash、List、Set和SortedSet,每种类型都有其独特的存储结构、应用场景和时间复杂度,同时,还提供了Java示例代码和命令示例,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Redis哨兵模式实现一主二从三哨兵

    Redis哨兵模式实现一主二从三哨兵

    本文主要介绍了Redis哨兵模式实现一主二从三哨兵,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • redis客户端实现高可用读写分离的方式详解

    redis客户端实现高可用读写分离的方式详解

    基于sentienl 获取和动态感知 master、slaves节点信息的变化,我们的读写分离客户端就能具备高可用+动态扩容感知能力了,接下来通过本文给大家分享redis客户端实现高可用读写分离的方式,感兴趣的朋友一起看看吧
    2021-07-07
  • Redis主从复制搭建、哨兵搭建、集群搭建全过程

    Redis主从复制搭建、哨兵搭建、集群搭建全过程

    本文详细介绍了Redis主从复制和哨兵模式的搭建步骤、配置方法以及主从复制和哨兵模式的特点和应用,主从复制可以实现读写分离和性能扩展,同时提供了容灾和快速恢复功能,哨兵模式可以实现主节点的自动故障转移,提高系统的可用性和可靠性
    2026-03-03
  • 详解如何发现并解决Redis热点Key问题

    详解如何发现并解决Redis热点Key问题

    Redis 热点 Key 是指在某一时间段内,被大量的读写操作命中的 Key,这种情况可能会导致性能瓶颈,数据一致性问题,缓存击穿等问题,所以本文给大家介绍了如何发现并解决Redis热点Key问题,需要的朋友可以参考下
    2024-05-05
  • Redis中HyperLogLog的使用详情

    Redis中HyperLogLog的使用详情

    这篇文章主要介绍了Redis中HyperLogLog的使用详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 浅析Redis中红锁RedLock的实现原理

    浅析Redis中红锁RedLock的实现原理

    RedLock 是一种分布式锁的实现算法,由 Redis 的作者 Salvatore Sanfilippo(也称为 Antirez)提出,本文主要为大家详细介绍了红锁RedLock的实现原理,感兴趣的可以了解下
    2024-02-02
  • Windows安装Redis的几种方式与测试流程总结

    Windows安装Redis的几种方式与测试流程总结

    本文系统梳理了在 Windows 系统上安装和使用 Redis 的多种方式,涵盖通过端口号识别运行中的 Redis 实例、进程定位方法,并提供了 Java 环境下的连接与测试示例,同时还介绍了常见的图形化管理工具,便于可视化管理与调试,需要的朋友可以参考下
    2025-05-05
  • RedisTemplate访问Redis的更好方法

    RedisTemplate访问Redis的更好方法

    这篇文章主要为大家介绍了RedisTemplate访问Redis的更好方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 详谈redis跟数据库的数据同步问题

    详谈redis跟数据库的数据同步问题

    文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除Redis缓存后再更新数据库的方案更优,因为它可以避免数据不一致的问题,但可能产生高并发问题
    2025-01-01

最新评论