返回 随笔记录
随笔记录

九、缓存与NoSQL

博主
大约 7 分钟

九、缓存与NoSQL

范围:Redis、MongoDB、Elasticsearch、列式存储、图数据库、时序数据库 知识点数量:212项 返回总目录


9.1 Redis

9.1.1 数据结构

  • 885. String - 掌握字符串操作,理解SDS简单动态字符串
  • 886. List - 掌握列表操作和阻塞操作,理解QuickList
  • 887. Hash - 掌握哈希操作,理解ZipList和HashTable
  • 888. Set - 掌握集合操作,理解IntSet和HashTable
  • 889. ZSet - 掌握有序集合和排行榜,理解SkipList跳表
  • 890. Bitmap - 掌握位图操作,理解用户签到
  • 891. HyperLogLog - 掌握基数统计,理解概率数据结构
  • 892. Geo - 掌握地理位置,理解GeoHash编码
  • 893. Stream - 掌握消息流,理解XADD/XREAD
  • 894. BitField - 掌握位域操作

9.1.2 核心功能

  • 895. 过期策略 - 掌握定期删除+惰性删除
  • 896. 内存淘汰 - 掌握LRU、LFU、TTL、Random、noeviction策略
  • 897. 持久化(RDB) - 掌握快照,理解BGSAVE和fork
  • 898. 持久化(AOF) - 掌握追加日志,理解always/everysec/no
  • 899. AOF重写 - 掌握BGREWRITEAOF,理解子进程重写
  • 900. 管道 - 掌握Pipeline,理解批量操作优化
  • 901. 发布订阅 - 掌握Pub/Sub,理解扇出模式
  • 902. 事务 - 掌握MULTI/EXEC,理解不保证原子性
  • 903. Lua脚本 - 掌握原子操作,理解EVAL命令
  • 904. 慢查询日志 - 掌握slowlog,理解性能分析
  • 905. 大Key问题 - 掌握大Key发现和拆分
  • 906. 热Key问题 - 掌握热Key发现和本地缓存

9.1.3 高可用

  • 907. 主从复制 - 掌握全量和增量同步,理解复制积压缓冲区
  • 908. 哨兵模式 - 掌握监控和故障转移,理解主观/客观下线
  • 909. 集群模式 - 掌握16384槽,理解HashSlot分配
  • 910. 数据迁移 - 掌握reshard,理解在线迁移
  • 911. 脑裂问题 - 掌握min-replicas-to-write
  • 912. Redis 7.0 - 掌握多线程、函数、ACL
  • 913. 集群通信 - 掌握Gossip协议
  • 914. 故障转移 - 掌握Sentinel选举

9.1.4 应用场景

  • 915. 缓存穿透 - 掌握布隆过滤器+空值缓存
  • 916. 缓存击穿 - 掌握互斥锁+逻辑过期
  • 917. 缓存雪崩 - 掌握随机过期时间+多级缓存
  • 918. 分布式锁 - 掌握SET NX EX和Redlock
  • 919. 限流 - 掌握计数器、滑动窗口、令牌桶、漏斗
  • 920. 排行榜 - 掌握ZREVRANGE
  • 921. 会话共享 - 掌握Session存储
  • 922. 布隆过滤器 - 掌握RedisBloom
  • 923. 延时队列 - 掌握ZSET实现
  • 924. 计数器 - 掌握INCR原子操作
  • 925. 缓存一致性 - 掌握Cache-Aside/Read-Through/Write-Through/Write-Behind

9.2 MongoDB

9.2.1 基础操作

  • 926. 文档模型 - 掌握BSON格式,理解文档限制16MB
  • 927. CRUD操作 - 掌握增删改查,理解批量操作
  • 928. 聚合管道 - 掌握$match/$group/$sort/$project/$unwind
  • 929. 索引 - 掌握单字段、复合、多键、文本索引
  • 930. 文本搜索 - 掌握$text和$score
  • 931. 地理空间 - 掌握2d/2dsphere索引
  • 932. 查询优化 - 掌握explain分析
  • 933. 更新操作符 - 掌握$set/$push/$inc/$pull

9.2.2 高级特性

  • 934. 事务 - 掌握多文档事务,理解4.0+支持
  • 935. Change Stream - 掌握数据变更监听
  • 936. GridFS - 掌握大文件存储,理解分块机制
  • 937. 分片 - 掌握Chunk和Balancer,理解mongos
  • 938. 副本集 - 掌握高可用,理解选举机制
  • 939. 数据建模 - 掌握嵌入和引用,理解范式vs反范式
  • 940. TTL索引 - 掌握自动过期
  • 941. 视图 - 掌握只读聚合视图
  • 942. WiredTiger引擎 - 掌握存储引擎,理解文档级锁

9.3 Elasticsearch

9.3.1 核心概念

  • 943. 倒排索引 - 掌握Term Dictionary和Posting List
  • 944. 索引管理 - 掌握Index设置,理解Shard/Replica
  • 945. Mapping - 掌握字段类型,理解dynamic mapping
  • 946. 分词器 - 掌握IK分词,理解Analyzer流程
  • 947. 查询DSL - 掌握Query Context和评分
  • 948. 过滤 - 掌握Filter Context,理解缓存
  • 949. 聚合 - 掌握Bucket和Metric聚合
  • 950. 相关性评分 - 掌握TF-IDF和BM25
  • 951. Near Real-Time - 掌握NRT搜索,理解refresh_interval

