当前位置: 首页 > article >正文

快速上手Redis

一、认识RedisRedis 是一个内存数据库常用于缓存和高性能数据存储。特点数据存储在内存读写速度快毫秒级甚至微秒级支持多种数据结构String、Hash、List、Set、Sorted SetZSet支持过期时间TTL可以当作缓存支持 Pub/Sub 发布/订阅适合实时消息通俗来讲 Redis 就是一个超级升级版的键值对结构。二、安装Redis推荐使用Docker安装方便快捷没有Docker可以访问官网Docker: Accelerated Container Application Development选择对应安装包进行下载。需要注意的是启动 Redis 容器是运行在 Docker 引擎上的因此 Docker 程序不能退出退出则所有容器都会关闭。打开终端执行以下命令# 拉取最新 Redis 镜像dockerpull redis:latest# 启动 Redis 容器映射本地 6379 端口dockerrun-d--namemy_redis-p6379:6379 redis# 测试 Redis 是否启动redis-cliping# 正常输出 PONGdocker run用来创建并启动容器-d代表在后台运行--name my_redis指定容器名字-p 6379:6379端口映射本地 6379 连 Redis的6379redis使用官方 Redis 镜像。三、终端使用Redis1. 找容器继续在终端执行docker ps可以查看正在运行的 Redis 容器:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES abc123456789 redisdocker-…2days ago Up2days0.0.0.0-6379 my_redis在以上输出中找到IMAGE为redis的行并确认NAMES字段值和我们刚启动容器名相同。2. 查数据然后我们就可以记住容器 IDabc123456789或 容器名my_redis二选一即可一条命令直接进入 Redis 命令行客户端# 替换为你的容器名/IDdockerexec-itmy_redis redis-cli执行后会进入 Redis 交互模式提示符变为127.0.0.1:6379直接输入查询命令即可。tip1. 默认数量容器内的 Redis 默认创建16 个独立数据库编号从0到15。2. 默认数据库你连接 Redis 时默认自动进入 0 号库。3. 隔离性不同数据库之间数据完全隔离在 0 库写的 key在 1 库看不到互不干扰。2.1 基础查询命令# 1. 查看当前数据库的所有 key测试环境用生产环境禁用keys *# 2. 查看 Redis 所有数据库的 key 数量默认16个库0~15info keyspace# 3. 切换数据库比如切换到第1个库默认在 0 库select12.2 数据查询命令# 先查看某个 key 的类型typemykey# ① 字符串类型最常用Stringget mykey# ② 哈希类型存对象Hashhgetall myhash# ③ 列表类型 Listlrange mylist0-1# 0 -1 表示查看所有元素# ④ 集合类型 Setsmembers myset# ⑤ 有序集合类型 ZSetzrange myzset0-13. 删除容器 / 清空数据需求命令只清空内存数据容器保留docker exec -it my_redis redis-cli flushall只删容器数据保留docker rm -f my_redis彻底删容器 清空所有数据执行上条命令 删除 D:\my_redis-data 文件夹四、python操作 Redis在python中FastAPI推荐使用redis安装pipinstallredis连接 Redisimportredis# 连接本地 Redisrredis.Redis(hostlocalhost,port6379,db0,decode_responsesTrue)# 测试是否连接print(r.ping())# True 表示连接成功1. String 类型键值对可以理解为键值对key - value在项目中用来存用户登录 Token或游客临时数据# 设置 key过期 7 天r.set(user:session:1001,token_abc123,ex7*24*60*60)# 获取 keytokenr.get(user:session:1001)print(token)# 输出 token_abc123# 删除 keyr.delete(user:session:1001)解释user:session:1001是 key用户 ID 对应的登录会话token_abc123是 value登录令牌ex表示过期时间这里 7 天2. Hash 类型字典可以理解为字典一个 key 里存很多字段在项目中用来存用户信息数据user_id1001# 创建用户状态r.hset(fuser:state:{user_id},mapping{name:Li,status:1,age:18})# 添加伙伴列表字符串保存r.hset(fuser:state:{user_id},players,1002,1003)# 读取用户状态user_infor.hgetall(fuser:state:{user_id})print(user_info)# 输出 {name: Li,, status: 1, age: 18, players: 1002,1003}# 更新用户状态无字段顺序要求r.hset(fuser:state:{user_id},status,2)# 修改一个字段r.hset(fuser:state:{user_id},mapping{status:2,age:20,players:1001,1002,1003})# 修改多个字段3. Set 类型集合可以理解为集合无序自动去重在项目中用来存一些唯一列表数据玩家列表# 添加元素r.sadd(room:2001:players,1001)# 玩家 1001 加入房间r.sadd(room:2001:players,1002)# 玩家 1002 加入房间r.sadd(room:2001:players,1001)# 重复加入不会报错也不会重复存# 读取集合元素playersr.smembers(room:2001:players)print(players)# 输出 {1001, 1002}顺序不固定# 判断某元素是否在集合中is_inr.sismember(room:2001:players,1001)print(is_in)# True# 删除元素r.srem(room:2001:players,1002)playersr.smembers(room:2001:players)print(players)# 输出 {1001}# 获取集合长度countr.scard(room:2001:players)print(count)# 输出 14. ZSet有序集合可以理解为排行榜每个元素都有一个分数Redis 会自动排序在项目中用来存榜单数据# 添加分数r.zadd(ranking:total:score,{1001:5000,1002:4800})# 获取前 3 名top3r.zrevrange(ranking:total:score,0,2,withscoresTrue)print(top3)# 输出 [(1001, 5000), (1002, 4800)]# 查询某用户排名rankr.zrevrank(ranking:total:score,1001)print(rank1)# 排名从 1 开始解释ZSet 会按分数自动排序zrevrange从高分到低分取前 N 名5. List列表可以理解为一排排数据可以从两头操作在项目中用来做分数异步校验队列# 入队r.lpush(game:score:check:queue,1001:5000:1683900000)# 出队scorer.rpop(game:score:check:queue)print(score)# 输出 1001:5000:16839000006. Pub/Sub发布/订阅用来做实时消息广播在项目中用来聊天消息# 订阅消息频道pubsubr.pubsub()pubsub.subscribe(room:msg:2002)# 发布消息chat_msg{type:chat,userId:1001,msg:你好}r.publish(room:msg:2002,json.dumps(chat_msg))# 循环监听频道中的消息formessageinpubsub.listen():# 过滤出用户发送的消息ifmessage[type]message:# 解析 JSON 字符串datajson.loads(message[data])# 过滤出聊天消息ifdata[type]chat:print(f用户{data[userId]}:{data[msg]})解释subscribe订阅频道所有订阅者都能收到消息publish发送消息到频道实时同步房间信息五、Redis 持久化在安装 Redis 一节中我们使用docker run -d --name my_redis -p 6379:6379 redis创建并启动 Redis容器但Redis 默认数据只存在内存重启 / 宕机数据就丢所以为了不使数据丢失我们采用持久化——把内存数据保存到硬盘文件重启后自动恢复。1. Redis 的两种持久化方式1.1 RDB 快照默认开启原理定时给全量数据拍快照保存在容器内的/data目录下文件dump.rdb优点文件小、恢复速度极快、性能损耗小缺点会丢数据两次快照之间写入的数据会丢失默认规则15 分钟 1 次、5 分钟 10 次、60 秒 1 万次写入1.2 AOF 日志推荐原理记录每一条写命令实时写入容器内的/data目录下文件appendonly.aof优点数据几乎 100% 不丢失最安全缺点文件更大、恢复稍慢用法创建容器时redis-server --appendonly yes就是启动 Redis 服务并开启 AOF 持久化2. 硬盘挂载永久保存Redis 应用以上两种持久化方式数据会存放在容器内的/data目录下无论电脑重启容器重启都不会丢失。不过想让数据更加安全即把容器删掉也不会丢失就必须用-v 宿主机目录:/data把数据存在你电脑上才是真正永久保存;因此完整的AOF 挂载整理如下dockerrun-d--namemy_redis-p6379:6379-vD:\my_redis-data:/data redis redis-server--appendonlyyes

