【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 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...
