1. Redis简介与安装
1.1 什么是Redis
Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,支持多种数据结构,如字符串、列表、集合、有序集合和哈希。它不仅能作为一个高效的缓存工具,还能作为消息队列、分布式锁和持久化存储等广泛的场景中使用。
Redis的历史
Redis 由意大利开发者 Salvatore Sanfilippo 于 2009 年发布,最初是为了优化 LLOOGG 的性能问题,该应用需要高效地处理实时 Web 流量分析。后来,Redis 逐渐发展成为一个广泛使用的 NoSQL 数据库,并于 2015 年由 Redis Labs 负责商业维护与支持。
1.2 Redis的特性
Redis 之所以在众多场景中被广泛采用,与它的以下特性息息相关:
-
高效的内存操作:Redis 是基于内存的数据存储,所有数据都存储在内存中,这使得读写速度极快,非常适合用作缓存。
-
丰富的数据结构:Redis 不仅支持基本的键值对存储,还支持多种高级数据结构,如列表、集合、哈希和有序集合等,便于开发者灵活处理复杂的数据需求。
-
持久化机制:Redis 提供了两种持久化机制:
- RDB快照:定期对内存数据进行快照保存。
- AOF日志:将每次写操作记录到日志文件中,可以在服务器重启时恢复数据。
-
主从复制:Redis 支持主从复制,可以通过配置多个副本(slave)来实现读写分离和数据备份。
-
集群与高可用性:Redis 提供了 Redis Cluster 和 Redis Sentinel 两种机制,前者用于横向扩展,后者用于高可用性管理。
-
Lua脚本:Redis 支持原生的 Lua 脚本,可以实现复杂的原子操作,避免数据不一致性问题。
-
事务支持:虽然 Redis 不支持真正的关系型数据库事务,但通过 MULTI、EXEC、WATCH 等命令,Redis 提供了一种简单的事务功能。
-
轻量级与易部署:Redis 使用 C 语言编写,性能高效,二进制文件很小,且无需繁杂的安装步骤,支持在大多数操作系统上运行。
1.3 Redis的应用场景
由于 Redis 是一个高效的内存存储系统,且支持多种数据结构和丰富的功能,以下是它的几个常见应用场景:
-
缓存系统:Redis 可以用作高效的缓存服务器,缓存频繁访问的数据,减轻后端数据库的压力,降低数据访问延迟。例如,电商平台可以缓存用户的购物车信息、商品价格等。
-
计数器/排行榜:Redis 支持原子性递增/递减操作,适合用作计数器应用场景,如记录网站访问量、视频播放量等。
-
会话管理:Redis 可以存储用户会话信息,特别是在 Web 应用中,用户登录后可以将其 Session 存储在 Redis 中,实现分布式会话管理。
-
消息队列:Redis 支持 List 数据结构和发布/订阅(Pub/Sub)模式,因此可以用作简单的消息队列系统,适合用于异步任务处理。
-
分布式锁:通过 Redis 的原子性命令,可以实现分布式锁,用来协调多个系统之间的并发访问控制。
-
实时数据分析:借助 Redis 高速读写的特点,可以实现高效的实时数据分析。例如,社交平台可以用 Redis 实现用户动态的实时统计分析。
1.4 Redis与其他数据库的对比
Redis 与其他常见数据库(如关系型数据库、NoSQL 数据库)存在显著差异,适用于不同的使用场景。以下是 Redis 与其他数据库的一些对比:
| 特性 | Redis | MySQL(关系型数据库) | MongoDB(NoSQL数据库) |
|---|---|---|---|
| 数据存储 | 内存存储+持久化 | 磁盘存储 | 磁盘存储 |
| 数据结构 | 多种复杂数据结构 | 表、行、列 | 文档(JSON格式) |
| 性能 | 非常高,内存操作 | 相对较慢 | 高效,但不如Redis快 |
| 持久化 | 可选持久化 | 默认持久化 | 默认持久化 |
| 事务支持 | 基本支持 | 完整事务支持 | 基本事务支持 |
| 适用场景 | 缓存、队列、实时分析 | 复杂查询、持久存储 | 大规模非结构化数据 |
1.5 安装Redis
Redis 的安装相对简单,支持多种操作系统,包括 Linux、macOS 和 Windows。以下是在常见操作系统上的安装步骤:
1.5.1 在Linux上安装Redis
-
使用
apt或yum安装 Redis(取决于你的 Linux 发行版):sudo apt update sudo apt install redis-server -
安装完成后,启动 Redis 服务:
sudo systemctl start redis-server -
检查 Redis 是否正常运行:
redis-cli ping如果返回
PONG,说明 Redis 运行正常。
1.5.2 在macOS上安装Redis
-
使用 Homebrew 安装 Redis:
brew update brew install redis -
安装完成后,启动 Redis:
redis-server /usr/local/etc/redis.conf -
验证安装:
redis-cli ping
1.5.3 在Windows上安装Redis
- Redis 官方并未正式提供 Windows 版本,但可以使用第三方提供的 Windows 版本,如 Microsoft 开源的 Windows Redis 版本。
- 也可以通过 WSL(Windows Subsystem for Linux)在 Windows 上安装并运行 Redis。
1.6 Redis的基本配置与运行
Redis 提供了多种配置选项,以下是几个常见的基本配置:
-
修改默认端口:默认情况下,Redis 运行在 6379 端口。如果你想修改端口,可以编辑
redis.conf文件中的port配置项:port 6380 -
最大客户端连接数:可以通过
maxclients配置项来限制同时连接 Redis 服务器的客户端数:maxclients 10000 -
日志文件:通过
logfile配置项可以指定 Redis 的日志文件路径:logfile "/var/log/redis/redis-server.log" -
数据持久化配置:可以在
redis.conf中启用或禁用 RDB 和 AOF 持久化功能:save 900 1 # 每900秒至少有1次写操作时保存数据快照 appendonly yes # 启用AOF日志 -
启动与停止 Redis:
-
启动 Redis:
redis-server /path/to/redis.conf -
停止 Redis:
redis-cli shutdown
-
通过这些基本的安装和配置,用户可以快速地搭建起一个 Redis 服务器,并用于生产环境或测试环境。
相关文章:
1. Redis简介与安装
1.1 什么是Redis Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,支持多种数据结构,如字符串、列表、集合、有序集合和哈希。它不仅能作为一个高效的缓存工具,还能作为消息队列、分布式锁和…...
Redis的持久化存储和集群管理操作
Redis 的持久化存储和集群 一、引言 Redis 是一个开源的内存数据结构存储系统,被广泛应用于缓存、消息队列、排行榜等场景。然而,由于数据存储在内存中,一旦服务器重启或出现故障,数据就会丢失。为了解决这个问题,Re…...
Auto-encoder(自编码器)
Auto-encoder(自编码器) 1 基本概念 自编码就和之前的cycle GAN的概念很像,假設你有非常大量的圖片,在 Auto-Encoder 裡面你有兩個 Network,一個叫做 Encoder,一個叫做 Decoder,他們就是兩個 N…...
Vue+sortable+el-table表格排序使用指南
前言 这两天遇到一个需求:在点击【设置优先级】的按钮后弹出关于玩法类型的table,点击【排序】按钮可以后可以进行排序。由于组内使用的组件库是 element-ui,那我首先就想到了使用 el-table组件,但奈何其版本原因不能相应的拖拽排…...
表数据删一半,为什么表文件大小不变?
参数innodb_file_per_table 这个参数设置为ON,表示每个表数据单独存在一个文件中,这时如果执行drop命令,系统会直接删除表文件。 这个参数设置为off时,所有表的数据和索引都存在共享的.ibdata文件,即使表删掉了&…...
MoCoOp: Mixture of Prompt Learning for Vision Language Models
文章汇总 当前的问题 1)数据集风格变化。 如图1所示,对于一个数据集,单个软提示可能不足以捕获数据中呈现的各种样式。同一数据集中的不同实例可能与不同的提示符兼容。因此,更**自然的做法是使用多个提示来充分表示这些变化**。 2)过拟合…...
YOLOv8 onnx 部署
本文是在win10系统下进行yolov8目标检测推理的过程记录。 yolov8 已经集成到OpenCV,可以通过两种方式调用,一种是直接通过OpenCV 调用,另外一种是通过onnx runtime(ort)调用。 1、安装cuda 、opencv 等依赖库,具体可以参考 Win1…...
在文件里引用目录文件下的静态资源图片不显示
问题:两种图片路径的指定方式,第一种能展示图片但第二种不能 两个 示例中,图片展示的差异。 在第一个示例中,图片路径是硬编码在 标签的 src 属性中的: <img src"../../assets/img/header01.png" style…...
vue使用 jsplumb 生成流程图
1、安装jsPlumb: npm install jsplumb 2、 在使用的 .vue 文件中引入 import { jsPlumb } from "jsplumb"; 简单示例: 注意:注意看 id 为"item-3"和"item-9"那条数据的连线配置 其中有几个小图片&#x…...
攻坚金融关键业务系统,OceanBase亮相2024金融科技大会
10月15-16日,第六届中新数字金融应用博览会与2024金融科技大会(简称“金博会”)在苏州工业园区联合举办。此次大会融合了国家级重要金融科技资源——“中国金融科技大会”,围绕“赋能金融高质量发展,金融科技创新前行”…...
《纳瓦尔宝典:财富和幸福指南》读书随笔
最近在罗胖的得到听书中听到一本书,感觉很有启发,书的名字叫《纳瓦尔宝典》,从书名上看给人的感觉应该财富知识类、鸡汤爆棚哪类。纳瓦尔,这个名字之前确实没有听说过,用一句话介绍一下,一个印度裔的硅谷中…...
C++ | STL | 侯捷 | 学习笔记
C | STL | 侯捷 | 学习笔记 文章目录 C | STL | 侯捷 | 学习笔记1 STL概述1.1 头文件名称1.2 STL基础介绍1.3 typename 2 OOP vs. GP3 容器3.1 容器结构分类3.2 序列式容器3.2.1 array测试深度探索 3.2.2 vector测试深度探索 3.2.3 list测试深度探索 3.2.4 forward_list测试深度…...
C函数基础
C语言中的函数教程 在C语言中,函数是一段组织好的、可重复使用的、用于执行特定任务的代码。函数可以提高代码的模块化和可重用性。以下是关于C语言中函数的详细教程。 1. 函数的定义与声明 1.1 函数定义 函数定义包括函数头和函数体。函数头包括函数返回类型、…...
html和css实现页面
任务4 html文件 任务5 htm文件 css文件 任务6 html文件 css文件 任务7 html文件 css文件...
Github_以太网开源项目verilog-ethernet代码阅读与移植(八)——移植工程分享
实验背景 第六篇计划是写项目中各个模块的实现和约束文件的编写,有的小伙伴有裁剪工程的需要,就先分享一个半成品以供参考,由于笔者水平有限,错误肯定会有,望批评指正。 实验内容 移植工程共享 实验步骤 工程一部…...
【大模型实战篇】大模型分词算法BPE(Byte-Pair Encoding tokenization)及代码示例
词元化是针对自然语言处理任务的数据预处理中一个重要步骤,目的是将原始文本切分成模型可以识别和处理的词元序列。在大模型训练任务中,就是作为大模型的输入。传统的自然语言处理方法,如基于条件随机场的序列标注,主要采用基于词…...
低功耗4G模组LCD应用示例超全教程!不会的小伙伴看这篇就够了!
希望大家通过本文的介绍,学会LCD显示屏与Air780E开发板结合使用的方法。利用LCD显示屏,你可以为你的项目增加丰富的显示内容,提升用户体验。记住,实践出真知,赶快动手尝试吧!相信这篇教程对你有所帮助~ 本文…...
Java while语句练习 C语言的函数递归
1. /* public static void main(String[] args) {int[] arr {25, 24, 12, 98, 36, 45};int max arr[0];//不能写0for (int i 1; i < arr.length; i) {if (arr[i] > max) {max arr[i];}}System.out.println(max);}*//*public static void main(String[] args) {doubl…...
illustrator免费插件 截图识别文字插件 textOCR
随手可得的截图识别文字插件 textOCR,识别出来的文字可直接输入到illustrator的当前文档中: 执行条件 1、需截图软件支持,推荐笔记截图工具 2、截好图片直接拖入面板即可完成识别 ****后期可完成实现在illustrator选择图片对象完成文字识别。…...
提升数据管理效率:ETLCloud与达梦数据库的完美集成
达梦数据库的核心优势在于其强大的数据处理能力和高可用性设计。它采用先进的并行处理技术,支持大规模的数据操作,同时具备出色的事务处理能力和数据安全保障。此外,达梦数据库还提供了丰富的功能模块,如数据备份、恢复、监控等&a…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...
