Redis入门概述

server/2025/2/1 7:02:39/

1.1、Redis是什么

Redis:官网

高性能带有数据结构的Key-Value内存数据库

Remote Dictionary Server(远程字典服务器)是完全开源的,使用ANSIC语言编写遵守BSD协议,例如String、Hash、List、Set、SortedSet等等。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案。

Redis是一个开源的(BSD许可)内存数据结构存储,用作数据库缓存、消息代理和流引擎。Redis提供数据结构,如字符串、散列、列表、集合、带范围查询的排序集合、位图、超日志、地理空间索引和流。Redis具有内置的复制、Lua脚本、LRU逐出、事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster的自动分区提供高可用性。

1.2、Redis的主流功能

  1. 分布式缓存,挡在MySql数据库之前的带刀护卫

  2. 内存存储和持久化(RDB+AOF)redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务

  3. 高可用架构搭配

  4. 缓存穿透、击穿、雪崩

  5. 分布式锁

  6. 队列

  7. 排行榜+点赞

与传统数据库关系(MySql)

Redis是Key-Value数据库(NoSQL一种),mysql是关系数据库(有一定的约束)

Redis数据操作主要在内存(查的快),而MySql主要存储在磁盘

Redis在某一些场景使用中要明显优于MySql,比如计数器,点赞,排行榜等方便

Redis通常用于一些特定场景,需要与MySql一起配合使用

两者并不是相互替换和竞争关系,而是通用和配合关系。redis帮mysql减负

1.3、Redis的优势

性能极高 - Redis能读的速度是110000次/秒,写得速度是81000次/秒 Redis数据类型丰富,不仅仅支持简单的Key-Value类型的数据,同时还提供list、set、zest、hash等数据结构的存储 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用 Redis支持数据的备份,即master-slave(主从)模式的数据备份

1.4、redis7新特性浅谈

官网github.com/redis/redis/releases查看

1.版本号第二位是基数,则为非稳定版,如2.7,2.9

Function

Function是Redis脚本方案的全新实现,在Redis 7.0之前用户只能使用EVAL命令族来执行Lua脚本,但是Redis对Lua脚本的持久化和主从复制一直是undefined状态,在各个大版本甚至release版本中也都有不同的表现。因此社区也直接要求用户在使用Lua脚本时必须在本地保存一份(这也是最为安全的方式),以防止实例重启、主从切换时可能造成的Lua脚本丢失,维护Redis中的Lua脚本一直是广大用户的痛点。

Function的出现很好的对Lua脚本进行了补充,它允许用户向Redis加载自定义的函数库,一方面相对于EVALSHA的调用方式用户自定义的函数名可以有更为清晰的语义,另一方面Function加载的函数库明确会进行主从复制和持久化存储,彻底解决了过去Lua脚本在持久化上含糊不清的问题。

那么自7.0开始,Function命令族和EVAL命令族有了各自明确的定义:FUNCTION LOAD会把函数库自动进行主从复制和持久化存储;而SCRIPT LOAD则不会进行持久化和主从复制,脚本仅保存在当前执行节点。并且社区也在计划后续版本中让Function支持更多语言,例如JavaScript、Python等,敬请期待。

总的来说,Function在7.0中被设计为数据的一部分,因此能够被保存在RDB、AOF文件中,也能通过主从复制将Function由主库复制到所有从库,可以有效解决之前Lua脚本丢失的问题,我们也非常建议大家逐步将Redis中的Lua脚本替换为Function。

Multi-part AOF

AOF是Redis数据持久化的核心解决方案,其本质是不断追加数据修改操作的redo log,那么既然是不断追加就需要做回收也即compaction,在Redis中称为AOF rewrite。

然而AOF rewrite期间的增量数据如何处理一直是个问题,在过去rewrite期间的增量数据需要在内存中保留,rewrite结束后再把这部分增量数据写入新的AOF文件中以保证数据完整性。可以看出来AOF rewrite会额外消耗内存和磁盘IO,这也是Redis AOF rewrite的痛点,虽然之前也进行过多次改进但是资源消耗的本质问题一直没有解决。

阿里云的Redis企业版在最初也遇到了这个问题,在内部经过多次迭代开发,实现了Multi-part AOF机制来解决


http://www.ppmy.cn/server/164000.html

相关文章

springboot集成钉钉,发送钉钉日报

目录 1.说明 2.示例 3.总结 1.说明 学习地图 - 钉钉开放平台 在钉钉开放文档中可以查看有关日志相关的api,主要用到以下几个api: ①获取模板详情 ②获取用户发送日志的概要信息 ③获取日志接收人员列表 ④创建日志 发送日志时需要根据模板规定日志…

PyQt5之QtDesigner的若干配置和使用

1.描述 QtDesigner是一个可视化工具,可以通过该工具设计页面 2.简单使用 1.下载PyQt5-tools pip install pyqt5-tools 2.打开designer.exe文件 我采用的是虚拟环境,该文件位于C:\Users\24715\anaconda3\envs\pyqt\Lib\site-packages\qt5_applicatio…

17.2 图形绘制3

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 17.2.4 Pen类 Pen类用于绘制线段和曲线。 Pen构造函数常用重载版本: Pen(Brush):使用指定的Brush初始化P…

AI 浪潮席卷中国年,开启科技新春新纪元

在这博主提前祝大家蛇年快乐呀!!! 随着人工智能(AI)技术的飞速发展,其影响力已经渗透到社会生活的方方面面。在中国传统节日 —— 春节期间,AI 技术也展现出了巨大的潜力,为中国年带…

深入学习华为IPD流程之华为-PDT经理角色认知培训教材

本文介绍了PDT经理的角色认知,包括其在IPD体系中的位置、基本角色定位、关键管理活动、能力模型和评估方法以及培养路径。文章指出PDT经理是重量级产品开发团队的管理者,负责产品的商业成功和跨功能部门合作,通过绩效管理加强团队凝聚力,对商业结果负责。 重点内容: 1. …

Spring Boot 日志:项目的“行车记录仪”

一、什么是Spring Boot日志 (一)日志引入 在正式介绍日志之前,我们先来看看上篇文章中(Spring Boot 配置文件)中的验证码功能的一个代码片段: 这是一段校验用户输入的验证码是否正确的后端代码&#xff0c…

Hive数据仓库中的数据导出到MySQL的数据表不成功

可能的原因: (1)没有下载flume和sqoop (2)权限问题:因为MySQL 数据库拒绝了 root 用户从 hadoop3 主机的连接请求,root 用户没有从 hadoop3 主机进行连接的权限 解决:通过 MySQL 的授权命令来授予权限 mysql> GRANT ALL PR…

【C++】特殊类设计

目录 一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象三、请设计一个类,只能在栈上创建对象四、请设计一个类,不能被继承五、请设计一个类,只能创建一个对象(单例模式)5.1 饿汉模式5.2 懒汉模式 结尾…