Redis入门01-简单了解

目录

Redis的发展历史

特性简介

数据类型

内存存储与持久化

功能丰富

简单稳定

应用场景

为啥用Redis



Redis的发展历史

Redis(Remote Dictionary Server)是一个高性能的键值存储系统,通常用作缓存、消息队列和分布式数据存储的解决方案。以下是Redis的发展历史(每一段中都涵盖了标签:轻量级键值存储、持久性和复制、分布式的数据分片和高可用、Sentinel自动故障切换、多线程和延迟队列、懒惰删除和集群自动重平衡):

  1. 2009年:创建和初期开发 Redis是由Salvatore Sanfilippo(也被称为Antirez)创建的。最早的版本于2009年发布。Redis最初是为提供快速、轻量级的键值存储解决方案而设计的。

  2. 2010年:稳定版发布 Redis在2010年发布了稳定版本1.0,此时已经引起了广泛的关注和使用。Redis的持久性、复制和分片功能逐渐加入。

  3. 2012年:Redis Cluster发布 2012年,Redis 2.8版本引入了Redis Cluster,这是一个分布式的Redis解决方案,支持数据分片和高可用性。

  4. 2015年:Redis发布3.0 Redis 3.0引入了Sentinel,这是一个用于监控和自动故障切换的工具,以提供更高的可用性。此版本还引入了新的二进制位操作和地理信息支持。

  5. 2018年:Redis发布5.0 Redis 5.0引入了多线程模型,以提高性能。它还引入了流数据结构、延迟队列以及其他新特性。

  6. 2021年:Redis发布6.0 Redis 6.0增加了更多的新功能,包括懒惰删除、集群自动重平衡等。此版本进一步增强了Redis的性能和功能。

特性简介

Redis是一种基于键值对(Key-value)的NoSql数据库。它以字典结构存储数据。

数据类型

redis中的value⽀持string(字符串)、hash(哈希)、 list(列表)、set(集 合)、zset(有序集合)、Bitmaps(位图)、 HyperLogLog、GEO(地理信息定位)等多种数据类型。

其中最常见的有5种数据类型应用场景:

  • string(字符串):缓存功能、计数、共享Session、限速(高并发场景下控制请求数量)

  • hash(哈希):缓存用户信息、缓存对象

  • list(列表):消息队列、文章列表

  • set(集 合):标签

  • zset(有序集合):用户点赞统计、用户排名

内存存储与持久化

所有数据都存放在内存中,持久化保存的同时读写能力非常出色,同时还能保证遭遇断电或者关机故障,内存数据不会“丢失”。

功能丰富

除了存储数据,还有设置键过期时间、发布订阅、处理事务、流水线、Lua脚本等功能

简单稳定

Redis提供了几十种不同编程语言的客户端库,都很好地封装了Redis的命令。

应用场景

Redis是一个高性能的内存数据库,常用于各种应用场景,特别适合需要快速、低延迟的数据存储和检索。以下是一些常见的Redis应用场景:

  1. 缓存:Redis最常见的用途之一是作为缓存层,用于存储经常访问的数据,以加速读取操作。它可以用于数据库查询结果、Web页面片段、API响应等。

  2. 会话存储:Redis可用于存储用户会话数据,以实现高可用性和快速的身份验证和授权。它可以替代传统的会话存储方式,如基于文件或数据库的存储。

  3. 消息队列:Redis支持发布/订阅模式,可用作轻量级消息队列系统。它用于异步通信、事件驱动架构和作业队列。

  4. 计数器和排行榜:Redis的原子性操作使其适合用于实时计数器和排行榜的构建。您可以轻松地更新计数器和排行榜,而无需担心竞态条件。

  5. 分布式锁:Redis可以用于实现分布式锁,以协调分布式系统中的并发访问,防止资源竞争和数据损坏。

  6. 地理空间数据:Redis支持地理位置数据的存储和查询,使其适合用于构建位置服务和地理信息系统。

  7. 实时分析:Redis支持多种数据结构,包括有序集合(Sorted Sets),可以用于实时数据分析和排名。

  8. 缓存穿透保护:Redis可用于防止缓存穿透,即防止恶意或无效的请求导致频繁的缓存未命中,以减轻后端负载。

  9. 限流和配额管理:Redis可以用于实现API限流和资源配额管理,以控制客户端访问频率。

  10. 分布式会话存储:在分布式系统中,Redis可以用于存储和管理会话数据,以实现跨多个服务的会话共享。

  11. 实时通信:Redis可以用作实时聊天应用程序的消息传递中间件,支持即时通信。

  12. 数据缓存:Redis可以用于缓存数据库查询结果,以减轻数据库负载,提高应用程序性能。

为啥用Redis

Redis速度非常快,单机就可以支撑每秒十几万的并发,是MySQL的几十倍。快的原因:

  • 完全基于内存操作

  • 单线程,避免切换和竟态竞争(5.0加入多线程,实际是针对队列使用多线程进行读写操作)

  • 非阻塞的IO多路复用机制

  • C语言实现,Redis大量优化了基础数据结构,性能极高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/111070.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据统计--图形报表--ApacheEcharts技术 --苍穹外卖day10

Apache Echarts 营业额统计 重点:已完成订单金额要排除其他状态的金额 根据时间选择区间 设计vo用于后端向前端传输数据,dto用于后端接收前端发送的数据 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO…

更新电脑显卡驱动的操作方法有哪些?

更新显卡驱动可以有效的提升我们电脑的性能&#xff0c;可以通过设备管理器、显卡驱动软件等方式进行检查驱动是否需要更新&#xff0c;并修复一些电脑上已知的显卡问题。 然而&#xff0c;对于一些不是很懂电脑技术的人员来说&#xff0c;更新电脑显卡驱动是一件比较复杂和混乱…

Linux服务器部署带Cplex的Java项目

Linux版Cplex安装 Cplex安装包 Cplex 22.1.0 Linux安装包 安装步骤 找到安装包的路径 [roothecs-327697 ~]# cd /www/cplex [roothecs-327697 cplex]# ls cplex_studio2210.linux_x86_64.bin使用chmod 777赋予安装包读、写、执行权限&#xff0c;使用./执行安装 [roothec…

C/S架构和B/S架构

1. C/S架构和B/S架构简介 C/S 架构&#xff08;Client/Server Architecture&#xff09;和 B/S 架构&#xff08;Browser/Server Architecture&#xff09;是两种不同的软件架构模式&#xff0c;它们描述了客户端和服务器之间的关系以及数据交互的方式。 C/S 架构&#xff08…

华为数通方向HCIP-DataCom H12-831题库(多选题:101-120)

第101题 LSR对收到的标签进行保留,且保留方式有多种,那么以下关于LDP标签保留一自由方式的说法 A、保留邻居发送来的所有标签 B、需要更多的内存和标签空间 C、只保留来自下一跳邻居的标签,丢弃所有非下一跳铃邻居发来的标签 D、节省内存和标签空间 E、当IP路由收敛、下一跳…

CVPR 2023 | 主干网络FasterNet 核心解读 代码分析

本文分享来自CVPR 2023的论文&#xff0c;提出了一种快速的主干网络&#xff0c;名为FasterNet。 论文提出了一种新的卷积算子&#xff0c;partial convolution&#xff0c;部分卷积(PConv)&#xff0c;通过减少冗余计算和内存访问来更有效地提取空间特征。 创新在于部分卷积…

Java List Set Map

一、List 1.1 ArrayList 1.2 LinkedList 二、Set 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、Map 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 四、对比 类型底层结构重复null值场景备注查询删除新增ListArrayList动态数组可允许快速随机访问元素0(1)0(n)尾部增加0&a…

Yakit工具篇:WebFuzzer模块之重放和爆破

简介 Yakit的Web Fuzzer模块支持用户自定义HTTP原文发送请求。为了让用户使用简单&#xff0c;符合直觉&#xff0c;只需要关心数据相关信息&#xff0c;Yakit后端(yaklang)做了很多工作。 首先我们先来学习重放请求的操作&#xff0c;在日常工作中可以使用 Web Fuzzer进行请…

Star History 九月开源精选 |开源 GitHub Copilot 替代

虽然大火了近一年&#xff0c;但是截至目前 AI 唯一破圈的场景是帮助写代码&#xff08;谷歌云旗下的 DORA 年度报告也给 AI 泼了盆冷水&#xff09;。不过对于软件开发来说&#xff0c;生成式人工智能绝对已经是新的标配。 本期 Star History 收集了一些开源 GitHub Copilot …

虚拟化的基础知识

目录 虚拟化基础 虚拟化的概念 虚拟化的特征&#xff08;本质&#xff09; 虚拟机的两大派别 VMM讲解 虚拟化中的一些重要概念 VMM的功能以及分类 虚拟化的架构 寄居虚拟化 裸金属虚拟化 操作系统虚拟化 混合虚拟化 虚拟化的三个方向 虚拟化基础 虚拟化的概念 什…

元素内容必须由格式正确的字符数据或标记组成

一、错误介绍 前两天我在使用Mybatis开发&#xff0c;进行数据查询时&#xff0c; 系统出现了红色提示&#xff0c;如下图所示&#xff1a; 由提示可知&#xff0c;系统将我的小于号【<】解析为Tag标签了 &#xff0c;而大于号【>】则没有这个问题。为了验证大于号【>…

文件上传自动化测试方案

一、概述 【测试地址】&#xff1a;https://pan.baidu.com 【测试工具】selenium、requests 【脚本语言】Python 【运行环境】Windows 百度网盘作为文件存储及分享的平台&#xff0c;核心功能大部分是对文件的操作&#xff0c;如果要对它进行自动化测试&#xff0c;优先覆…

一带一路10周年:爱创科技加速中国药企国际化征程

“源自中国&#xff0c;属于世界”。 共建“一带一路”倡议提出10周年来&#xff0c;中国与沿线国家经济深度融合&#xff0c;在共商共建共享的基本原则下&#xff0c;“一带一路”形成了国际合作的平台和机制&#xff0c;跨国经济合作已基本形成。 随着“一带一路”合作日益加…

linux系统的环境变量-搞清环境变量到底是什么

环境变量 引例环境变量常见的环境变量echoexportenvunsetset 通过代码获取环境变量使用第三个参数获取使用全局变量enviorn获取环境变量通过系统调用获取环境变量 环境变量具有全局属性main函数前两个参数的作用 引例 在linux系统中&#xff0c;我们使用ls命令&#xff0c;直接…

重磅消息!优维发布全新产品“应急管理”

近日&#xff0c;蚂蚁集团旗下的在线文档编辑与协同工具语雀平台发生了一次严重的宕机事件&#xff0c;导致用户无法正常使用其各项功能。从故障发生到完全恢复正常&#xff0c;语雀整个宕机时间将近 8 小时&#xff0c;如此长时间的宕机已经达到了 P0 级事故&#xff0c;并在网…

YugaByteDB -- 全新的 “PostgreSQL“ 存储层

文章目录 0 背景1 架构1.1 Master1.2 TServer1.3 Tablet 2 读写链路2.1 DDL2.2 DML2.3 事务 3 KEY 的设计4 Rocksdb 在 YB 中的一些实践总结 0 背景 YugaByteDB 的诞生也是抓住了 spanner 推行的NewSQL 浪潮的尾巴&#xff0c;以 PG 生态为基础 用C实现的 支持 SQL 以及 CQL 语…

asp.net旅游交流管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 旅游交流管理信息系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c# 语言开发 asp.net旅游交流网站1 应用技…

【Linux】jdk Tomcat MySql的安装及Linux后端接口部署

一&#xff0c;jdk安装 1.1 上传安装包到服务器 打开MobaXterm通过Linux地址连接到Linux并登入Linux&#xff0c;再将主机中的配置文件复制到MobaXterm 使用命令查看&#xff1a;ll 1.2 解压对应的安装包 解压jdk 解压命令&#xff1a;tar -xvf jdk 加键盘中Tab键即可…

Elasticsearch:从头开始解释带有 Transformer 的生成式 AI 架构

作者&#xff1a;ARIS PAPADOPOULOS 这篇长篇文章解释了生成式人工智能的工作原理&#xff0c;从基础一直到注重直觉的生成式 transformer 架构。 这篇长篇文章解释了生成式人工智能的工作原理&#xff0c;从基础一直到生成式 transformer 架构。 重点是直觉&#xff0c;而不是…

jeecg-uniapp 杂七杂八数据

uniapp 点击事件 tap: 单击事件 confirm: 回车事件 blur:失去焦点事件 touchstart: 触摸开始事件 touchmove: 触摸移动事件。 touchend: 触摸结束事件。 longpress: 长按事件。 input: 输入框内容变化事件。 change: 表单元素值变化事件。 submit: 表单提交事件。 scroll: 滚动…