04-redis
文章目录
- 1. redis是什么?有什么特点?
- 2. redis五种数据类型及其应用场景
- 3. redis的两种持久化机制
- 4. 如何实现redis的高可用性
- 5. redis在高并发场景中的应用
- 6. 如何优化redis的性能
- 7. redis事务及原子性
- 8. redis sentinel(哨兵)的作用
- 9. redis集群的工作原理
- 10. 如何处理redis的内存溢出
- 11. redis与Memcached的区别
- 12. redis中的慢查询是什么?如何排查?
- 13. redis在分布式系统中的应用
- 14. redis的内存管理机制
- 15. 如何监控redis的性能
1. redis是什么?有什么特点?
redis是一个开源、高性能的键值存储系统,常被称为内存数据库。
特点:
- 高性能:基于内存,支持高吞吐量和低延迟。
- 多数据结构:支持字符串、列表、哈希等多样化的数据结构。
- 持久化:支持RDB和AOF两种持久化方式,保证数据不丢失。
- 高可用性:支持主从复制、哨兵模式和集群模式。
- 丰富功能:包括事务、发布订阅、Lua脚本等特性。
2. redis五种数据类型及其应用场景
- 字符串(String):适合存储间的键值对,如用户信息。
- 列表(List):按顺序存储数据,适用于队列、栈等场景。
- 哈希(Hash):存储键值对的集合,适合存储复杂对象。
- 集合(Set):存储无序且唯一的元素,适用于需要去重的场景。
- 有序集合(SortedSet)按分数排序的集合,适用于排行榜等场景。
3. redis的两种持久化机制
redis的持久化机制主要有两种:
- RDB(快照):周期性地将数据快照写入文件,适合备份和恢复。
- AOF(Append Only File):记录每次写操作,保证数据的持久性,但文件较大。
如何选择:选择时应考虑数据重要性和性能需求:
- 若需高性能且可以接受部分数据丢失,选择RDB。
- 若数据至关重要,需保证持久性,选择AOF。
4. 如何实现redis的高可用性
通过以下几种方式实现:
- 主从复制:主节点写,从节点读,提高读性能并实现故障转移。
- 哨兵模式:自动监控和故障转移,无需手动干预。
- 集群模式:通过分片实现高可用和高性能。
5. redis在高并发场景中的应用
- 分布式锁:采用
setnx
命令实现互斥锁。 - 限流器:使用滑动窗口或计数器控制访问频率。
- 消息队列:通过列表实现高效的生产者消费者模型。
6. 如何优化redis的性能
- 选择合适的数据结构:根据需求选择最合适的结构。
- 配置优化:调整内存、持久化等参数。
- 使用Pipeline:批量操作减少网络开销。
- 分片和集群:水平扩展提高处理能力。
7. redis事务及原子性
redis的事务通过multi
、exec
命令实现原子性操作。在事务执行期间,所有命令被队列处理,确保原子性,但不影响性能。
8. redis sentinel(哨兵)的作用
哨兵用于监控主从节点,自动故障转移,管理主从架构,并发布服务信息。
9. redis集群的工作原理
集群通过分片将数据分不到多个节点,支持自动管理、故障转移和弹性扩展,需手动配置。
10. 如何处理redis的内存溢出
- 淘汰策略:配置过期时间,自动删除不使用的数据。
- 使用持久化:确保数据不会丢失。
- 优化数据结构:减少内存使用。
- 增加内存资源:扩展服务器内存。
11. redis与Memcached的区别
- 数据结构:redis支持多种复杂数据类型,memcached只要支持字符串。
- 持久化:redis支持持久化,memcached不支持。
- 性能:在复杂操作上,redis可能稍逊,但在简单操作上两者性能相近。
12. redis中的慢查询是什么?如何排查?
慢查询指那些执行时间过长的命令,平均响应时间超过阈值。
排查方法:
- 使用
showlog
命令查看日志。 - 分析常用命令,优化复杂结构。
- 使用随机键避免基于范围的查询。
13. redis在分布式系统中的应用
- 缓存系统:提高系统响应速度。
- 消息队列:实现任务分发和处理。
- 分布式锁:控制并发访问。
- 实时统计:处理计数器和排行榜等场景。
- 会话管理:存储用户会话信息。
14. redis的内存管理机制
redis使用jemalloc作为内存分配器,通过内存碎片整理和预分配策略优化内存使用。
15. 如何监控redis的性能
常见监控工具:
- redis cli:查看实时指标。
- prometheus + grafana:图形化监控。
- redis监控工具:如redis-stat、redis-benchmark。
通过监控CPU、内存、网络、命令执行时间和连接数等指标,及时发现瓶颈和异常情况。