【学习笔记】数据库 Redis(键值对存储)

1.什么是Redis?

Redis(Remote Dictionary Server)是一个开源的、高性能的键值对(Key-Value)存储系统,它也可以作为数据库、缓存和消息代理。

  1. 类型丰富

    • Redis支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。这些数据结构使得Redis能够用于各种场景,如计数器、队列、排行榜等。
    • 除了基本的数据类型,Redis还支持位图(bitmaps)和HyperLogLogs等高级数据结构,用于实现更复杂的功能,如频率统计、实时分析等。
  2. 高性能

    • Redis将所有数据存储在内存中,这使得读写速度非常快,每秒可以处理超过10万次读写操作。
    • Redis采用了单线程模型和I/O多路复用技术,减少了线程切换和锁开销,提高了性能。
    • Redis提供了多种优化机制,如管道(pipelining)和脚本化(scripting),进一步提高了命令的执行效率。
  3. 持久化

    • Redis支持两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。RDB是一种快照持久化方法,将内存中的数据以二进制文件的形式保存到磁盘;AOF则记录了所有的写操作命令,以文本文件的形式存储。
    • RDB适合于大规模的数据恢复,而AOF则提供了更高级的持久化机制,如自动修复和合并操作。
  4. 支持事务

    • Redis的事务是一组命令的集合,它是原子性的,即要么所有命令都执行,要么都不执行。这保证了数据的一致性。
    • Redis通过MULTI、EXEC、DISCARD和WATCH等命令来实现事务管理。它们允许用户开始一个新的事务、执行事务、丢弃事务或监视一个或多个键的值。
  5. 发布订阅功能

    • Redis提供了一个简单的发布订阅(pub/sub)系统,允许客户端发送和接收消息。
    • 发布者可以使用PUBLISH命令向特定的频道发送消息,而订阅者可以使用SUBSCRIBE命令监听一个或多个频道,并使用PUBLISH命令接收消息。
    • 这可以用于实现实时聊天、实时通知等功能。
  6. 主从复制

    • Redis支持主从复制功能,可以实现数据的备份和负载均衡。
    • 一个Redis服务器可以有多个从服务器,它们可以接受主服务器的数据更新并同步到本地。
    • 主从复制可以用于扩展读取能力,同时也提供了一种简单的故障转移机制。
  7. 集群

    • Redis Cluster是Redis的分布式解决方案,通过分片(sharding)技术将数据分布在多个节点上。
    • Redis Cluster提供了自动分片、高可用性和高可扩展性等功能。它还支持在多个节点之间自动平衡数据和负载。
    • 这可以用于构建大规模的Redis应用,提供更高的性能和可靠性。
  8. 应用场景广泛

    • 由于其丰富的数据类型和高性能特点,Redis被广泛应用于各种场景,如缓存、会话管理、任务队列、实时分析、游戏数据存储等。
    • 许多大型互联网公司和金融公司都使用Redis来提高应用的性能和响应速度。

2.Redis和Mysql的区别和联系;

Redis和MySQL是两种不同类型的数据存储系统,它们在功能、性能和应用场景上有明显的区别。

  1. 数据存储方式

    • MySQL是一个关系型数据库管理系统,它将数据存储在磁盘上的文件中,以表格的形式组织数据,每个表格由行和列组成。
    • Redis则是一个基于内存的键值对存储系统,它将数据直接存储在内存中,并提供多种数据结构的存储,如字符串、哈希、列表、集合和有序集合等。
  2. 数据处理方式

    • MySQL使用结构化查询语言(SQL)进行数据的查询、更新、插入和删除操作,支持复杂的查询和事务处理。
    • Redis则通过命令来执行数据的操作,虽然它也支持某种形式的查询语言(如Redis Query Language,简称RQL),但其功能相对简单,主要面向数据的基本操作。
  3. 性能特点

    • 由于Redis基于内存运行,其读写速度非常快,可以达到每秒数十万次的读写操作,适合对性能要求极高的场景。
    • MySQL的性能虽然也很高,但由于数据存储在磁盘上,其读写速度受到磁盘I/O性能的限制,相对于Redis来说会慢一些。
  4. 持久化机制

    • Redis虽然基于内存,但提供了RDB(快照)和AOF(追加日志文件)两种持久化机制,可以将内存中的数据定期保存到磁盘上,以保证数据的持久性。
    • MySQL则通过将数据直接存储在磁盘上来保证数据的持久性,同时提供了事务支持和自动恢复机制,确保数据的完整性和一致性。
  5. 应用场景

    • Redis常用于缓存、会话管理、实时分析、消息队列等需要快速读写和实时处理的场景。
    • MySQL则适用于需要复杂查询、事务处理、数据分析等场景,广泛用作Web应用和互联网服务的后端数据库。
  6. 关系

    • 在实际的应用中,Redis和MySQL可以相互补充,结合使用。例如,可以使用Redis作为前端的缓存层,处理高频次的读写请求,而MySQL则作为后端的存储层,存储完整的数据并处理复杂的查询。
    • 通过合理的架构设计,可以充分发挥两者的优势,提升系统的整体性能和可扩展性。
相关推荐
xlsw_3 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
岁月变迁呀3 小时前
Redis梳理
数据库·redis·缓存
神仙别闹4 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭4 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
暮湫4 小时前
泛型(2)
java
超爱吃士力架4 小时前
邀请逻辑
java·linux·后端
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石5 小时前
12/21java基础
java
李小白665 小时前
Spring MVC(上)
java·spring·mvc
sanguine__5 小时前
Web APIs学习 (操作DOM BOM)
学习