目录
Redis的发展历史
特性简介
数据类型
内存存储与持久化
功能丰富
简单稳定
应用场景
为啥用Redis
Redis的发展历史
Redis(Remote Dictionary Server)是一个高性能的键值存储系统,通常用作缓存、消息队列和分布式数据存储的解决方案。以下是Redis的发展历史(每一段中都涵盖了标签:轻量级键值存储、持久性和复制、分布式的数据分片和高可用、Sentinel自动故障切换、多线程和延迟队列、懒惰删除和集群自动重平衡):
-
2009年:创建和初期开发 Redis是由Salvatore Sanfilippo(也被称为Antirez)创建的。最早的版本于2009年发布。Redis最初是为提供快速、轻量级的键值存储解决方案而设计的。
-
2010年:稳定版发布 Redis在2010年发布了稳定版本1.0,此时已经引起了广泛的关注和使用。Redis的持久性、复制和分片功能逐渐加入。
-
2012年:Redis Cluster发布 2012年,Redis 2.8版本引入了Redis Cluster,这是一个分布式的Redis解决方案,支持数据分片和高可用性。
-
2015年:Redis发布3.0 Redis 3.0引入了Sentinel,这是一个用于监控和自动故障切换的工具,以提供更高的可用性。此版本还引入了新的二进制位操作和地理信息支持。
-
2018年:Redis发布5.0 Redis 5.0引入了多线程模型,以提高性能。它还引入了流数据结构、延迟队列以及其他新特性。
-
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应用场景:
-
缓存:Redis最常见的用途之一是作为缓存层,用于存储经常访问的数据,以加速读取操作。它可以用于数据库查询结果、Web页面片段、API响应等。
-
会话存储:Redis可用于存储用户会话数据,以实现高可用性和快速的身份验证和授权。它可以替代传统的会话存储方式,如基于文件或数据库的存储。
-
消息队列:Redis支持发布/订阅模式,可用作轻量级消息队列系统。它用于异步通信、事件驱动架构和作业队列。
-
计数器和排行榜:Redis的原子性操作使其适合用于实时计数器和排行榜的构建。您可以轻松地更新计数器和排行榜,而无需担心竞态条件。
-
分布式锁:Redis可以用于实现分布式锁,以协调分布式系统中的并发访问,防止资源竞争和数据损坏。
-
地理空间数据:Redis支持地理位置数据的存储和查询,使其适合用于构建位置服务和地理信息系统。
-
实时分析:Redis支持多种数据结构,包括有序集合(Sorted Sets),可以用于实时数据分析和排名。
-
缓存穿透保护:Redis可用于防止缓存穿透,即防止恶意或无效的请求导致频繁的缓存未命中,以减轻后端负载。
-
限流和配额管理:Redis可以用于实现API限流和资源配额管理,以控制客户端访问频率。
-
分布式会话存储:在分布式系统中,Redis可以用于存储和管理会话数据,以实现跨多个服务的会话共享。
-
实时通信:Redis可以用作实时聊天应用程序的消息传递中间件,支持即时通信。
-
数据缓存:Redis可以用于缓存数据库查询结果,以减轻数据库负载,提高应用程序性能。
为啥用Redis
Redis速度非常快,单机就可以支撑每秒十几万的并发,是MySQL的几十倍。快的原因:
-
完全基于内存操作
-
单线程,避免切换和竟态竞争(5.0加入多线程,实际是针对队列使用多线程进行读写操作)
-
非阻塞的IO多路复用机制
-
C语言实现,Redis大量优化了基础数据结构,性能极高