《大型网站技术架构》阅读笔记(一)

在这里插入图片描述

这段时间在准备软考高级架构师,已经有过一次失败经历的笔者发现只靠教材的内容并不能很好地应对第二大项的案例分析题,尤其是很久没有接触过大型网站的后端服务架构设计,因此想通过李智慧老师的《大型网站技术架构:核心原理与案例分析》 再好好复习一遍架构设计。刚好近期DeepSeek大火,通过与它交流阅读时遇到的问题和心得,来加深对架构设计的理解与记忆。

这一系列会按书实际的章节来组织,方便查询。

大型网站架构演化

分布式缓存 Redis的使用

在网站架构演化过程中,引入分布式缓存是提升系统性能和可扩展性的关键步骤。Redis 是目前最常用的分布式缓存技术之一,以下是其核心特性和使用方式:


Redis 核心特性

  1. 高性能:基于内存操作,支持每秒数十万级读写。
  2. 数据结构丰富:支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。
  3. 持久化:提供 RDB(快照)和 AOF(日志追加)两种数据持久化方案。
  4. 分布式支持:通过 Redis Cluster 实现分片存储和高可用,或通过 Sentinel 实现主从故障转移。
  5. 原子操作:支持事务和 Lua 脚本,保证复杂操作的原子性。

Redis 的典型使用方式

1. 基础部署
  • 单节点模式(开发/测试):
    # 启动 Redis 服务
    redis-server
    
  • 集群模式(生产环境):
    # 配置 Redis Cluster(至少 3 主 3 从)
    redis-cli --cluster create 192.168.1.1:7000 192.168.1.2:7001 ... --cluster-replicas 1
    
2. 数据操作示例
  • 缓存数据库查询结果(缓解数据库压力):

    import redis
    
    # 连接 Redis
    r = redis.Redis(host='redis-host', port=6379)
    
    def get_user(user_id):
        # 先查缓存
        user_data = r.get(f"user:{
           
           user_id}")
        if not user_data:
            # 缓存未命中,查数据库并写入缓存(设置过期时间)
            user_data = db.query("SELECT * FROM users WHERE id = ?", user_id)
            r.setex(f"user:{
           
           user_id}", 3600, user_data)  # 缓存1小时
        return user_data
    
  • 分布式会话存储(替代单机 Session):

    // Spring Boot 中配置 Redis 存储 Session
    @Configuration
    @EnableRedisHttpSession
    public class SessionConfig {
         
         
        @Bean
        public RedisConnectionFactory redisConnectionFactory() {
         
         
            return new LettuceConnectionFactory("redis-host", 6379
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

递归书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值