Redis 的原理和使用(1)
前言本文内容从特性与安装起步逐类讲解 5 种数据结构及其内部编码再展开持久化、主从复制、哨兵、集群的实现原理最后落到缓存与分布式锁两类典型应用。一、初识 RedisRedis 是一款基于内存的键值对数据库数据以 key-value 形式组织。它既可以充当缓存也能承担消息队列、计数器、分布式锁等职责是后端开发中高频使用的组件。1.1 特性概述Redis 的特点可概括为八个方面覆盖性能、功能与可靠性特性说明速度快数据保存在内存中配合 C 语言实现与单线程模型可达到每秒万级别访问。基于键值对的数据结构服务器value 不只是字符串还支持 hash、list、set、zset 等结构。功能丰富提供过期策略、发布订阅、Lua 脚本、事务、Pipeline 等额外能力。简单稳定单线程模型配合内置数据结构代码量精简行为容易预测。客户端语言多C、C、Java、PHP、Python、NodeJS 等主流语言均有官方或社区客户端。持久化通过 RDB 与 AOF 两种策略把内存数据保存到硬盘避免断电或故障导致的数据丢失。主从复制支持多个数据副本是搭建分布式 Redis 的基础。支持高可用和分布式由哨兵提供故障转移由集群提供水平扩展。图 1-2 Redis 主从复制架构1.2 使用场景Redis 的典型用途可以归纳为以下几类缓存读多写少的场景配合过期时间降低后端存储压力。排行榜系统借助列表的有序性和有序集合的分数机制构建热度、时间等维度的榜单。计数器视频播放数、电商浏览数等需要高频自增的指标。分布式会话把用户 Session 集中存放解决负载均衡下的登录状态丢失问题。消息队列用 lpush brpop 实现生产者-消费者模型。分布式锁在分布式环境下协调多进程对共享资源的访问。使用 Redis 也要留意边界。“Redis 并不是万金油”部分场景并不适合它例如需要复杂查询能力、或对事务强一致有苛刻要求的业务需要结合具体问题评估。1.3 版本演进Redis 借鉴 Linux 的版本命名版本号第二位为奇数表示非稳定版本偶数表示稳定版本生产环境通常选取偶数版本。版本特性见下表版本代表性特性2.62012服务端支持 Lua 脚本键过期时间支持毫秒新增 bitcount / bitop、incrbyfloat 等命令。2.82013新增部分复制降低网络问题引发全量复制的频率Redis Sentinel 第二版达到生产可用。3.02015推出官方分布式实现 Redis Cluster优化 LRU 算法与 embedded string 编码。3.22016新增 GEO 相关功能列表新增 quicklist 编码spop 支持个数参数。4.02017提供模块系统PSYNC 2.0 解决主从切换触发全量复制的问题引入 LFU 淘汰算法支持 RDB-AOF 混合持久化新增 unlink 异步删除。5.02018新增流数据类型集群管理工具迁移到 C 语言实现。7.0当前文档撰写时最新的稳定版本延续偶数版本路线持续演进。1.4 安装与启动Redis 的安装可以从官网下载源码包解压后在根目录执行 make 完成编译。启动服务使用 redis-server进入交互使用 redis-cli。本机默认地址 127.0.0.1、端口 6379连接时可省略 -h 与 -p 参数$ redis-server $ redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379 ping PONGredis-cli 的交互过程可以拆成三步客户端发送命令、服务端执行命令、服务端返回结果。

相关新闻

open-code-review实践:让Code Review从走形式到有质量的自动化审查

open-code-review实践:让Code Review从走形式到有质量的自动化审查

1. 我受够了走形式的Code Review,所以认真折腾了open-code-review先说说我自己的处境。团队里的Code Review一直处于一种"大家都很忙,评审全靠演技"的状态:提交者为了赶进度,代码一推就催着人看;评审者手里压…

