【Redis】常用命令汇总
Redis 作为高性能的键值存储数据库,提供了丰富的命令集,主要涵盖 字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、键 (Keys)、Geo(地理位置)、HyperLogLog(基数统计)、Bitmap(位图)、BitField(位操作)、Scan(迭代查询)操作。
下面按照类别分类总结 Redis 的常用命令及其使用方式。
基本操作
1. Key(键)操作
命令 | 作用 |
---|---|
EXISTS key | 检查 key 是否存在 |
DEL key [key ...] | 删除一个或多个 key |
EXPIRE key seconds | 设置 key 的过期时间 |
TTL key | 查看 key 剩余的生存时间 |
RENAME key newkey | 修改 key 的名称 |
TYPE key | 获取 key 对应的 value 类型 |
KEYS pattern | 查找符合 pattern 规则的 key |
示例
SET name "redis"
EXPIRE name 10
TTL name
DEL name
2. 字符串 (String)
命令 | 说明 |
---|---|
SET key value | 设置指定 key 的值 |
GET key | 获取指定 key 的值 |
GETSET key value | 设置新值并返回旧值 |
MGET key [key ...] | 同时获取多个 key 的值 |
MSET key value [key value ...] | 同时设置多个 key 的值 |
MSETNX key value [key value ...] | 同时设置多个 key 的值(当所有 key 都不存在时才执行) |
SETNX key value | 当 key 不存在时,设置 key 的值 |
SETEX key seconds value | 设置 key 的值,并指定过期时间(秒) |
PSETEX key milliseconds value | 设置 key 的值,并指定过期时间(毫秒) |
STRLEN key | 返回 key 中字符串值的长度 |
APPEND key value | 追加 value 到 key 原有值的末尾 |
GETRANGE key start end | 获取字符串指定区间内的子字符串(旧别名:SUBSTR) |
SETRANGE key offset value | 从指定偏移量开始,覆盖写入字符串 |
INCR key | 将 key 中存储的数字加 1 |
INCRBY key increment | 将 key 中存储的数字加上指定增量 |
INCRBYFLOAT key increment | 将 key 中存储的浮点数加上指定增量 |
DECR key | 将 key 中存储的数字减 1 |
DECRBY key decrement | 将 key 中存储的数字减去指定减量 |
GETBIT key offset | 返回字符串中指定偏移量处的位值 |
SETBIT key offset value | 将字符串中指定偏移量处的位设置为 0 或 1 |
BITCOUNT key [start end] | 统计字符串中值为 1 的位数 |
BITOP operation destkey key [key ...] | 对一个或多个 key 进行位操作(AND、OR、XOR、NOT) |
BITPOS key bit [start] [end] | 查找字符串中第一个指定二进制位的位置 |
示例
SET username "Tom"
GET username
INCR count
DECR count
APPEND username " Smith"
STRLEN username
3. 哈希 (Hash)
命令 | 说明 |
---|---|
HSET key field value | 为哈希表中的字段赋值 |
HSETNX key field value | 仅当字段不存在时,为哈希表中的字段赋值 |
HMSET key field value [field value ...] | 同时为多个字段赋值(新版 Redis 建议使用 HSET 多参数形式) |
HGET key field | 获取哈希表中指定字段的值 |
HMGET key field [field ...] | 获取哈希表中多个字段的值 |
HDEL key field [field ...] | 删除哈希表中一个或多个字段 |
HEXISTS key field | 检查哈希表中是否存在指定字段 |
HLEN key | 返回哈希表中字段的数量 |
HKEYS key | 返回哈希表中所有的字段名称 |
HVALS key | 返回哈希表中所有字段对应的值 |
HGETALL key | 返回哈希表中所有的字段和值 |
HINCRBY key field increment | 将哈希表中指定字段的整数值增加指定数值 |
HINCRBYFLOAT key field increment | 将哈希表中指定字段的浮点数值增加指定数值 |
HSTRLEN key field | 返回哈希表中指定字段对应的值的字符串长度 |
示例
HSET user:1001 name "Alice"
HGET user:1001 name
HGETALL user:1001
HDEL user:1001 name
4. 列表 (List)
命令 | 说明 |
---|---|
LPUSH key value [value ...] | 将一个或多个值插入到列表的头部 |
RPUSH key value [value ...] | 将一个或多个值插入到列表的尾部 |
LPOP key | 移除并返回列表的第一个元素 |
RPOP key | 移除并返回列表的最后一个元素 |
LINDEX key index | 通过索引获取列表中的元素(索引从 0 开始,负数表示从尾部开始) |
LLEN key | 获取列表的长度 |
LRANGE key start stop | 获取列表中指定区间内的元素 |
**LINSERT key BEFORE | AFTER pivot value** |
LSET key index value | 对列表中指定索引位置的元素进行赋值 |
LREM key count value | 根据参数 count 的值,移除列表中与 value 相等的元素 |
LTRIM key start stop | 对列表进行修剪,只保留指定区间内的元素 |
RPOPLPUSH source destination | 移除 source 列表的最后一个元素,并将其添加到 destination 列表的头部,同时返回该元素 |
BLPOP key [key ...] timeout | 阻塞式地移除并返回列表的第一个元素(可同时阻塞多个列表) |
BRPOP key [key ...] timeout | 阻塞式地移除并返回列表的最后一个元素 |
BRPOPLPUSH source destination timeout | 阻塞式地执行 RPOPLPUSH 操作 |
LPUSHX key value | 当列表存在时,将值插入到列表头部 |
RPUSHX key value | 当列表存在时,将值插入到列表尾部 |
示例
LPUSH queue "task1"
RPUSH queue "task2"
LPOP queue
LRANGE queue 0 -1
5. 集合 (Set)
命令 | 说明 |
---|---|
SADD key member [member ...] | 向集合中添加一个或多个成员 |
SREM key member [member ...] | 移除集合中的一个或多个成员 |
SMEMBERS key | 返回集合中的所有成员 |
SISMEMBER key member | 判断指定元素是否集合的成员 |
SCARD key | 获取集合中成员的数量 |
SINTER key [key ...] | 返回给定所有集合的交集 |
SINTERSTORE destination key [key ...] | 计算给定集合的交集,并将结果存储在 destination 中 |
SUNION key [key ...] | 返回给定所有集合的并集 |
SUNIONSTORE destination key [key ...] | 计算给定集合的并集,并将结果存储在 destination 中 |
SDIFF key [key ...] | 返回给定集合之间的差集 |
SDIFFSTORE destination key [key ...] | 计算差集并将结果存储在 destination 中 |
SRANDMEMBER key [count] | 返回集合中一个或多个随机成员 |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素(适合处理大集合时分批遍历) |
示例
SADD users "Tom" "Jerry"
SMEMBERS users
SISMEMBER users "Tom"
SREM users "Jerry"
SCARD users
6. 有序集合 (Sorted Set / ZSet)
命令 | 说明 |
---|---|
ZADD key [NX|XX] [CH] [INCR] score member [score member ...] | |
ZREM key member [member ...] | 移除有序集合中的一个或多个成员 |
ZINCRBY key increment member | 为有序集合中的成员的分数加上指定值 |
ZRANGE key start stop [WITHSCORES] | 返回有序集合中指定区间内的成员(按分数从低到高排序) |
ZREVRANGE key start stop [WITHSCORES] | 返回有序集合中指定区间内的成员(按分数从高到低排序) |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 返回有序集合中分数在指定范围内的成员 |
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] | 返回有序集合中分数在指定范围内的成员(从高到低排序) |
ZRANK key member | 返回成员在有序集合中的排名(从 0 开始,按分数从低到高排序) |
ZREVRANK key member | 返回成员在有序集合中的排名(从 0 开始,按分数从高到低排序) |
ZSCORE key member | 返回有序集合中成员的分数 |
ZCARD key | 获取有序集合中的成员数量 |
ZCOUNT key min max | 统计分数在指定范围内的成员数量 |
ZLEXCOUNT key min max | 统计字典序在指定范围内的成员数量(仅适用于分数相同的成员) |
ZRANGEBYLEX key min max [LIMIT offset count] | 返回有序集合中成员的字典序范围内的元素 |
ZREVRANGEBYLEX key max min [LIMIT offset count] | 返回有序集合中成员的字典序范围内的元素(逆序) |
ZPOPMIN key [count] | 移除并返回有序集合中分数最小的成员 |
ZPOPMAX key [count] | 移除并返回有序集合中分数最大的成员 |
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM | MAX | MIN] | 多个有序集合求并集 |
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM | MAX | MIN] | 多个有序集合求交集 |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素 |
ZMSCORE key member [member ...] | 获取有序集合中多个成员的分数(Redis 6.2 及以上支持) |
示例
ZADD ranking 100 "Alice"
ZADD ranking 200 "Bob"
ZRANGE ranking 0 -1 WITHSCORES
ZREM ranking "Alice"
7. 其他操作
命令 | 作用 |
---|---|
FLUSHDB | 清空当前数据库 |
FLUSHALL | 清空所有数据库 |
INFO | 获取服务器统计信息 |
PING | 测试连接 |
特定使用场景操作
1. Geo(地理位置存储与计算)
Redis 的 Geo 用于存储地理位置(经纬度)并提供距离计算、范围查询等功能。
命令 | 作用 |
---|---|
GEOADD key longitude latitude member [longitude latitude member ...] | 添加地理位置信息 |
GEODIST key member1 member2 [unit] | 计算两个位置之间的距离(支持单位:m、km、mi、ft) |
GEOPOS key member [member ...] | 获取指定位置的经纬度 |
`GEORADIUS key longitude latitude radius unit [WITHCOORD] [WITHDIST] [COUNT count] [ASC|DESC]` | |
`GEORADIUSBYMEMBER key member radius unit [WITHCOORD] [WITHDIST] [COUNT count] [ASC|DESC]` | |
GEOHASH key member [member ...] | 获取成员的 GeoHash 值 |
示例
GEOADD cities 116.40 39.90 "Beijing"
GEOADD cities 121.47 31.23 "Shanghai"
GEODIST cities "Beijing" "Shanghai" km
GEORADIUS cities 116.40 39.90 100 km WITHDIST
2. HyperLogLog(基数统计)
Redis HyperLogLog 是用于 近似统计不重复元素数量 的数据结构,占用内存固定(12 KB),适用于大规模数据去重计数。
命令 | 作用 |
---|---|
PFADD key element [element ...] | 添加元素到 HyperLogLog |
PFCOUNT key [key ...] | 获取去重后的元素数量估算值 |
PFMERGE destkey sourcekey [sourcekey ...] | 合并多个 HyperLogLog |
示例
PFADD users "user1" "user2" "user3"
PFCOUNT users
PFMERGE total_users users1 users2
适用场景:统计 网站UV、活跃用户数、访问IP数 等。
3. Bitmap(位图)
Bitmap 是 二进制位存储 结构,适用于存储 用户签到、活跃状态、权限控制 等场景。
命令 | 作用 |
---|---|
SETBIT key offset value | 设置某个位的值(1 或 0) |
GETBIT key offset | 获取某个位的值 |
BITCOUNT key [start end] | 统计 key 中值为 1 的位个数 |
BITOP operation destkey key [key ...] | 按位操作(AND、OR、XOR、NOT) |
示例
SETBIT sign:20240301 1 1 # 用户ID=1签到
SETBIT sign:20240301 2 1 # 用户ID=2签到
GETBIT sign:20240301 1 # 查询用户ID=1是否签到
BITCOUNT sign:20240301 # 统计今日签到人数
适用场景:用户签到、状态标记、权限控制、唯一性判断。
4. BitField(高级位操作)
BitField 用于操作多个二进制位 (支持批量读写),适用于 计数器、标记存储、状态管理。
命令 | 作用 |
---|---|
BITFIELD key GET type offset | 读取某个位置的值 |
BITFIELD key SET type offset value | 设置某个位范围的值 |
BITFIELD key INCRBY type offset increment | 对某个位范围的值进行增减 |
示例
BITFIELD user_data SET u8 0 100 # 把偏移量0的8位数值设为100
BITFIELD user_data INCRBY u8 0 5 # 偏移量0的8位数值加5
BITFIELD user_data GET u8 0 # 获取偏移量0的8位值
适用场景:用户计数、状态标记、存储紧凑数据。
5. Scan(游标迭代查询)
SCAN
命令用于 大规模数据迭代查询,可以分批遍历 key、集合、哈希、ZSet。
命令 | 作用 |
---|---|
SCAN cursor [MATCH pattern] [COUNT count] | 迭代 key |
HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代 hash |
SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代 set |
ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代 zset |
示例
SCAN 0 MATCH user:* COUNT 10
HSCAN user:1001 0 MATCH name COUNT 5
适用场景:海量数据分页查询,防止 KEYS
阻塞 Redis。
相关文章:

【Redis】常用命令汇总
Redis 作为高性能的键值存储数据库,提供了丰富的命令集,主要涵盖 字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、键 (Keys)、Geo(地理位置)、HyperLogLog(基数统计)、Bitmap&a…...

分析TCP三次握手与四次挥手
TCP(传输控制协议)通过三次握手建立连接,四次挥手终止连接,确保数据传输的可靠性。 TCP的三个控制标志位: SYN——用于建立连接,同步序列号。 ACK——用于确认收到的数据。 FIN——用于终止连接。 ISN…...

C++之序列容器(vector,list,dueqe)
1.大体对比 在软件开发的漫长历程中,数据结构与算法始终占据着核心地位,犹如大厦的基石,稳固支撑着整个程序的运行。在众多编程语言中,数据的存储与管理方式各有千秋,而 C 凭借其丰富且强大的工具集脱颖而出ÿ…...

网络安全技术和协议(高软43)
系列文章目录 网络安全技术和协议 文章目录 系列文章目录前言一、网络安全技术1.防火墙2.入侵检测系统IDS3.入侵防御系统IPS 二、网络攻击和威胁三、网络安全协议四、真题在这里插入图片描述 总结 前言 本节讲明网络安全技术和协议方面的相关知识。 一、网络安全技术 1.防火…...

LeetCode697
好的,根据你提供的代码和LeetCode题号(697),我将帮助你生成一个结构化的Markdown文档。首先,我们需要补充一些必要的信息,如题目描述、示例、思路分析等。如果你能提供这些信息会更好,否则我会基…...

js基本功(四)
ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字符、数字、标点符号以及一些控制字符。 可以通过 charCodeAt() 方法获取字符的 ASCII 码,也可以通过 String.fromCharCode() 方法将 ASCII 码转…...

linux | Vim 命令快捷操作
注:本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #:向前查找光标当前所在单词,并跳转到该单词的上一个出现位置。*:向后查找光标当前所在单词,并跳转到该单词的下一个出现位置。 行内跳转 0:跳转…...

开源订货系统哪个好 三大订货系统源码推荐
在数字化转型加速的今天,企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率,还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求,为您精选三款主流订货系统源码,助您快速搭…...

跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子:string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...

使用 MyBatis XML 和 QueryWrapper 实现动态查询
本文档介绍了如何在 MyBatis 中结合 XML 配置和 MyBatis-Plus 的 QueryWrapper 来实现动态查询。 1. XML 中定义基本查询 首先,在 MyBatis XML 文件中定义一个基本的 select 查询: <select id"selectCode" resultType"java.util.Ma…...

