初识Redis

Redis入门


Redis之父安特雷兹:

Redis之父Salvatore Sanfilippo,一名意大利程序员,大家更习惯称呼他Antirez

Github:http://github.com/antirezicon-default.png?t=O83Ahttp://github.com/antirez

个人博客(Antirez):List of posts - icon-default.png?t=O83Ahttp://antirez.com/latest/0

Redis官网(英文网):http://redis.ioicon-default.png?t=O83Ahttp://redis.io/

Redis官网(英中文网):http://www.redis.com.cnicon-default.png?t=O83Ahttp://www.redis.com.cn/

Redis文档:redis中文文档icon-default.png?t=O83Ahttp://www.redis.com.cn/documentation.html

简介:[Redis](Remote Dictionary Server  远程字典服务器)是一个开源的、使用[ANSI C]语言编写的[Key-Value]数据库,支持网络、可基于内存亦可持久化,并提供多种语言的API‌‌。Redis是一个高性能的内存存储系统,主要用于缓存,但也支持作为数据库、消息队列和分布式锁等功能‌

初识Redis_第1张图片

Redis与Mysql数据库的关系

分布式缓存,挡在mysql之前的带刀侍卫

①Redsi是Key-value数据库(NoSQL一种),mysql是关系数据库

②Redis数据库操作主要在内存,而mysql主要存储在磁盘

③Redis在某些场景中要明显优于mysql,比如说计数器,排行榜等方面

④Redis通常用于一些特定的场景,需要与mysql配合使用

Redis与mysql并不是相互替换和竞争关系,而是共用和配合使用

初识Redis_第2张图片

  1. 数据模型与用途

    • MySQL:是一种关系型数据库管理系统(RDBMS),基于SQL语言进行数据的增删改查操作。它适合存储结构化数据,如用户信息、订单详情等,并提供了事务支持、ACID属性(原子性、一致性、隔离性、持久性)以及复杂查询的能力。
    • Redis:是一个高性能的键值对数据库,支持多种数据结构(如字符串、列表、集合、有序集合、哈希表等)。它通常用于缓存、会话存储、消息队列、排行榜等场景,以提供快速的数据访问和低延迟的响应。
  2. 性能与扩展性

    • MySQL:在处理大量数据和复杂查询时表现出色,但性能可能受到磁盘I/O和锁机制的影响。MySQL支持水平扩展(通过分片或复制)和垂直扩展(通过升级硬件)
    • Redis:以其极快的读写速度和低延迟著称,适合处理高并发场景。Redis的数据存储在内存中,因此访问速度非常快。它支持主从复制和集群模式来实现高可用性和扩展性。
  3. 持久化机制

    • MySQL:提供了多种持久化机制(如InnoDB存储引擎的崩溃恢复、日志文件等),确保数据在系统故障后能够恢复。
    • Redis:虽然数据主要存储在内存中,但也提供了两种持久化机制:RDB(快照)和AOF(追加文件),以便在系统重启后恢复数据。
  4. 事务支持

    • MySQL:提供了完整的事务支持,确保数据的一致性和完整性
    • Redis:虽然Redis从2.2版本开始支持简单的事务,但它的事务模型与MySQL等关系型数据库的事务模型有所不同。Redis的事务主要用于保证一系列操作的原子性,但并不支持回滚操作。
  5. 使用场景

    • MySQL:适用于需要复杂查询、事务支持、数据持久化和完整性约束的场景,如企业应用、电子商务平台等。
    • Redis:适用于需要高速读写、低延迟响应、缓存和会话存储的场景,如社交媒体、实时分析、游戏服务器等。
  6. 集成与协作

    • 在实际应用中,Redis和MySQL经常一起使用,形成所谓的“缓存+数据库”架构。在这种架构中,Redis作为缓存层,存储频繁访问的数据,以减少对MySQL数据库的访问压力,提高系统性能当Redis中的数据过期或被删除时,可以从MySQL中重新加载。