2026/10/19 15:39:37 阅读更多 →
AI工具红利期,文科生转行内容运营的实战方法论

AI工具红利期,文科生转行内容运营的实战方法论

文科转行,这三个字在我人生里盘旋了三年。三年前我还是某传统行业里一个写通知、整材料、给领导做PPT的行政岗,月薪到手勉强够生活,最怕的事情是开会,其次是写那种改十遍都定不了稿的公文。今天我在一家数字内容公司做内容运营方向…

2026/10/19 15:39:37 阅读更多 →
代码评审最佳实践:开源工具链与评审规范的完整落地指南

代码评审最佳实践:开源工具链与评审规范的完整落地指南

做代码评审做了这么些年,“open-code-review”这个标题我盯着看了很久。它让我想起的不只是某个开源工具的配置项,而是一个我一直想梳理清楚的问题:为什么有些团队的code review流于形式,有的却真能挡掉线上事故、把新人带起来、让…

2026/10/19 15:38:36 阅读更多 →

最新新闻

Postman接口串联实战:变量作用域、提取脚本与执行顺序控制

Postman接口串联实战:变量作用域、提取脚本与执行顺序控制

1. 接口串联的真实痛点与整体设计思路做过接口测试的人几乎都遇到过这种场景:你手里有两个接口,A接口是业务主流程,B接口是前置依赖。A接口的请求体里有一个必填字段,而这个字段的值必须从B接口的响应里拿。比如下单接口需要一个动…

2026/10/19 20:08:44 阅读更多 →
GitHub热榜观察:AI推理、开发者工具与自托管趋势解读

GitHub热榜观察:AI推理、开发者工具与自托管趋势解读

每天半小时刷一遍 GitHub 热榜,已经成了我雷打不动的习惯。2026年10月10日的这份日榜,我边翻边记了不少笔记,放在草稿箱里两天了,今天终于整理成文。如果你也喜欢半夜逛开源社区、或者最近正愁找不到合适的项目做技术选型和灵感参…

2026/10/19 20:08:44 阅读更多 →
Android通用列表Adapter封装:ListView与RecyclerView复用实践

Android通用列表Adapter封装:ListView与RecyclerView复用实践

自打开始做Android客户端,列表控件这东西就绕不开。早年写代码最常用的就是ListView,后来Google推出了RecyclerView,大家慢慢都切了过去。但不管用哪一个,有个问题始终存在:项目里的列表页面越来越多,每个页…

2026/10/19 20:08:44 阅读更多 →
GitHub热榜观察:AI应用落地与开发者工具新风向

GitHub热榜观察:AI应用落地与开发者工具新风向

每天上午十点左右,我都会习惯性打开 GitHub 的热榜页面,先扫一眼当天的趋势榜单。这个习惯我保持了快十年,早年是为了找好用的轮子,后来慢慢变成一种技术风向的感知方式——热榜上的项目,往往代表着一批开发者正在集中…

2026/10/19 20:08:44 阅读更多 →
SuperTrend+ADX双指标趋势跟随策略原理与Python实现详解

SuperTrend+ADX双指标趋势跟随策略原理与Python实现详解

做趋势交易的人一定绕不开那两个经典问题:趋势到底走没走出来?现在进场是顺势还是接飞刀?我做过一段时间CTA实盘,也把市面上的趋势指标挨个试了个遍,最后长期留在策略里的组合,就是SuperTrend配ADX。这篇文…

2026/10/19 20:08:44 阅读更多 →
YashanDB部署前检查清单:从环境准备到参数调优的完整指南

YashanDB部署前检查清单:从环境准备到参数调优的完整指南

拿到 YashanDB 安装包之后,别急着初始化。我见过太多次这种场景:环境参数没调好,数据库装上去了,跑两周业务量一大就出各种问题,最后排查一圈发现根子都在部署前那半天准备工作上。这篇就来聊聊 YashanDB 部署前必须确…

2026/10/19 20:07:43 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →