摘要:
"HTTP各种响应码" 阅读全文
摘要:
阅读历史/搜索历史 更新比较频繁 不在mysql中进行保存, 直接持久化到redis中, 丢失了也不太重要 点赞数/回复数 更新频繁 如果保存到mysql中, 就会大量的并发更新操作, 出现阻塞的情况 取消mysql的冗余字段, 直接在redis中进行持久化 如果保存在redis的数据对象中, 需要 阅读全文
摘要:
读缓存 先读取缓存中的数据, 没有才会读取数据库中的数据 解决数据库读取压力 方式 cache aside 具体读写操作交给应用完成 read through 具体读写操作交给缓存层完成, 即使后期修改存储方案, 业务代码不需要修改, 有利于项目的重构和架构升级 写缓存 先写入缓存, 再写入数据库 阅读全文
摘要:
缓存更新 问题 mysql和redis是两个独立的系统, 在并发环境下, 无法保证更新的一致性 解决办法 设计分布式锁(redis setnx)/使用消息队列串行处理 缺点 并发能力差 更新数据时, 先写入mysql, 再删除缓存 facebook 主要用于 数据对象 (更新少) 数据集合主要还是更 阅读全文
摘要:
缓存淘汰 (重点) LRU least recently use 优先淘汰最近没有使用的数据 LFU least frequently use 优先淘汰使用率最低的数据 采用了定期衰减的机制, 防止旧数据始终无法删除 缺点 需要每条数据维护一个使用计数 还需要定期衰减 面试问题 mysql中有100 阅读全文
摘要:
过期策略 作用 节省空间 实现数据的弱一致性 过期策略 定时过期 效率太低, 每个数据都需要设置定时器进行计数 惰性过期 查询时, 才去检查数据的有效期, 如果过期, 则返回nil, 并删除过期数据 定期过期 每隔100ms, 随机取出一部分数据进行过期校验, 如果过期, 删除数据 redis的选择 阅读全文
摘要:
缓存介绍 作用 减小数据库的访问压力, 提高并发能力 多级缓存 缓存粒度 缓存某个数值 一个键只保存一个值, 性价比较低, 使用率低 场景 验证码 缓存数据对象 数据库记录对应的具体数据 优点 可以多次复用 场景 用户/文章数据 缓存数据集合 数据库查询对应的结果集 场景 文章/关注列表 可以和数据 阅读全文
摘要:
CDN: 内容分发网络 面向数据: 静态资源 image/js/css/html 目的 依靠部署在各地的边缘服务器,通过中心平台的内容分发,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度 小公司 图片/js/css 使用OSS 静态网页 nginx 中 大公司 图片/js/css/静态网 阅读全文
摘要:
开源接口管理平台 YApi: 阅读全文
摘要:
七牛云介绍 项目初期, 数据量小的情况下, 一般会采用第三方的存储方案, 成本比较低, 而且也安全可靠 当数据量达到一定的规模, 第三方存储的费用超过自己搭建文件服务, 才会选择搭建自己文件服务系统 对象存储服务 OSS 使用细节 要求实名认证 创建存储空间 默认生成测试域名 有效期为一个月 要长期 阅读全文
摘要:
刷新token实现流程 特点 访问令牌虽然使用频繁, 但是有效期短, 只有两个小时 刷新令牌有效期长, 但是访问次数少, 可以减少泄露的风险 登录接口 生成令牌 访问控制 对于所有的接口都需要获取认证信息 使用请求钩子实现 对于指定的接口进行访问控制 使用装饰器 请求钩子和装饰器 刷新令牌 接口设计 阅读全文
摘要:
网上大多数介绍JWT的文章实际介绍的都是JWS(JSON Web Signature),也往往导致了人们对于JWT的误解,但是JWT并不等于JWS,JWS只是JWT的一种实现,除了JWS外,JWE(JSON Web Encryption)也是JWT的一种实现。 JWS 头部(Header) 头部用于 阅读全文
摘要:
多个节点共同保存数据 作用 扩展存储空间 提高吞吐量, 提高写的性能 和单机的不同点 不再区分数据库, 只有0号库, 单机默认0 15 不支持事务/管道/多值操作 特点 要求至少 三主三从 要求必须开启 AOF持久化 自动选择集群节点进行存储 默认集成哨兵, 自动故障转移 配置 创建集群 redis 阅读全文
摘要:
作用 监控redis服务器的运行状态, 可以进行自动故障转移(failover), 实现高可用 与 数据库主从 配合使用的机制 特点 独立的进程, 每台redis服务器应该至少配置一个哨兵程序 监控redis主服务器的运行状态 出现故障后可以向管理员/其他程序发出通知 针对故障,可以进行自动转移, 阅读全文
摘要:
数据库主从 作用 数据备份 读写分离 特点 只能一主多从 (mysql可以多主多从) 从数据库不能写入 (mysql可以写) 配置 阅读全文