Redis的基本特性

  1. 高性能‌:Redis的数据存储在内存中,访问速度远快于硬盘存储,每秒可以处理超过10万次读写操作‌。

  2. 数据类型丰富:Redis支持多种数据结构,包括字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、哈希表(hashes)和位图(bitmaps)等。这些数据结构使得Redis能够灵活地处理各种类型的数据。

  3. 持久化机制:尽管Redis是基于内存的,但它也提供了两种持久化机制来确保数据的可靠性:RDB(Redis Database)快照和AOF(Append Only File)日志。RDB定期将内存中的数据快照保存到磁盘上,而AOF则记录每个写操作命令,以便在系统重启时重新执行这些命令来恢复数据。

  4. 单线程模型:Redis内部使用单线程模型来处理命令请求。这避免了多线程环境下的竞争条件和锁开销,使得Redis在单个CPU核心上能够高效地处理大量并发请求。当然,随着Redis的发展,它也支持了I/O多路复用技术,以利用多核CPU的优势。

  5. 事务支持:Redis支持简单的事务,通过MULTIEXECDISCARD等命令可以将多个操作打包成一个事务来执行。事务中的所有命令要么全部成功,要么全部失败,从而保证了数据的一致性。但需要注意的是,Redis的事务不支持回滚操作

  6. 主从复制‌:支持主从同步,可以进行读写分离‌。

Redis的应用场景

  1. 缓存‌:Redis常用于缓存用户请求的数据,减少对数据库的访问,提高应用性能‌。

  2. 会话管理‌:用于存储用户的会话信息,实现用户的快速登录和状态管理‌。

  3. 消息队列‌:作为消息中间件,实现生产者消费者模型‌。

  4. 分布式锁‌:在分布式系统中实现线程安全和并发控制‌

  5. 排行榜:Redis的有序集合数据结构非常适合用于实现排行榜功能。通过为每个用户或项目维护一个分数,Redis可以快速地查询、更新和展示排名信息。这种特性在游戏、电商等需要展示用户排名或商品销量的场景中非常有用。

  6. 计数器:Redis的原子操作特性使其非常适合用于实现计数器功能。无论是网站访问量、用户点赞数还是商品库存量,Redis都能提供高性能的读写操作,确保计数的准确性和实时性。

  7. 地理位置服务:Redis的Geo数据结构提供了对地理位置信息的支持。通过存储经纬度坐标和相关的地理位置信息,Redis可以实现基于位置的查询、距离计算和范围搜索等功能。这种特性在LBS(基于位置的服务)应用中非常有用。

Redis 架构

Redis 主要由有两个程序组成:

  • Redis 客户端 redis-cli
  • Redis 服务器 redis-server

客户端、服务器可以位于同一台计算机或两台不同的计算机中。

Redis知识体系浏览

①Redis数据类型

  • 基本数据类型字符串(String),列表(List),哈希(Hash),集合(Set),有序集合(Sorted Set/ZSet

  • 特殊数据类型Geo,HyperLogLo等...

②Redis持久化机制

  • RDB(快照):定期将内存中的数据生成快照保存到磁盘上。

  • AOF(追加文件):记录每条写操作命令,以追加的方式写入文件。

③Redis事务

  • 开启事务后,要么全部成功,要么全部失败

④Redis高可用策略

  • 主从复制:实现数据副本的一致性,支持读写分离。

  • 哨兵模式:自动监控主从节点的运行状态,实现主从切换和故障转移。

  • 集群模式:通过分片技术实现数据的分布式存储,提高系统的扩展性和可用性。

初识Redis_第3张图片

总结

初识Redis_第4张图片

为什么Redis的端口号是6379?

Redis端口号6379的来源与意大利女演员Alessia Merz有关。‌Redis的开发者Antirez及其朋友曾将Alessia Merz视为愚蠢的代名词,因此他们用Merz在手机键盘上对应的数字6379作为Redis的默认端口号。‌

你可能感兴趣的:(redis,java)