【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 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