视频理解开山之作 “双流网络”
1 论文核心信息 1.1核心问题 任务:如何利用深度学习方法进行视频中的动作识别(Action Recognition)。挑战: 视频包含时空信息,既需要捕捉静态外观特征(Spatial Information),也需要…...

每日一题——搜索二维矩阵
搜索二维矩阵 一、题目背景二、题目描述示例 1:示例 2:约束条件: 三、解题思路分析1. **错误思路回顾**2. **Z字形查找算法**算法步骤: 3. **算法优势** 四、代码实现代码说明: 五、测试用例测试用例 1:测试…...

PPT 小黑第21套
对应大猫22 动作按钮 “转到首页” 编号从1开始显示,点设计 -幻灯片大小 -修改幻灯片编号起始值为0(那么第二张幻灯片页码为1)...

大模型day01自然语言+大模型+环境
[TOC]大模型day01 自然语言处理 汉字的词是连着的,所以需要一个汉语处理模块,把词语、成语自动加空格隔开。 知识图谱构建——>从大语言文本挖掘出来 自然语言处理:翻译、智能语音 自然语言处理:理解一句话意思,…...

VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

【2025】Electron + React 架构筑基——从零到一的跨平台开发
引言 源代码仓库: Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status,却依然无法直观看到文件变化? 是否羡慕VS Code的丝滑Git集成,却苦恼于无法定制自己的专属工具? 本专栏将为你打开一扇新的…...

