跳到主要内容

认识

2024年04月08日
柏拉文
越努力,越幸运

一、认识


Redis(Remote Dictionary Server) 是一个开源(遵循 BSD 许可)的高性能 键值数据库 key-value, 也是一个非关系 NoSQL 数据库。它支持存储的 value 类型相对更多,包括 string(字符串)list(链表)set(集合)zset(sorted set --有序集合)hash(哈希类型)Redis 的数据都基于内存的,所以很快,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DBRedis也可以实现数据写入磁盘中,保证了数据的安全不丢失,而且Redis的操作是原子性的。Redis 可以用作缓存、消息队列、实时数据分析等多种场景。

二、特性


2.1 高性能

Redis 是基于内存运行的数据库,数据的读写速度极快

  • 每秒可以处理数百万次操作。

  • 数据操作延迟通常在毫秒级甚至亚毫秒级。

2.2 持久化

Redis 提供多种持久化机制,用于数据的长久保存: Redis 将所有数据保存在内存中,对数据的更新将异步的保存到磁盘上。支持 RDB(快照)AOF(增量日志) 两种持久化方式,可以将内存中的数据持久化到磁盘。

  • RDB(Redis Database Backup) 快照:定期生成数据快照。

  • AOF(Append-Only File) 增量日志:将每次写操作记录到日志文件中,支持数据重放。

  • 可以结合使用 RDBAOF 以提高数据安全性。

2.3 高可用性

通过 主从复制(Replication哨兵(SentinelRedis 集群(Cluster 等功能实现高可用和分布式架构。

  • 主从复制:通过复制功能(Replication),支持数据从主节点同步到从节点,实现数据冗余,读写分离。

  • 哨兵模式(Sentinel:监控 Redis 主节点状态并在故障时自动故障转移。

  • Redis 集群(Cluster:实现数据分片和高可用,支持大规模分布式架构。

2.4 事务支持

Redis 支持简单的事务操作,保证一组命令的原子性执行。

2.5 发布订阅

Redis 提供发布/订阅模式,允许客户端通过频道发布消息并订阅特定的频道:可用于实时消息推送、聊天系统等场景。

2.6 内存管理

  • LRU(Least Recently Used):支持多种淘汰策略(如 LRULFU)。

  • 内存分配优化:支持针对内存分配的精细化控制。

  • 内存压缩:对数据进行压缩以节省存储空间。

2.7 多种数据结构

Redis 提供了多种数据结构,可以灵活地满足各种场景需求

  • 字符串(String:存储简单的键值对,支持字符串操作和整数、自增/自减操作。

  • 哈希(Hash:适合存储对象,如用户信息。

  • 列表(List:适用于队列、消息队列等场景。

  • 集合(Set:用于去重、交集、并集等操作。

  • 有序集合(Sorted Set:可存储带排序的数据,常用于排行榜。

  • 位图(Bitmap:处理位操作。

  • HyperLogLog:用于基数统计。超小内存的唯一值计数。

  • 地理空间(Geo:支持地理位置存储和查询。

2.8 Lua 脚本支持

  • Redis 可以运行 Lua 脚本,提供更强的扩展能力。

  • 脚本在服务器端一次性执行,减少网络往返,提高性能。