【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 BEFOREAFTER 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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981350.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Matlab的多目标粒子群优化

在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…

(2025年)工会考试该如何高效备考?有学习方法吗?

工会考试备考文章 工会考试高效备考指南 工会在维护职工权益、促进企业和谐发展中扮演着重要角色,工会考试则是选拔优秀工会工作者的关键途径。面对工会考试涉及的法律法规、组织管理以及维权服务等多方面知识,掌握科学备考方法是成功的关键。 法律法规是…

《机器学习数学基础》补充资料:向量范数

《机器学习数学基础》第1章1.5.3节介绍了向量范数的基本定义。 本文在上述基础上,介绍向量范数的有关性质。 注意: 以下均在欧几里得空间讨论,即欧氏范数。 1. 性质 实(或复)向量 x \pmb{x} x ,范数 ∥…

Unity NGUI新手向几个问题记录

1.点Button没反应 制作Button组件时,不光要挂载Button脚本,还有挂载BoxCollider BoxCollider 接收事件 2.Button点击事件的增加与删除 使用.onClick.add增加事件,使用.onClick.Remove,.onClick.RemoveAt,onClick.RemoveRang,onClick.Clear移…

servlet tomcat

在spring-mvc demo程序运行到DispatcherServlet的mvc处理 一文中,我们实践了浏览器输入一个请求,然后到SpringMvc的DispatcherServlet处理的整个流程. 设计上这些都是tomcat servlet的处理 那么究竟这是怎么到DispatcherServlet处理的,本文将…

UniApp 中封装 HTTP 请求与 Token 管理(附Demo)

目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习,上述实战代码来源:芋道源码/yudao-mall-uniapp 该代码中,通过自定义 request 函数对 HTTP 请求进行了统一管理,并且结合了 Token 认证机制 请求封装原理&#xff…

【音视频】ffmpeg命令分类查询

一、ffmpeg命令分类查询 -version:显示版本 ffmpeg -version-buildconf:显示编译配置,这里指的是你编译好的ffmpeg的选项 ffmpeg -buildconf-formats:显示可用格式(muxersdemuxers),复用器和解复用器&am…

基于Windows11的DockerDesktop安装和布署方法简介

基于Windows11的DockerDesktop安装和布署方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是…

C++发展

目录 ​编辑C 的发展总结:​编辑 1. C 的早期发展(1979-1985) 2. C 标准化过程(1985-1998) 3. C 标准演化(2003-2011) 4. C11(2011年) 5. C14(2014年&a…

爬虫Incapsula reese84加密案例:Etihad航空

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、找出需要加密的参数 1.js运行 atob(‘aHR0cHM6Ly93d3cuZXRpaGFkLmNvbS96aC1jbi8=’) 拿到网址,F12打开调试工具,随便搜索航班,切换到network搜索一个时间点可以找…

【分享】网间数据摆渡系统,如何打破传输瓶颈,实现安全流转?

在数字化浪潮中,企业对数据安全愈发重视,网络隔离成为保护核心数据的重要手段。内外网隔离、办公网与研发网隔离等措施,虽为数据筑牢了防线,却也给数据传输带来了诸多难题。传统的数据传输方式在安全性、效率、管理等方面暴露出明…

uploadlabs经验总结

目录 一、基础上传漏洞(太过简单目前环境不可能存在) 1、抓包然后改后缀进行绕过 2、抓包然后改上传文件类型进行绕过 3、改后缀大小写绕过,以及收尾加空格,加::$DATA,加点等等 4、黑名单不完整绕过,复习后缀绕过&…

数据结构:二叉树的链式结构及相关算法详解

目录 一.链式结构的实现 1.二叉树结点基本结构,初始化与销毁: 二.链式结构二叉树的几种遍历算法 1.几种算法的简单区分: 2.前序遍历: 3.中序遍历: 4.后序遍历: 5.层序遍历(广度优先遍历B…

VSCode 移除EmmyLua插件的红色波浪线提示

VSCode 中安装插件EmmyLua,然后打开lua文件的时候,如果lua代码引用了C#脚本的变量,经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示,这个提示看着比较烦人,我们可以通…

MWC 2025 | 紫光展锐联合移远通信推出全面支持R16特性的5G模组RG620UA-EU

2025年世界移动通信大会(MWC 2025)期间,紫光展锐联合移远通信,正式发布了全面支持5G R16特性的模组RG620UA-EU,以强大的灵活性和便捷性赋能产业。 展锐芯加持,关键性能优异 RG620UA-EU模组基于紫光展锐V62…

springboot425-基于SpringBoot的BUG管理系统(源码+数据库+纯前后端分离+部署讲解等)

💕💕作者: 爱笑学姐 💕💕个人简介:十年Java,Python美女程序员一枚,精通计算机专业前后端各类框架。 💕💕各类成品Java毕设 。javaweb,ssm&#xf…

机器人“照镜子”:开启智能新时代

机器人也爱 “照镜子”? 在科技飞速发展的今天,机器人的身影越来越频繁地出现在我们的生活和工作中。它们承担着各种各样的任务,从工业生产线上的精密操作,到家庭中的清洁服务,再到危险环境下的救援工作。然而&#xf…

让 LabVIEW 程序更稳定

LabVIEW 开发的系统,尤其是工业级应用,往往需要长时间稳定运行,容不得崩溃、卡顿或数据丢失。然而,许多系统在实际运行中会遭遇内存泄漏、通信中断、界面卡顿等问题,导致生产中断甚至设备损坏。如何设计一个既稳定又易…

基于CURL命令封装的JAVA通用HTTP工具

文章目录 一、简要概述二、封装过程1. 引入依赖2. 定义脚本执行类 三、单元测试四、其他资源 一、简要概述 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具&…

npm ERR! code 128 npm ERR! An unknown git error occurred

【问题描述】 【问题解决】 管理员运行cmd(右键window --> 选择终端管理员) 执行命令 git config --global url.“https://”.insteadOf ssh://git cd 到项目目录 重新执行npm install 个人原因,这里执行npm install --registryhttps:…