9.3.2 集群管理

  • 952. 节点角色 - 掌握Master/Data/Coordinating/Ingest
  • 953. 分片分配 - 掌握Primary和Replica,理解分配策略
  • 954. 集群健康 - 掌握Green/Yellow/Red
  • 955. 扩容缩容 - 掌握节点管理
  • 956. 脑裂防护 - 掌握discovery.seed_hosts和minimum_master_nodes
  • 957. 备份恢复 - 掌握Snapshot和Repository
  • 958. 索引生命周期 - 掌握ILM策略
  • 959. 集群监控 - 掌握_cat API

9.3.3 应用开发

  • 960. Spring Data ES - 掌握集成,理解ElasticsearchRestTemplate
  • 961. 全文搜索 - 掌握match和multi_match
  • 962. 高亮显示 - 掌握highlight
  • 963. 拼音搜索 - 掌握pinyin插件
  • 964. 近似搜索 - 掌握fuzzy和wildcard
  • 965. 性能优化 - 掌握bulk和routing
  • 966. Logstash - 掌握数据同步,理解Filter插件
  • 967. Kibana - 掌握可视化,理解Dashboard
  • 968. 同义词 - 掌握synonym过滤器
  • 969. 跨集群搜索 - 掌握CCS

9.4 其他NoSQL

9.4.1 列式存储

  • 970. Cassandra - 掌握宽列存储,理解LSM-Tree
  • 971. HBase - 掌握分布式列存储,理解RegionServer
  • 972. RowKey设计 - 掌握预分区,理解热点规避
  • 973. 布隆过滤器 - 掌握过滤优化
  • 974. 协处理器 - 掌握服务端计算
  • 975. Compaction - 掌握合并策略
  • 976. 数据模型 - 掌握Column Family设计

9.4.2 图数据库

  • 977. Neo4j - 掌握属性图模型,理解节点/关系/属性
  • 978. Cypher语言 - 掌握图查询语法
  • 979. 图算法 - 掌握最短路径、PageRank、社区发现
  • 980. 社交网络 - 掌握好友推荐
  • 981. 知识图谱 - 掌握实体关系
  • 982. 图遍历 - 掌握BFS/DFS优化

9.4.3 时序数据库

  • 983. InfluxDB - 掌握时序数据模型,理解Measurement/Tag/Field
  • 984. Prometheus - 掌握Pull模式,理解PushGateway
  • 985. TDengine - 掌握国产时序库,理解超级表
  • 986. 数据压缩 - 掌握Gorilla算法
  • 987. 降采样 - 掌握Continuous Query
  • 988. 数据保留 - 掌握Retention Policy

9.5 缓存架构设计

9.5.1 多级缓存

  • 989. 本地缓存 - 掌握Caffeine/Guava,理解LRU/LFU
  • 990. 分布式缓存 - 掌握Redis集群
  • 991. CDN缓存 - 掌握边缘缓存
  • 992. 浏览器缓存 - 掌握HTTP缓存头部
  • 993. 缓存同步 - 掌握缓存一致性协议
  • 994. 缓存预热 - 掌握启动加载策略
  • 995. 缓存淘汰 - 掌握全局淘汰策略

9.5.2 缓存最佳实践

  • 996. 缓存Key设计 - 掌握命名规范,理解前缀隔离
  • 997. 缓存粒度 - 掌握粗粒度vs细粒度
  • 998. 缓存监控 - 掌握命中率、延迟、内存使用
  • 999. 缓存安全 - 掌握认证、加密、ACL
  • 1000. 缓存降级 - 掌握缓存不可用时的降级策略
  • 1001. 缓存双写 - 掌握数据库和缓存一致性

进度统计

  • 领域:缓存与NoSQL
  • 知识点总数:212项
  • 已完成:0项
  • 待完成:212项

实战项目建议

  • 项目1:Redis分布式锁 - 实现可重入分布式锁,包含看门狗续期、Redlock算法
  • 项目2:多级缓存系统 - 实现Caffeine+Redis两级缓存,包含一致性维护
  • 项目3:搜索引擎搭建 - 使用Elasticsearch搭建商品搜索,包含分词、高亮、聚合

常见面试问题

  • Redis为什么快?单线程模型如何处理高并发?
  • Redis持久化RDB和AOF的区别?如何选择合适的持久化方式?
  • 缓存穿透/击穿/雪崩的区别和解决方案?
  • Redis集群模式如何实现数据分布?16384个槽是怎么来的?
  • Elasticsearch倒排索引的原理?如何实现全文搜索?

推荐学习资源

  • 书籍:《Redis设计与实现》《Elasticsearch权威指南》《MongoDB权威指南》
  • 视频:极客时间《Redis核心技术与实战》《Elasticsearch核心技术与实战》
  • 官方:Redis官方文档、Elasticsearch官方文档

返回总目录

知识点测试

读完文章了?来测试一下你对知识点的掌握程度吧!

评论区

使用 GitHub 账号登录后即可发表评论,支持 Markdown 格式。

如果评论系统无法加载,请确保:

  • 您的网络可以访问 GitHub
  • giscus GitHub App 已安装到仓库
  • 仓库已启用 Discussions 功能