跳至主要內容

20230815

知识库编程技巧JavaJava大约 2 分钟

1、Redis 的单机、哨兵、集群的区别和选型?

单机模式

在单机模式下,Redis 运行在单个实例上,所有的数据都存储在这一个实例中。优点包括部署简单、操作方便,适用于快速的数据缓存需求。

  • 缺点
    • 单点故障:如果 Redis 实例出现故障,数据可能会丢失。
    • 有限的容量:内存容量受到物理服务器的限制。
    • 不支持高可用性:无法提供自动故障转移或负载均衡。

哨兵模式

哨兵部署在单机部署的基础上,引入了哨兵节点,用于监控主节点的健康状态,并在主节点故障时自动进行切换。

哨兵模式提供了一定程度的高可用性,但不支持数据分片。

  • 自动故障转移:当主节点出现问题时,哨兵节点会选举一个新的主节点,确保系统可用。
  • 有限的扩展性:虽然可以通过增加哨兵节点来提高可用性,但在数据量和性能方面有限制。

集群模式

集群部署适用于需要高性能和高可用性的大规模应用。在集群模式下,数据被分片存储在多个节点上,每个节点负责管理一部分数据。

这种方式可以水平扩展,支持更大的数据集和更高的吞吐量。

哨兵节点的数量建议是奇数,在主节点出现故障时,可以确保达成多数决策,以选择新的主节点。

  • 数据分片:数据被均匀分布在多个节点上,可以充分利用多台服务器的资源。
  • 自动分片和负载均衡:数据分片和负载均衡由集群自动管理,无需手动干预。
  • 高可用性:集群中的节点可以自动进行故障转移,确保系统可用性。
  • 部署复杂:配置和维护集群需要一些额外的工作,包括节点的添加和删除、数据迁移等。

Redis 的数据结构和应用场景

Redis 做数据库缓存,怎么解决双写的问题,是否有脏数据?

MySQL 默认的事务隔离机制

MySQL 执行 UPDAYE 是怎么执行的?

HashMap 是现场不安全的,满足线程安全应该怎么处理?

Executors.newCachedThreadPool()

集成方案提供技术支持,典型的案例?

高可用的部署方案?