AWS 如何导入内部SSL 证书
SSL 证书的很重要的功能就是 HTTP- > HTTPS, 下面就说明一下怎么导入ssl 证书,然后绑定证书到ALB. 以下示例说明如何使用 AWS Management Console 导入证书。 从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,请查找 AWS Cer…...

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)
清华和北大分别都有关于DeepSeek的分享文档,内容非常全面,从原理和具体的应用,大家可以认真看看。 北大 DeepSeek 系列 1:提示词工程和落地场景.pdf 北大 DeepSeek 系列 2:DeepSeek 与 AIGC 应用.pdf 清华 Deep…...

【空地协同技术教程:概念与技术手段解析】
空地协同技术教程:概念与技术手段解析 一、空地协同的概念与核心价值 定义 空地协同(Air-Ground Collaboration)是指通过无人机(UAV)与无人车(UGV)等异构平台的跨域协作,利用各自的…...

【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)
2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考,小编特意收集并整理了最新版(备考2025年3月)的小黑课堂计算机二级WPS 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …...

蓝桥杯备赛:炮弹
题目解析 这道题目是一道模拟加调和级数,难的就是调和级数,模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程,可能出现来回跳的情况,那么为了解决这种情况,我们采取的方法是设定其的上限步数。那么…...

kotlin高级用法总结
Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...

transformers - AWQ
本文翻译整理自:https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言 Activation-aware Weight Quantization (AWQ) 激活…...

mysql下载与安装、关系数据库和表的创建
一、mysql下载: MySQL获取: 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统ÿ…...

在华为设备上,VRRP与BFD结合使用可以快速检测链路故障并触发主备切换
在华为设备上,VRRP与BFD结合使用可以快速检测链路故障并触发主备切换。以下是VLAN接口下配置VRRP与BFD的步骤: 目录 1. 配置BFD会话 2. 配置VLAN接口 3. 配置VRRP 4. 验证配置 5. 保存配置 1. 配置BFD会话 在两台设备之间配置BFD会话,…...

RK3588开发笔记-fiq_debugger: cpu 0 not responding, reverting to cpu 3问题解决
目录 前言 一、FIQ Debugger介绍 二、rockchip平台配置方法 三、问题分析定位 IRQF_NOBALANCING 的含义 总结 前言 在进行 RK3588 开发的过程中,我们可能会遇到各种棘手的问题。其中,“fiq_debugger: cpu 0 not responding, reverting to cpu 3” 这个错误出现在RK3588的…...

新能源汽车充电综合解决方案:安科瑞电气助力绿色出行
安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展,充电基础设施的建设成为了推动行业进步的关键。然而,充电技术滞后、运营效率低下、车桩比失衡等问题,依然困扰着广大车主和运营商。今天,我们要为大家介绍一款新能源汽车充电…...

大语言模型进化论:从达尔文到AI的启示与展望
文章大纲 引言大语言模型中的“进化论”思想体现遗传变异过度繁殖和生存斗争大模型“过度繁殖”与“生存竞争”机制解析**一、过度繁殖:技术迭代的指数级爆发****二、生存竞争:计算资源的达尔文战场****三、生存竞争胜出关键要素****四、行业竞争格局演化趋势**核心结论自然选…...

Spring Boot与Axon Framework整合教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 简介 Axon Framework是一个用于构建CQRS(命令查询职责分离)和事件溯源(Event Sourcing)应用的框架࿰…...

深度学习Dropout
一、概念 Dropout是为了解决过拟合,当层数加深,就有可能过拟合,这个时候模型太复杂就会过拟合,那么可以让模型变得简单一点,所以就可以随机挑一些神经元,让某些神经元的输出是0,只保留部分神经…...