Redis 是一个开源的、基于内存的数据结构存储系统,常被用于缓存、消息队列、实时数据处理等场景。以下是一些重要的 Redis 知识点:
数据类型
- 字符串(String):最基本的数据类型,能存储字符串、整数或浮点数。可用于缓存用户信息、配置参数等,如存储用户的昵称、年龄等。
- 哈希(Hash):用于存储键值对集合,类似 Python 中的字典。适合存储对象的多个属性,例如存储用户的详细信息,包括姓名、邮箱、地址等。
- 列表(List):是一个有序的字符串元素集合,支持从两端插入和弹出元素。常用来实现消息队列,或者存储具有顺序性的数据,如文章列表、评论列表。
- 集合(Set):无序的字符串元素集合,且元素具有唯一性。可用于去重,比如统计网站的独立访客,或者实现好友关系的管理。
- 有序集合(Sorted Set):每个元素都关联一个分数(score),根据分数排序。适用于排行榜功能,如游戏中的玩家积分排行榜。
持久化机制
- RDB(Redis Database):通过快照的方式将内存中的数据以二进制文件的形式保存到磁盘。优点是恢复速度快,文件紧凑;缺点是可能会丢失最后一次快照后的部分数据。
- AOF(Append Only File):以日志的形式记录服务器执行的所有写操作命令,在服务器重启时重新执行这些命令来恢复数据。优点是数据完整性高,缺点是文件体积可能较大,恢复速度相对较慢。
主从复制
- 主从复制是指将一台 Redis 服务器的数据复制到其他 Redis 服务器上,其中主服务器负责处理写操作,从服务器负责处理读操作。可以提高系统的读写性能和数据的可靠性,实现读写分离,分担读压力。当主服务器出现故障时,从服务器可以提升为主服务器继续提供服务。
集群
- Redis 集群是多个 Redis 节点组成的分布式系统,用于解决单机 Redis 存储容量有限和处理能力不足的问题。数据会分散存储在多个节点上,每个节点负责一部分数据的存储和读写。具有高可用性、可扩展性和数据冗余等特点,能够自动进行节点故障转移和数据迁移。
应用场景
- 缓存系统:缓存数据库查询结果、热门数据等,减少数据库的访问压力,提高系统响应速度。
- 消息队列:利用 Redis 的列表或发布订阅功能实现简单的消息队列,用于异步任务处理、消息传递等。
- 实时数据统计:利用 Redis 的计数器、集合等数据类型,可以实时统计网站的访问量、在线人数、点赞数等。
- 分布式锁:在分布式系统中,多个节点可能同时访问共享资源,通过 Redis 的原子指令可以实现分布式锁,保证在同一时间只有一个节点能够访问共享资源,避免数据冲突和不一致。