Redis 全方位解析:从入门到实战
引言
在当今互联网快速发展的时代,高并发、低延迟的应用场景越来越普遍。Redis,作为一款高性能的开源数据库,以其卓越的性能和灵活的功能,成为了许多开发者的首选工具。无论是在缓存、消息队列,还是在实时数据分析等领域,Redis 都展现出了强大的能力。
本文将从 Redis 的基本介绍、官网、安装、特性,到具体的存储类型、Java 代码实例、Spring Boot 整合,以及 Redis 的主要作用和应用场景,进行全面的讲解。无论你是刚接触 Redis 的新手,还是想深入理解其原理的开发者,这篇文章都能为你提供有价值的参考。
一、Redis 简介
什么是 Redis?
Redis(Remote Dictionary Server)是一款开源的、基于内存的键值存储系统。它支持多种数据结构,如字符串、列表、集合、哈希和有序集合等,并提供了丰富的操作命令。Redis 的设计理念是“数据结构 + 网络”,这意味着它可以高效地处理各种复杂的数据操作。
Redis 的特点
高性能:Redis 基于内存存储,读写速度极快,适合高并发场景。
丰富数据结构:支持多种数据结构,满足不同的业务需求。
持久化:支持 RDB 和 AOF 两种持久化方式,确保数据不丢失。
高可用性:支持主从复制、哨兵模式和集群模式,保障系统的稳定性和扩展性。
简单易用:提供简洁的命令行接口和丰富的客户端库。
二、Redis 官网与下载安装
Redis 官网
Redis 的官方网站是:https://redis.io
在官网中,你可以找到 Redis 的最新版本、文档、教程以及社区资源。
Redis 的安装
1. Linux 系统安装
在 Linux 系统中,可以通过以下命令安装 Redis:
# 下载 Redis
$ wget https://download.redis.io/releases/redis-7.0.5.tar.gz# 解压
$ tar xzf redis-7.0.5.tar.gz# 进入解压目录
$ cd redis-7.0.5# 编译
$ make# 安装
$ sudo make install
2. Windows 系统安装
在 Windows 系统中,可以通过以下步骤安装 Redis:
下载预编译的 Redis-Windows 版本:https://github.com/microsoftarchive/redis
解压文件并运行 redis-server.exe 启动服务。
使用 redis-cli.exe 进行命令行操作。
3. macOS 系统安装
在 macOS 系统中,可以通过 Homebrew 安装 Redis:
# 安装 Homebrew
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 使用 Homebrew 安装 Redis
$ brew install redis# 启动 Redis
$ brew services start redis
三、Redis 的特性
1. 高性能
Redis 基于内存存储,避免了磁盘 I/O 的瓶颈,读写速度非常快。根据官方数据,Redis 的性能可以达到每秒处理数十万次请求。
2. 丰富的数据结构
Redis 支持多种数据结构,包括:
String:字符串,适用于简单的键值存储。
List:列表,支持有序的数据存储和快速的插入、删除操作。
Set:集合,适用于去重和随机访问。
Hash:哈希,适用于存储对象或映射。
Sorted Set:有序集合,支持按分数排序。
3. 持久化
Redis 提供了两种持久化方式:
RDB(Redis Database Backup):定期将内存中的数据快照存储到磁盘。
AOF(Append Only File):记录每条写命令,保证数据的持久性。
4. 高可用性
Redis 提供了多种高可用性方案:
主从复制:通过主节点和从节点实现数据的冗余存储。
哨兵模式:自动监控主从节点的状态,实现故障转移。
集群模式:支持水平扩展,满足大规模数据存储的需求。
四、Redis 的存储类型
1. String 类型
应用场景:缓存用户信息、会话数据等。
操作示例:
# 设置字符串
SET user:name "Alice"# 获取字符串
GET user:name
2. List 类型
应用场景:实现消息队列、任务队列等。
操作示例:
# 添加元素到列表头部
LPUSH list:messages "Hello, Redis!"# 获取列表元素
LRANGE list:messages 0 -1
3. Set 类型
应用场景:存储用户标签、.Unique ID 等。
操作示例:
# 添加元素到集合
SADD set:tags "Java" "Python" "Redis"# 获取集合元素
SMEMBERS set:tags
4. Hash 类型
应用场景:存储用户配置、对象数据等。
操作示例:
# 设置哈希字段
HSET user:1 name "Alice" age 25# 获取哈希字段
HGETALL user:1
5. Sorted Set 类型
应用场景:实现排行榜、计分系统等。
操作示例:
# 添加元素到有序集合
ZADD zset:scores 90 Alice 85 Bob 95 Charlie# 获取有序集合元素
ZRANGE zset:scores 0 -1 WITHSCORES
五、Redis 整合 Java 代码实例
1. 引入依赖
在 Maven 项目中,添加 Jedis 依赖:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.0</version>
</dependency>
2. Java 代码实现
import redis.clients.jedis.Jedis;public class RedisExample {public static void main(String[] args) {// 连接 Redis 服务器Jedis jedis = new Jedis("localhost", 6379);// 设置字符串jedis.set("user:name", "Alice");// 获取字符串String name = jedis.get("user:name");System.out.println("Name: " + name);// 关闭连接jedis.close();}
}
六、Redis 整合 Spring Boot
1. 引入依赖
在 Spring Boot 项目中,添加 Redis 依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置文件
在 application.properties 中添加配置:
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
3. 使用 RedisTemplate
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, String> redisTemplate;public void setValue(String key, String value) {redisTemplate.opsForValue().set(key, value);}public String getValue(String key) {return redisTemplate.opsForValue().get(key);}
}
七、Redis 的主要作用与应用场景
1. 缓存
Redis 可以作为缓存层,提高应用的响应速度。例如,缓存用户信息、商品详情等。
2. 消息队列
Redis 的 List 数据结构可以实现消息队列,用于异步处理任务。
3. 实时数据分析
Redis 的 Sorted Set 数据结构可以实现排行榜、实时统计等功能。
4. 分布式锁
Redis 的 RedLock 算法可以实现分布式锁,解决高并发场景下的数据一致性问题。
5. 会话存储
Redis 可以存储用户的会话信息,实现跨节点的会话共享。
八、总结
Redis 是一款功能强大、性能卓越的数据库,广泛应用于缓存、消息队列、实时分析等领域。通过本文的讲解,你已经掌握了 Redis 的基本概念、安装配置、数据结构、Java 和 Spring Boot 的整合方法,以及 Redis 的主要应用场景。
希望本文能帮助你在实际项目中更好地使用 Redis,提升应用的性能和扩展性。
相关文章:
Redis 全方位解析:从入门到实战
引言 在当今互联网快速发展的时代,高并发、低延迟的应用场景越来越普遍。Redis,作为一款高性能的开源数据库,以其卓越的性能和灵活的功能,成为了许多开发者的首选工具。无论是在缓存、消息队列,还是在实时数据分析等领…...
无第三方依赖 go 语言工具库
- 开源地址 GitHub - zdhsoft/xmutilsgo: utils for go - 使用办法 go get github.com/zdhsoft/xmutilsgo 主要内容 int.go 定义泛型的整数类型和字符串转整数的函数和随机范围的函数isin.go 判断指定元素是否再数组中的函数page.go mysql用于分页的类ret.go 通用返回值的类…...
代码随想录算法【Day49】
Day49 42. 接雨水 思路 这道题利用单调栈进行横向求解。对于每一个元素,找到它右边第一个比它大的元素和左边第一个比它大(或者与它相等的元素,当然这种情况可以忽略),最后计算雨水的存储量:(…...
R-CNN
这是一个20004096的一个特征矩阵 05:44在这个特征矩阵当中呢 05:45每一行就是我们一个候选框 05:48通过CNN网络得到了一个特征向量 05:51然后它有2000候选框 05:53所以它一共有2000行 05:54然后中间这个就是我们所说的SVM权值矩阵 05:58它的每一列呢 05:59就对应着我们…...
Linux探秘坊-------5.git
1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...
项目中分库分表的分布式ID如何生成
分库分表与分布式ID生成在Java项目中的应用 在大规模的分布式系统中,数据库表和数据量的增大可能会导致单个数据库或单个表的性能瓶颈。为了解决这个问题,我们通常使用分库分表来进行数据的水平切分和垂直切分。同时,在分布式环境中…...
SOME/IP--协议英文原文讲解8
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2 Speci…...
JUC并发—7.AQS源码分析三
大纲 1.等待多线程完成的CountDownLatch介绍 2.CountDownLatch.await()方法源码 3.CountDownLatch.coutDown()方法源码 4.CountDownLatch总结 5.控制并发线程数的Semaphore介绍 6.Semaphore的令牌获取过程 7.Semaphore的令牌释放过程 8.同步屏障CyclicBarrier介绍 9.C…...
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...
基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
基于知识图谱的问答系统:后端PythonFlask,数据库Neo4j,前端Vue3 引言 随着人工智能技术的不断发展,知识图谱作为一种结构化的知识表示方式,逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...
日做力扣题2--215. 数组中的第K个最大元素
这道题我在做北京的一家教育公司的笔试时出现过,且题目里直接要求使用快排做,所以我也使用快排做的。 题目: 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最…...
centos8 使用yum安装程序出现报错
在执行yum指令出现源更新不了Could not resolve host: mirrorlist.centos.org; Unknown error问题 yum -y update结果 Errors during downloading metadata for repository appstream: - Curl error (6): Couldnt resolve host name for http://mirrorlist.centos…...
linux系统搭建DNS服务器、详细知识讲解
DNS服务器系统为rocky9.5, 1、安装DNS dnf -y install bind bind-utilsbind软件包 BIND 是一个开源的 DNS 服务器软件,广泛用于域名解析服务。 配置管理: 权威 DNS 服务器(Authoritative DNS):为特定域名…...
【部署优化篇四】《DeepSeek移动端优化:CoreML/TFLite实战对比》
手机里的AI助手能秒速回答你的问题,游戏人物能实时追踪你的表情变化,这些酷炫功能的背后都离不开移动端机器学习框架的支撑。今天我们就来撕开两个当红炸子鸡框架CoreML和TFLite的神秘面纱,看看它们在模型优化这件事上到底藏着哪些独门绝技。 一、移动端优化的生存法则 在…...
DeepSeek联网搜索
deepseek 0、前言1、未联网2、联网2.1 SerpAPI2.2 SerpAPIDeepseek 0、前言 为获取最新消息,需给deepseek联网 1、未联网 from dotenv import load_dotenv from langchain_deepseek import ChatDeepSeekload_dotenv()# 1、模型 model ChatDeepSeek(model"d…...
pt100 2线和3线的区别?
3线比2线更稳定一些; 在电路中,b和c是不连接在一起的; 测试的时候,b和c是接在一起的,也就是说pt100中b和c是连接在一起的 3线比2线多一个反馈; 平时测试的时候,测试一下ab或者ac 都是一样的…...
ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek
ollama-chat-ui-vue 使用vue3 vite elementUi 搭建的前端chat,通过ollama可与模型对话,目前支持独立思考,切换模型(联网查询后续支持) github地址:ollama-chat-ui-vue 制作不易github点点star,谢谢 前置工作 安装ollama,ollama官网地址 安装完olla…...
hot100-3、438、560、239、240、160、234(2简3中1难)
滑窗问题↓ 3. 无重复字符的最长子串(中等) 方法一、滑动窗口 数组结合哈希表ascii码,滑动出口。其实可以优化为left Math.max(left,map.get(s.charAt(i)) 1),数组的话就是全部初始化为-1,用来计算最新下标而不是…...
深入理解 Java 反射机制:获取类信息与动态操作
在 Java 编程中,反射(Reflection)是一种强大的机制,允许程序在运行时动态地获取类的信息并操作类的属性、方法和构造器。反射是 Java 动态语言特性的核心,广泛应用于框架开发、插件系统、序列化和反序列化等领域。本文…...
Redis 主从复制
概念 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满⾜故障恢复和负载均衡等需求。Redis 也是如此,它提供了复制的功能,实现了相同数据的多个 Redis 副本,通过一个主节点(ma…...
Unity中NavMesh的使用 及其 导出给java服务端进行寻路
1.先添加 AI Navigation组件 2.Windows-->AI-->Navigation(Obsolete) 这样子就可以看到烘焙按钮 3.将物体标记为行走和不可行走 4.添加一个Plane和一些球体,并把需要形成NavMesh的物体选择为静态 // 因为只能烘焙静态的 之后可以看出烘焙后,看着被…...
【含文档+PPT+源码】基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现
项目介绍 本课程演示的是一款基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部…...
iOS App的启动与优化
App的启动流程 App启动分为冷启动和热启动 冷启动:从0开始启动App热启动:App已经在内存中,但是后台还挂着,再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段: dyld:…...
一周学会Flask3 Python Web开发-request请求钩子(Hook)
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 有时候我们业务需求对请求做一些鉴权,日志,统计分析等功能,这时候可以对请求进行预处理( …...
git clone
方法一(替换URL) git clone https://gitclone.com/github.com/tendermint/tendermint.git 方法二(设置git参数) git config --global url."https://gitclone.com/".insteadOf https:// git clone https://github.co…...
nginx ngx_http_module(8) 指令详解
nginx ngx_http_module(8) 指令详解 nginx 模块目录 nginx 全指令目录 一、目录 1.1 模块简介 ngx_http_ssi_module:服务器端包含(SSI)模块,允许在HTML页面中插入其他内容或动态生成的内容。通过特殊的SSI指令(如 …...
Apache Struts RCE (CVE-2024-53677)
前言 对目前的Apache Struts RCE (CVE-2024-53677)的poc进行总结,由于只能单个ip验证,所以自己更改一下代码,实现:多线程读取url验证并保存,更改为中文解释 免责声明 请勿利用文章内的相关技术从事非法测试…...
windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI
本文将手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大语言模型,实现私有化AI服务搭建。 一、环境准备 1.1 硬件要求 CPU:推荐Intel i7及以上(需支持AVX2指令集) 内存:最低16GB,推荐…...
前端:最简单封装nmp插件(组件)过程。
一、nmp使用 1、注册nmp账号:npm | Home 2、创建插件名称文件夹,如: vue3-components 3、初始化一个package.json文件:nmp init npm init package.json配置用处介绍,如下: {// 包名,必须…...
百度搜索融合 DeepSeek 满血版,开启智能搜索新篇
百度搜索融合 DeepSeek 满血版,开启智能搜索新篇 🚀 🔹 一、百度搜索全量接入 DeepSeek 🔹 百度搜索迎来重要升级,DeepSeek 满血版全面上线!🎉 用户在百度 APP 搜索后,点击「AI」即…...
导出指定文件夹下的文件结构 工具模块-Python
python模块代码 import os import json import xml.etree.ElementTree as ET from typing import List, Optional, Dict, Union from pathlib import Path class DirectoryTreeExporter:def __init__(self,root_path: str,output_file: str,fmt: str txt,show_root: boo…...
V4L2驱动之UVC
以下是关于V4L2摄像头驱动框架与UVC协议的关联分析,从内核驱动到用户空间的完整视角: 1. V4L2驱动框架核心架构 关键组件: 核心层 (V4L2 Core) v4l2_device:设备的总入口,管理所有子组件video_device:对应…...
【Linux】匿名管道的应用场景-----管道进程池
目录 一、池化技术 二、简易进程池的实现: Makefile task.h task.cpp Initchannel函数: 创建任务: 控制子进程: 子进程执行任务: 清理收尾: 三、全部代码: 前言: 对于管…...
umi react+antd 判断渲染消息提示、input搜索、多选按钮组
记得map里返回的每层遍历结构都要带上key(图里没加,最近在接手react,熟悉中......
Windows桌面系统管理5:Windows 10操作系统注册表
Windows桌面系统管理0:总目录-CSDN博客 Windows桌面系统管理1:计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2:VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3:Windows 10操作系统部署与使用-CSDN博客 Wi…...
华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南
本文记录 在 华为昇腾 910B(65GB) * 8 上 部署 DeepSeekR1 蒸馏系列模型(14B、32B)全过程与测试结果。 NPU:910B3 (65GB) * 8 (910B 有三个版本 910B1、2、3) 模型:DeepSeek-R1-Distill-Qwen-14B、DeepSeek…...
文献阅读 250219-Global water availability boosted by vegetation-driven changes (1)
Global water availability boosted by vegetation-driven changes in atmospheric moisture transport 来自 <https://www.nature.com/articles/s41561-022-01061-7> ## Abstract: 全球水资源的可用性是气候变化研究中的重要议题,尤其是随着气候变化的加剧&a…...
蓝桥杯篇---超声波距离测量频率测量
文章目录 简介第一部分:超声波的简介工作原理1.发射超声波2.接收反射波3.计算时间差4.计算距离 硬件连接1.Trig2.Echo 示例代码代码说明注意事项1.声速2.延时精度3.硬件连接 第二部分:频率测量简介频率测量原理1.信号输入2.计数3.计算频率 硬件连接示例代…...
【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)
《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…...
LearnOpenGL——高级OpenGL(下)
教程地址:简介 - LearnOpenGL CN 高级数据 原文链接:高级数据 - LearnOpenGL CN 在OpenGL中,我们长期以来一直依赖缓冲来存储数据。本节将深入探讨一些操作缓冲的高级方法。 OpenGL中的缓冲本质上是一个管理特定内存块的对象,它…...
wangEditor 编辑器 Vue 2.0 + Nodejs 配置
资料 Vue2.0 版本的安装:https://www.wangeditor.com/v5/for-frame.html#%E4%BD%BF%E7%94%A8上传图片配置:https://www.wangeditor.com/v5/menu-config.html#%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87 安装步骤 1.安装界面基础部分 <!-- 富文本编辑器…...
机器学习·数据处理
前言 对于大规模数据,我们经常会使用python内置函数或者编写脚本进行批量化处理,从而提高后续使用算法的效率。 1. 正则表达式 定义:用于检索、替换符合某个模式的文本,是文本预处理常用技术。基本语法 符号描述.匹配除换行符 …...
如何在Bigemap Pro中用线分割面、挖空
有时候需要以一条线为界对面元素进行分割或者是需要在一个面元素里面挖空一个面形状的洞,对此需求可以使用bigemap pro工具实现,这里为你介绍一下具体的操作方法。 【一】画线分割面 第一步:现在这是一个不规则多边形,想要以手动…...
网络安全入门攻击与防御实战(四)
漏洞利用:永恒之蓝(MS17-010)与同类漏洞解析 1 永恒之蓝(MS17-010)漏洞背景 (1)漏洞信息 CVE编号:CVE-2017-0143 ~ CVE-2017-0148 影响范围:Windows XP ~ Windows 201…...
DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)
前言 在当今数字化时代,AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型,凭借其出色的性能和开源免费的优势,成为许多开发者的首选。今天,就让我们一起探索如何将DeepSeek接入PyCharm,实现高效、智…...
CF1801D
CF1801D 题目大意: n n n 个顶点, m m m 条边的图。你一开始在起点 1,拥有 P P P 枚硬币,通过每条 ( i , j ) (i,j) (i,j) 边都需要花费一定的硬币 s ( i , j ) s(i,j) s(i,j)。但你在每个城市 i i i 都可以打工赚硬币 w i w…...
大厂算法面试常见问题总结:高频考点与备战指南
在大厂算法面试中,数据结构与算法是必考的核心内容。 无论是校招还是社招,算法题的表现往往决定了面试的成败。 为了帮助大家更好地备战,本文总结了大厂算法面试中的高频考点,并提供了详细的备战建议,助你轻松应对面…...
【R语言】主成分分析与因子分析
一、主成分分析 主成分分析(Principal Component Analysis, PCA)是一种常用的无监督数据降维技术,广泛应用于统计学、数据科学和机器学习等领域。它通过正交化线性变换将(高维)原始数据投影到一个新的坐标系ÿ…...
解锁 AIoT 无限可能,乐鑫邀您共赴 Embedded World 2025
2025 年 3 月 11-13 日,全球规模最大的嵌入式展览会——Embedded World 2025 将在德国纽伦堡盛大开幕。作为物联网和嵌入式技术领域的领先企业,乐鑫信息科技 (688018.SH) 将展示在 AI LLM、HMI、双频 Wi-Fi 6、低功耗 MCU 和 Matter 等领域的最新技术及解…...
人工智能基础之数学基础:01高等数学基础
函数 极限 按照一定次数排列的一列数:“,“,…,"…,其中u 叫做通项。 对于数列{Un}如果当n无限增大时,其通项无限接近于一个常数A,则称该数列以A为极限或称数列收敛于A,否则称数列为发散, 极限值 左…...