本文最后更新于2024-10-07,距今已有 614 天,若文章内容或图片链接失效,请留言反馈。
1_【Redis】Redis 简单介绍
「前言」文章的大致内容是对 Redis 进行介绍。
Redis 官网:www.redis.io
Github:https://github.com/antirez/redis
Redis 中文网:www.redis.net.cn
一、Redis 简介
Redis是一种 基于键值对(key-value) 的 NoSQL 数据库,与很多键值对数据库不同的是,Redis中的值可以是由 string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此 Redis 可以满足很多的应用场景,而且因为 Redis 会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis 还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会丢失。除了上述功能以外,Redis 还提供了键过期、发布订阅、事务、流水线、Lua 脚本等附加功能。
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
Redis 是用来存储数据的,并且是在物理内存中存储数据。
- Redis 是在分布式系统中才可以发挥威力的。
- 如果只是单机程序,直接在物理内存中存储数据即可,直接使用物理内存存储数据比使用Redis 存储数据是更优的选择。
- 如果是分布式系统,由于系统的不同服务通常部署在独立的服务器上,这些服务进程之间天然存在隔离性,直接共享内存数据变得不可行。但是进程之间是可以进程间通信(IPC),比如使用 socket 套接字进行网络通信。而 Redis 就是基于网络的,将内存中的数据以结构化的形式(如字符串、列表、集合等)暴露给网络上的其他服务,这些服务可以使用这些共享的数据。
- 通过这种方式,Redis 充当了一个中央数据仓库的角色,使得分布在不同服务器上的服务能够访问和共享同一份数据,从而实现了数据的集中管理和高效共享。
- 此外,除了 Redis 之外,还有其他多种第三方工具和服务可用于分布式系统中的数据共享,如消息队列(如 RabbitMQ、Kafka)、分布式数据库(如 Cassandra、MongoDB)等。
Redis 可作为数据库使用:
- MySQL 最大的问题是访问速度比较慢,很多互联网产品对性能要求很苛刻。
- Redis 可作为数据库使用,Redis 的特点就是访问速度快,并且比 MySQL 快很多。因为 Redis 存储的数据是在内存中,MySQL 存储的数据是在硬盘上的。
谷歌公司给出的各层级硬件执行速度:

对比:
- Main memory reference:25ns -- 访问物理内存的速度。
- Disk seek:10 000 000ns -- 访问磁盘的速度。
- 两者之间的速度大概差了 $10^6$ 倍。
但是 Redis 与 MySQL 相比最大的劣势是:Redis 的存储空间是有限的(物理内存)。
如果互联网产品对性能没有太高的要求,MySQL 还是首选的。
Redis 可作为缓存使用
- MySQL 访问速度慢,Redis 内存空间有限。
- 但是两者可以结合使用,使用 MySQL 作为数据库,使用 Redis 作为 MySQL 的 cache。
- 即热点数据使用 Redis 存储,不常用的数据使用 MySQL 存储,强强联合,弥补了两个最大的缺点。
- 二八原则:20% 的热点数据,能满足 80% 的访问需求。
- 虽然两者可以结合使用,但是结合之后使得系统的复杂程度大大提高了,数据发生修改,还要涉及到 Redis 与 MySQL 之间数据同步问题。
Redis 可用作消息中间件(消息队列)
- Redis 最初的初心是:就是作为一个消息中间件(消息队列)。
- 消息队列:分布式系统下的生产者消费者模型。
- 但是后面发现使用 Redis 作为数据库或者缓存使用更香,反而使用 Redis 作为消息中间件的几乎很少。后面市场上出现了更专业的消息中间件之后,使用 Redis 作为消息中间件就更少了。
- 所以一般都不怎么使用 Redis 作为消息中间件,但是 Redis 还是提供了作为消息中间件的功能。
--------------- END ---------------
「 作者 」 枫叶先生
「 更新 」 2024.7.15
「 声明 」 余之才疏学浅,故所撰文疏漏难免,
或有谬误或不准确之处,敬请读者批评指正。
1_【Redis】Redis 简单介绍
http://114.132.213.38:6250/archives/a3214808-cf0a-4b1b-9d71-9faa6fd7f5a4
评论