相关文章:

快速上手Redis

一、认识Redis Redis 是一个内存数据库,常用于缓存和高性能数据存储。特点: 数据存储在内存,读写速度快(毫秒级甚至微秒级)支持多种数据结构:String、Hash、List、Set、Sorted Set(ZSet&#…...

基于CRICKIT与CPX的交互式电子展板:从传感器到执行器的完整原型开发指南

1. 项目概述:打造一个会“思考”和“反应”的电子展板如果你对Arduino或树莓派这类微控制器项目感兴趣,但又觉得从零开始连接电机、灯带、传感器,还要处理复杂的电源和信号问题,过程太过繁琐和容易出错,那么这个项目可…...

168.YOLOv8零基础直达实战|COCO128+CU118环境+完整注释代码

摘要 YOLO(You Only Look Once)系列算法是目标检测领域最主流的实时检测框架,从v1到v8经历了多次架构迭代与性能飞跃。本文旨在提供一份零基础直达实战的完整指南,不依赖任何图片,仅通过逻辑推导与代码实现,帮助读者掌握YOLO的核心原理、环境搭建、模型训练、推理部署及…...

KafClaw:Apache Kafka增强型命令行客户端,提升数据操作与调试效率

1. 项目概述与核心价值最近在开源社区里,KafClaw 这个项目引起了不少关注。乍一看这个名字,你可能会联想到 Apache Kafka 和某种“爪子”(Claw)的结合,没错,这正是它的精髓所在。KafClaw 本质上是一个针对 …...

okbiye AI 写作新思路:毕业论文终稿一站式落地,不用熬夜硬熬

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 开篇引言 每到毕业季,毕业论文总会成为无数大学生最头疼的一道关卡。选题没方向、框架搭不起来、正文写不出深度、重复率居高不…...

167.YOLOv8口罩检测常见问题避坑(loss为NaN/显存溢出/ONNX导出失败实战版)

摘要 目标检测是计算机视觉领域的核心任务之一。YOLO(You Only Look Once)系列模型凭借其端到端、单阶段、高实时性的特性,已成为工业界和学术界最广泛使用的目标检测框架。本文从零开始,系统讲解YOLOv8的核心原理,并给出从数据准备、模型训练、推理验证到ONNX部署的完整…...

量子电路仿真加速器QEA的FPGA实现与优化

1. 量子电路仿真加速器的核心挑战与现状量子计算正在重塑我们对计算能力的认知边界。作为一名长期从事高性能计算与量子仿真研究的工程师,我见证了量子仿真技术从理论探索到工程实现的完整历程。量子电路仿真作为验证量子算法正确性的关键技术,其核心痛点…...

2025最权威的十大降AI率工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能生成内容工具广泛应用这件事引出了技术反思,此类工具能高效产出文本图像…...

大模型KV缓存量化技术:原理、优化与实践

1. KV缓存量化技术背景解析在Transformer架构的大语言模型(LLM)推理过程中,注意力机制的计算复杂度与序列长度呈平方关系增长。为优化这一过程,现代LLM服务系统普遍采用KV缓存(Key-Value Cache)技术,将注意力层计算过的键值对存储在内存中供后…...

Newhaven 5.0英寸TFT显示屏技术解析与应用指南

1. Newhaven 5.0英寸TFT显示屏核心特性解析 1.1 3M增强膜技术解析 这款5.0英寸TFT显示屏最显著的技术亮点在于采用了3M专利的增强膜技术。在实际应用中,我发现这种增强膜通过特殊的光学结构设计,能够有效提升背光利用率。具体来说,它采用了多…...

如何评估拓客数据的有效性?避开无效内耗,精准提效

当下企业拓客越来越注重精细化,不少团队投入大量精力收集数据,却陷入“数据越多,效果越差”的困境——空号、无效线索、非目标客群占据大半,不仅浪费人力成本,更拖慢增长节奏。其实,拓客的核心不在于“量”…...

[特殊字符] CSS 图片变黑变暗的 3 种方案,总有一款适合你!

最近在做项目的时候,遇到一个很常见的需求:如何让图片颜色更黑一点,或者加一层黑色透明度遮罩? 很多人第一反应是用 filter: brightness(0%),但其实这个方法有不少坑。今天就来聊聊 3 种靠谱的 CSS 方案,从…...

告别 AI 失忆!基于 Harness 记忆模型,解密 SpreadContext 多实例同步引擎

在日常与企业级客户及前端开发者的交流中,我经常听到这样的痛点:“我们成功接入了大模型,但它总是‘睁眼瞎’。用户在表格里改了数据,AI 不知道;AI 修改了单元格,UI 没有同步。聊了几轮之后,大模…...

从零实现大语言模型:Transformer架构、自注意力机制与PyTorch实战

1. 项目概述:从零构建大语言模型的实践指南 最近几年,大语言模型(LLM)无疑是技术领域最耀眼的存在。从ChatGPT的横空出世到各类开源模型的百花齐放,它们展现出的理解和生成能力令人惊叹。然而,对于许多开发…...

Postman+Newman自动化测试报告生成全攻略:让微信小程序接口回归测试5分钟搞定

PostmanNewman自动化测试报告生成全攻略:让微信小程序接口回归测试5分钟搞定 在追求研发效能的今天,手工重复执行接口测试已成为效率瓶颈。想象一下:每次微信小程序迭代更新,测试工程师都需要在Postman中逐个点击上百个接口用例&a…...

嵌入式飞行控制实战:从传感器融合到PID调参的无人机飞控开发指南

1. 项目概述与核心价值最近在嵌入式开发圈子里,一个名为trsdn/nanopielot的项目引起了我的注意。乍一看这个名字,它像是一个针对特定硬件平台(比如树莓派 Pico 或类似的 RP2040 微控制器)的飞行控制项目。nanopi可能指代 NanoPi 系…...

TortoiseSvn与TortoiseGit:从零开始的安装与汉化实战指南

1. TortoiseSvn与TortoiseGit:版本控制界的"瑞士军刀" 第一次接触代码版本管理时,我完全被命令行劝退了。直到发现了TortoiseSvn和TortoiseGit这两个神器——它们就像给Windows资源管理器装上了版本控制的"外挂",所有操作…...

Agentica:模块化AI智能体框架的设计、实现与生产部署指南

1. 项目概述:当AI智能体遇上开源协作最近在AI智能体这个圈子里,一个名为“Agentica”的项目开始引起不少开发者的注意。它不是一个单一的AI应用,而是一个由wrtnlabs团队发起的开源项目,旨在构建一个模块化、可扩展的AI智能体框架。…...

幽默面试:Java SE 与微服务的探讨

面试官与水货程序员的幽默对话:Java SE 与微服务的探讨 在一个互联网大厂的面试现场,严肃的面试官坐在桌前,准备开始与求职者燕双非的技术探讨。燕双非是一个搞笑的程序员,今天他将面临一系列关于Java SE和微服务的面试问题。第一…...

AI智能体信用评分系统:构建可评估、可管理的多智能体协作框架

1. 项目概述:一个为AI智能体设计的信用评分系统最近在折腾AI智能体(Agent)的落地应用时,我遇到了一个挺有意思的问题:当多个智能体协同工作,或者一个智能体需要调用外部工具、API时,如何评估和追…...

互联网大厂 Java 求职面试:从 Spring Boot 到微服务与云原生的技术探讨

互联网大厂 Java 求职面试:从 Spring Boot 到微服务与云原生的技术探讨 场景介绍:在一家知名互联网大厂的面试现场,面试官是一位严肃的技术专家,而候选人燕双非则是一位幽默风趣的程序员。面试官准备了一系列问题,涵盖…...

基于数据科学的宠物性格分析:从行为量化到性格画像的工程实践

1. 项目概述与核心价值最近在逛GitHub的时候,发现了一个挺有意思的项目,叫petsonality。光看名字,你大概就能猜到它和“宠物”(Pets)以及“性格”(Personality)有关。没错,这是一个通…...

3 万粉丝公众号变现实录:技术社区如何做到月入 5 万 +

摘要:从 0 到 3 万 粉丝,3 万 社群成员,一个技术类公众号的完整运营路径。本文拆解内容定位、合作模式、变现策略,全是实操经验,没有虚的。 封面文案:技术公众号变现全攻略 开篇:说实话&…...

极简静态站点生成器Minima:从核心原理到工程实践

1. 项目概述:一个极简静态站点的构建哲学 最近在整理个人博客和项目文档时,我又一次把目光投向了静态站点生成器。市面上选择很多,从功能庞大的Hugo、Jekyll,到追求速度的Zola、11ty,各有拥趸。但当我需要一个纯粹、轻…...

UPS 蓄电池在线监控系统是什么?工业 UPS 电源有必要安装吗?

在机房、工业生产、医疗设备等依赖 UPS 不间断电源的场景中,蓄电池往往被视为设备的 “心脏”。很多用户配置了优质 UPS 电源,却忽略了对蓄电池的实时管理,等到突发停电才发现电池亏电、失效,导致 UPS 无法正常供电,引…...

PointLLM:让大语言模型看懂三维点云,实现具身智能与机器人交互

1. 项目概述:当大语言模型“睁开双眼”看世界最近在机器人感知与交互领域,一个名为 PointLLM 的项目引起了我的注意。它来自 InternRobotics,核心目标直指一个非常前沿且有趣的问题:如何让大语言模型(LLM)直…...

国省考备考常见 10 大误区 上岸考生总结

作为上岸过来人,我太懂 “努力却没结果” 的无力。其实公考失败,大多不是不够努力,而是踩了本可以避开的坑。这 10 条避坑指南,覆盖备考方向、复习方法、心态调整,全是实战总结的干货,帮备考的你少走弯路。…...

Rust服务脚手架:快速构建生产级微服务的标准化起点

1. 项目概述:为什么我们需要一个Rust服务脚手架?在当今的微服务与云原生架构浪潮中,快速启动一个健壮、可维护的后端服务是每个开发团队的核心诉求。如果你和我一样,厌倦了每次开启新项目时,都要重复搭建项目结构、配置…...

政府新媒体宣发审核和监测对内容合规有哪些意义

在政务新媒体全谱系发展的今天,信息发布面临着意识形态安全、法律合规、公民隐私保护等多重考验。建立完善的宣发审核与监测机制,对保障内容合规具有决定性的意义,它是数字政府建设中不可或缺的“安全阀”与“过滤器”。以下是宣发审核和监测…...

ARM Cortex-A72 ETM架构解析与调试实践

1. ARM Cortex-A72 ETM架构概述嵌入式跟踪宏单元(Embedded Trace Macrocell, ETM)是ARM CoreSight调试架构中的核心组件,专为Cortex-A系列处理器设计。在Cortex-A72处理器中,ETMv4架构通过实时指令流追踪能力,为开发者提供了前所未有的调试可…...