认识
一、认识
Redis(Remote Dictionary Server)
是一个开源(遵循 BSD
许可)的高性能 键值数据库 key-value
, 也是一个非关系 NoSQL
数据库。它支持存储的 value
类型相对更多,包括 string
(字符串)、list
(链表)、set
(集合)、zset
(sorted set
--有序集合) 和 hash
(哈希类型)。Redis
的数据都基于内存的,所以很快,每秒可以处理超过 10
万次读写操作,是已知性能最快的Key-Value DB
。Redis
也可以实现数据写入磁盘中,保证了数据的安全不丢失,而且Redis
的操作是原子性的。Redis
可以用作缓存、消息队列、实时数据分析等多种场景。
二、特性
2.1 高性能
Redis
是基于内存运行的数据库,数据的读写速度极快:
-
每秒可以处理数百万次操作。
-
数据操作延迟通常在毫秒级甚至亚毫秒级。
2.2 持久化
Redis
提供多种持久化机制,用于数据的长久保存: Redis
将所有数据保存在内存中,对数据的更新将异步的保存到磁盘上。支持 RDB
(快照) 和 AOF
(增量日志) 两种持久化方式,可以将内存中的数据持久化到磁盘。
-
RDB(Redis Database Backup)
快照:定期生成数据快照。 -
AOF(Append-Only File)
增量日志:将每次写操作记录到日志文件中,支持数据重放。 -
可以结合使用
RDB
和AOF
以提高数据安全性。
2.3 高可用性
通过 主从复制(Replication
)、哨兵(Sentinel
) 和 Redis
集群(Cluster
) 等功能实现高可用和分布式架构。
-
主从复制:通过复制功能(
Replication
),支持数据从主节点同步到从节点,实现数据冗余,读写分离。 -
哨兵模式(
Sentinel
):监控Redis
主节点状态并在故障时自动故障转移。 -
Redis
集群(Cluster
):实现数据分片和高可用,支持大规模分布式架构。
2.4 事务支持
Redis
支持简单的事务操作,保证一组命令的原子性执行。
2.5 发布订阅
Redis
提供发布/订阅模式,允许客户端通过频道发布消息并订阅特定的频道:可用于实时消息推送、聊天系统等场景。
2.6 内存管理
-
LRU(Least Recently Used)
:支持多种淘汰策略(如LRU
、LFU
)。 -
内存分配优化:支持针对内存分配的精细化控制。
-
内存压缩:对数据进行压缩以节省存储空间。
2.7 多种数据结构
Redis
提供了多种数据结构,可以灵活地满足各种场景需求:
-
字符串(
String
):存储简单的键值对,支持字符串操作和整数、自增/自减操作。 -
哈希(
Hash
):适合存储对象,如用户信息。 -
列表(
List
):适用于队列、消息队列等场景。 -
集合(
Set
):用于去重、交集、并集等操作。 -
有序集合(
Sorted Set
):可存储带排序的数据,常用于排行榜。 -
位图(
Bitmap
):处理位操作。 -
HyperLogLog
:用于基数统计。超小内存的唯一值计数。 -
地理空间(
Geo
):支持地理位置存储和查询。
2.8 Lua 脚本支持
-
Redis
可以运行Lua
脚本,提供更强的扩展能力。 -
脚本在服务器端一次性执行,减少网络往返,提高性能。