1、Redis是什么
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
2、官网
3、Redis特性
3.1、速度快
- 数据存放内存中
- 单节点读 110000次/s,写81000次/s
- 用 C 语言实现,离操作系统更近
- 单线程架构,充分利用 CPU 和内存资源,6.0 开始支持多线程(CPU、IO 读写负荷)
3.2、持久化
Redis 提供了两种持久化方式,RDB(Redis Database)和 AOF(Append Only File)。
- RDB 是将数据库在指定时间点转储到磁盘的快照持久化方式,
- AOF 是将写操作追加到文件末尾的日志持久化方式。
这两种方式可以根据需求进行选择,保证数据在服务器重启后不会丢失。
3.3、丰富的数据结构
Redis 支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)。Redis还支持Geo(地理位置)、HyperLogLog(基数统计)、 Bitmaps(位图)。
3.4、支持事务
Redis 支持事务操作,可以将多个命令打包执行,保证这些命令要么全部执行成功,要么全部失败,保持数据的一致性。虽然 Redis 在单个命令的执行上是原子性的,但是多个命令的组合并不是原子性的,通过事务可以实现一组命令的原子性执行。
3.5、高可用与分布式
Redis 支持主从复制、哨兵和集群等功能,可以构建高可用和分布式的 Redis 架构。主从复制可以实现数据的热备份和读写分离,哨兵可以监控 Redis 的健康状态并进行自动故障转移,集群可以将数据分布在多个节点上,提高性能和扩展性。
3.6、发布订阅
Redis 支持发布订阅模式,可以实现消息的发布和订阅。发布者将消息发布到指定的频道,订阅者可以订阅感兴趣的频道并接收相应的消息,实现了解耦和实时通信。