Redis 初学者指南
Redis 初学者指南
- 1. 什么是 Redis?
- 2. Redis 的基本概念
- 3. 安装 Redis
- 3.1 使用 Docker 安装
- 3.2 从源码编译安装
- 4. 基本操作
- 4.1 启动 Redis 服务
- 4.2 连接 Redis 客户端
- 4.3 常用命令
- 5. Redis 的数据结构
- 5.1 字符串
- 5.2 列表
- 5.3 集合
- 5.4 散列
- 5.5 有序集合
- 6. 高级特性
- 6.1 持久化
- 6.2 事务
- 6.3 发布/订阅
- 6.4 Lua 脚本
- 7. 进阶学习
- 8. 结论
Redis 是一个开源的内存数据结构存储系统,常用于缓存、会话管理、实时分析等场景。本文将带你从入门到精通 Redis,包括其基本概念、数据结构、安装配置、常用操作以及高级特性。
网站:https://redis.io/
1. 什么是 Redis?
Redis 是一个基于内存的 NoSQL 数据库,以键值对的形式存储数据。它支持多种数据结构,如字符串、散列、列表、集合、有序集合等。
2. Redis 的基本概念
- 键值对存储:Redis 中的数据都是以键值对的形式存储的。
- 持久化:Redis 支持数据持久化,以防止数据丢失。
- 事务:支持简单的事务操作。
- 发布/订阅:支持消息订阅和发布功能。
- Lua 脚本:支持在服务器端运行 Lua 脚本。
- 高可用性:通过哨兵和集群模式提供高可用性。
3. 安装 Redis
3.1 使用 Docker 安装
docker run --name myredis -p 6379:6379 -d redis
3.2 从源码编译安装
-
下载 Redis 源码:
wget http://download.redis.io/releases/redis-6.2.6.tar.gz tar xzf redis-6.2.6.tar.gz cd redis-6.2.6 -
编译并安装:
make sudo make install
4. 基本操作
4.1 启动 Redis 服务
redis-server
4.2 连接 Redis 客户端
redis-cli
4.3 常用命令
-
设置键值对:
SET key "value" -
获取键值:
GET key -
删除键:
DEL key -
检查键是否存在:
EXISTS key
5. Redis 的数据结构
5.1 字符串
最基本的数据类型,可以存储任何类型的数据。
SET mykey "Hello"
GET mykey
5.2 列表
用于存储有序的字符串列表。
LPUSH mylist "world"
LPUSH mylist "hello"
LRANGE mylist 0 -1
5.3 集合
无序的字符串集合。
SADD myset "Hello"
SADD myset "World"
SMEMBERS myset
5.4 散列
用于存储键值对集合。
HSET myhash field1 "value1"
HGET myhash field1
5.5 有序集合
带有分数的集合,自动排序。
ZADD myzset 1 "one"
ZADD myzset 2 "two"
ZRANGE myzset 0 -1
6. 高级特性
6.1 持久化
- RDB 快照:定期将数据快照保存到磁盘。
- AOF 日志:记录每次写操作,以日志形式保存。
6.2 事务
通过 MULTI 和 EXEC 命令实现简单的事务。
MULTI
SET key1 "value1"
SET key2 "value2"
EXEC
6.3 发布/订阅
用于实现消息通信。
SUBSCRIBE channel
PUBLISH channel "message"
6.4 Lua 脚本
在 Redis 服务器上运行 Lua 脚本。
EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 key value
7. 进阶学习
- 深入理解 Redis 内部机制:阅读 Redis 的源码和官方文档。
- 实践项目:尝试构建一个简单的缓存系统或消息队列。
- 社区资源:参与 Redis 社区,关注 Redis 的最新动态和最佳实践。
8. 结论
Redis 是一个功能强大且灵活的数据存储解决方案,适合多种应用场景。通过这篇文章,你应该对 Redis 的基本功能和高级特性有了初步的了解。继续深入学习和实践,将帮助你更好地掌握 Redis。
相关文章:
Redis 初学者指南
Redis 初学者指南 1. 什么是 Redis?2. Redis 的基本概念3. 安装 Redis3.1 使用 Docker 安装3.2 从源码编译安装 4. 基本操作4.1 启动 Redis 服务4.2 连接 Redis 客户端4.3 常用命令 5. Redis 的数据结构5.1 字符串5.2 列表5.3 集合5.4 散列5.5 有序集合 6. 高级特性…...
node.js_npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1
这个错误信息表明 PowerShell 因为执行策略的限制而阻止了 npm.ps1 脚本的运行。PowerShell 的执行策略是一种安全功能,用于限制哪些脚本可以运行,以防止恶意脚本的执行。 要解决这个问题,你可以按照以下步骤操作: 查看当前的执行…...
技术星河中的璀璨灯塔 —— 青云交的非凡成长之路
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
使用 Git 命令将本地项目上传到 GitLab
步骤详解 1. 在 GitLab 上创建一个新项目 登录你的 GitLab 账号。点击“New project”创建一个新的空项目。为项目设置名称、描述等信息。 2. 关联远程 Git 仓库 1.初始化本地 Git 仓库 git init 2.关联远程仓库: git remote add origin https://gitlab-lizz…...
JavaScript的第十三天
目录 一、使用jQuery操作属性值 操作案例: 表格的全选和反选 二、设置宽高 1、宽高属性 2、使用方式 三、offset() 和position()的区别 1、.offset():获取到document的距离,也就是窗口边…...
el-table 滚动条重置 手动控制滚动条
最近在使用 el-table 的时候,出现一个问题: 表头过长的时候,会有左右滑动的操作,当我们把表格拉到最右侧,这个时候重新请求数据的话,表格位置还是在最右侧,不会恢复原位。 那我们想恢复原位&a…...
详细分析Vue3中的provide和inject基本知识(附Demo)
目录 前言1. 基本知识2. Demo3. 拓展 前言 原先写过一篇父传子,推荐阅读:详细分析Vue3中的props用法(父传子) 实战中也常用这种方式,今天突然发现还有另外一种方式,对此进行深入探讨学习下 1. 基本知识 …...
spring集成kafka
Kafka 是一个分布式流处理平台,广泛用于构建实时数据流管道和流应用程序。它以高吞吐量、可扩展性和可靠性著称。以下是 Kafka 的实现原理详解及其在 Spring Boot 中的集成示例。 一、Kafka 实现原理 1. 架构概述 Kafka 的架构主要由以下几个组件组成:…...
el-form表单中含有el-input按回车自动刷新如何阻止
场景: 在Vue.js中使用Element UI的el-input组件时,如果按下Enter键导致页面刷新,这通常是因为表单的默认提交行为被触发了。要避免这种情况,你可以在el-input所在的表单上监听键盘事件,并阻止默认行为。 先解释一下时间…...
Spring Boot2.x教程:(十)从Field injection is not recommended谈谈依赖注入
从Field injection is not recommended谈谈依赖注入 1、问题引入2、依赖注入的三种方式2.1、字段注入(Field Injection)2.2、构造器注入(Constructor Injection)2.3、setter注入(Setter Injection) 3、为什…...
在 Android Studio 上运行 Java 的 main 函数
直接写了个main函数运行的时候提示 这时我们需要在idea目录下找到gradle.xml文件 添加 <option name"delegatedBuild" value"false" />搞定...
【Nas】X-DOC:Mac mini 安装 ZeroTier 并替换 planet 实现内网穿透
【Nas】X-DOC:Mac mini 安装 ZeroTier 并替换 planet 实现内网穿透 1、下载客户端 ZeroTier One2、安装过程3、更换planet备份原planet4、重启服务5、加入网络6、NAT内网穿透 1、下载客户端 ZeroTier One https://www.zerotier.com/download/ 选择 MacOS 适用版本&…...
Spring Boot 集成 RabbitMQ
在现代分布式系统中,消息队列扮演着至关重要的角色。它能够实现系统间的异步通信、解耦组件以及提高系统的可扩展性和可靠性。RabbitMQ 作为一款广泛使用的开源消息中间件,具有强大的功能和灵活的配置。而 Spring Boot 则是一种流行的 Java 开发框架&…...
存在sql注入的公网站点
此数据为博主在新手阶段练习sql注入时发现的站点,漏洞可能修复,备注可能错误 url: https://www.uni-1.com.hk/about_en.php?id2 注入点类型:数值 sql报错回显:无 sql语句执行:[order by] [union] 字段数:1…...
linux之网络子系统- 内核发送数据包流程以及相关实际问题
一、相关实际问题 查看内核发送数据消耗的CPU时应该看sy还是si在服务器上查看/proc/softirqs,为什么NET_RX要比NET_TX大得多发送网络数据的时候都涉及那些内存拷贝操作零拷贝到底是怎么回事为什么Kafka的网络性能很突出 二、网络包发送过程总览 调用系统调用send发…...
UDP 实现的 Echo Server 和 Echo Client 回显程序
欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 在网络编程中,Echo Server 和 Echo Client 回显是一种经典的示例,用于演示基本的网络通信。Echo Server 接收来自客户端的数据,并将相同的数据发送回客户端。这种模式在测试…...
AUTOSAR CP MCAL微控制器抽象层介绍
AUTOSAR(Automotive Open System Architecture)即汽车开放系统架构,它将汽车电子控制单元(ECU)的软件底层做了一个标准的封装,使得开发者能够共用一套底层软件,并通过修改参数来匹配不同的硬件和…...
SpringBoot应用部署到Docker中MySQL8时间戳相差8小时问题及处理方式
文章目录 SpringBoot应用部署到Docker中MySQL8时间戳相差8小时问题及处理方式1. 检查MySQL服务器的时间区设置2. 在Spring Boot应用程序中设置时间区3. Docker容器中通过Dockerfile设置时区4. 在运行Docker容器时通过命令行传递环境变量5. 启动SpringBoot应用时设置JVM参数来指…...
飞桨首创 FlashMask :加速大模型灵活注意力掩码计算,长序列训练的利器
在 Transformer 类大模型训练任务中,注意力掩码(Attention Mask)一方面带来了大量的冗余计算,另一方面因其 O ( N 2 ) O(N^2) O(N2)巨大的存储占用导致难以实现长序列场景的高效训练(其中 N N N为序列长度)…...
【含文档+源码】基于SpringBoot+Vue的新型吃住玩一体化旅游管理系统的设计与实现
开题报告 本文旨在探讨新型吃住玩一体化旅游管理系统的设计与实现。该系统融合了用户注册与登录、旅游景点管理、旅游攻略发帖、特色旅游路线推荐、附近美食推荐以及酒店客房推荐与预定等多项功能,旨在为游客提供全方位、一体化的旅游服务体验。在系统设计中&#…...
中国科技发展与华人贡献解析
中国科技发展与华人贡献解析纵观全球科技发展的壮阔历程,华人力量始终是不可或缺的核心支柱,中国科技的崛起与腾飞,既离不开本土科研工作者的深耕细作,更得益于海外华人的默默坚守与无私奉献。然而,长期以来࿰…...
C++ constexpr 编译期计算的应用技巧
C constexpr 编译期计算的艺术 在现代C中,constexpr关键字彻底改变了编译期计算的游戏规则。它允许开发者将复杂的计算任务从运行时转移到编译期,从而提升程序性能并增强代码的可维护性。从简单的常量计算到复杂的元编程,constexpr的应用场景…...
5个终极postcss-cssnext调试技巧:使用开发者工具深度分析CSS转换过程
5个终极postcss-cssnext调试技巧:使用开发者工具深度分析CSS转换过程 【免费下载链接】postcss-cssnext postcss-cssnext has been deprecated in favor of postcss-preset-env. 项目地址: https://gitcode.com/gh_mirrors/po/postcss-cssnext PostCSS-cssne…...
新手零失败指南:基于快马ai详解android studio安装配置与第一个app运行
新手零失败指南:基于快马AI详解Android Studio安装配置与第一个APP运行 作为一个刚接触安卓开发的新手,第一次安装Android Studio时确实容易被各种概念和步骤搞晕。最近我在InsCode(快马)平台上发现他们的AI指导特别适合新手,能一步步拆解复…...
新手友好:跟快马AI学写代码,轻松实现域名失效监控与告警
今天想和大家分享一个特别实用的运维小工具开发过程——域名健康检查工具。作为刚接触运维开发的新手,我发现在实际工作中经常遇到域名失效需要紧急切换的情况,手动检查效率太低,于是尝试用JavaScript写了个自动化监控工具。整个过程在InsCod…...
dify可以干什么
Dify 是一个开源的大模型(LLM)应用开发平台,旨在帮助你快速构建、管理和部署生成式 AI 应用,而无需从零开始写代码。简单来说,你可以把它理解为一个可视化的 AI 应用“工作台”,通过拖拉拽的方式࿰…...
LightOnOCR-2-1B实战体验:上传图片,秒出文字,简单高效
LightOnOCR-2-1B实战体验:上传图片,秒出文字,简单高效 1. 从“想法”到“文字”,只需要三步 你有没有过这样的经历?手机拍了一张会议白板的照片,想把上面的要点整理成文档,结果对着照片一个字…...
2026届最火的降重复率网站横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 想要有效降低文本 AI 率,针对知网 AI 检测系统独特的识别逻辑,得从语…...
3大维度解锁YimMenu:GTA5安全增强工具全方位使用指南
3大维度解锁YimMenu:GTA5安全增强工具全方位使用指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…...
ai辅助开发:向快马描述需求,直接生成jdk1.8实现的控制台通讯录项目
最近在尝试用Java开发一个简单的命令行通讯录程序,正好借这个机会体验了一把AI辅助开发的便利。整个过程让我深刻感受到,合理利用工具真的能大幅提升开发效率。下面记录下这个项目的实现思路和关键点,或许对同样想用JDK1.8练手的朋友有帮助。…...
