下载工作台
PaaS 组件实战

文档库与缓存:MongoDB / Redis / Memcached

试读上半部分 · 解锁后可读全文

第 3 章 · 文档库与缓存:MongoDB / Redis / Memcached


3.1 MongoDB 7

适用场景

选用不选用
商品详情、用户画像、日志文档等 Schema 多变 数据强事务跨多行金融核心(优先 MySQL/PG)
嵌套 JSON、数组字段频繁变更复杂多表 JOIN 报表(优先 SQL)
快速迭代、文档模型与代码对象一一对应需要严格外键约束

商店部署参数

idmongodb
镜像mongo:7
端口27017
PVC20 Gi/data/db
资源中型 · 2 核 4Gi

环境变量

          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              value: "admin"
            - name: MONGO_INITDB_ROOT_PASSWORD
              value: "强密码"
            # 可选:启动时建库
            - name: MONGO_INITDB_DATABASE
              value: "appdb"

连接语法

URI(标准)

mongodb://admin:密码@mongodb:27017/appdb?authSource=admin

带副本集(多节点自建后)

mongodb://user:pass@host1:27017,host2:27017/appdb?replicaSet=rs0

mongosh(终端)

mongosh "mongodb://admin:密码@localhost:27017/admin"

常用操作语法

// 切库
use appdb

// 插入
db.products.insertOne({
  sku: "A001",
  name: "示例商品",
  tags: ["hot", "new"],
  price: NumberDecimal("99.90"),
  createdAt: new Date()
})

// 查询
db.products.find({ tags: "hot" }).sort({ createdAt: -1 }).limit(20)

// 索引
db.products.createIndex({ sku: 1 }, { unique: true })
db.products.createIndex({ tags: 1 })

// 聚合
db.orders.aggregate([
  { $match: { status: "paid" } },
  { $group: { _id: "$userId", total: { $sum: "$amount" } } }
])

// 运维
db.serverStatus().connections
db.stats()

业务集成

Spring Boot

spring:
  data:
    mongodb:
      uri: mongodb://admin:密码@mongodb:27017/appdb?authSource=admin

Node.js Mongoose

mongoose.connect('mongodb://admin:密码@mongodb:27017/appdb?authSource=admin')

Python PyMongo

client = MongoClient("mongodb://admin:密码@mongodb:27017/?authSource=admin")
db = client["appdb"]

小紫运维

磁盘涨得快 → 存储 扩容;索引构建占 CPU → 资源 临时升高;认证失败检查 authSource=admin


3.2 Redis 7

适用场景

场景数据结构
用户 Session、登录 TokenString + TTL
商品详情页缓存String / Hash
接口限流、计数器String INCR + EXPIRE
排行榜Sorted Set
消息广播(轻量)Pub/Sub
分布式锁SET key val NX EX 30

不选用:持久化为主库(用 MySQL);超大 value(>512MB);需要可靠队列(用 RabbitMQ/Kafka)。

商店部署参数

idredis
镜像redis:7-alpineAlpine
端口6379
PVC5 Gi/data(开启 AOF/RDB 时建议)
资源标准 · 1 核 2Gi

环境变量与启动配置

方式一:命令行启 requirepass(推荐,确认页 YAML)

          command: ["redis-server"]
          args: ["--requirepass", "Redis强密码", "--appendonly", "yes"]

方式二:挂载 redis.conf(生产)

requirepass Redis强密码
appendonly yes
maxmemory 1gb
maxmemory-policy allkeys-lru

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。