当前位置: 首页 > article >正文

【学习笔记】数据库 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则作为后端的存储层,存储完整的数据并处理复杂的查询。
    • 通过合理的架构设计,可以充分发挥两者的优势,提升系统的整体性能和可扩展性。

http://www.kler.cn/news/366970.html

相关文章:

  • 利用前向勾子获取神经网络中间层的输出并将其进行保存(示例详解)
  • Linux相关概念和易错知识点(16)(Shell原理、进程属性和环境变量表的联系)
  • 传奇996_5——使用补丁制作武器
  • Android中的权限管理机制
  • 51单片机快速入门之 AD(模数) DA(数模) 转换 2024/10/25
  • AIGC:开启智能创造的璀璨新篇章
  • Qt使用QAxObject将Excel表格数据导入到SQLite数据库
  • 用GG修改器修改龙与骑士人物、酒馆属性
  • 华为:高级ACL 特定ip访问特定ip命令
  • 腾讯云:数智教育专场-学习笔记
  • libharu 中文问题
  • 关于iPhone 16 Pro评测视频评论区特征的多维度分析
  • MySQL—索引 |ू・ω・` )
  • 基于websocket简易封装一个全局消息通知组件
  • C++ STL - 容器
  • Jmeter实际应用
  • hive查询语句
  • 【ROS机器人运动控制激光雷达数据获取激光雷达避障篇——C++实现】
  • Linux常用命令1
  • S-Function
  • 洛谷——P8468 [Aya Round 1 C] 文文的构造游戏(01构造问题)
  • 【Kubernets】k8s进阶-深入了解一下Label的用法
  • npm ERR! 503 Service Unavailable one of the uplinks i
  • 云轴科技ZStack信创云平台助力上海科技大学实现信创业务落地
  • 散列表:如何打造一个工业级水平的散列表?
  • 2024.10.9华为留学生笔试题解