简介
# 简介
# 引入
# 现象&问题
奥运会门票预售系统开放第一天,上午9点正式开始售票到中午12点,3个小时内,票务网站被浏览次数达到2000万次。12306、淘宝、京东在当时都会发生崩溃的现象。总结来说就是:
- 海量用户
- 高并发
# 原因
罪魁祸首就是关系型数据库
- 性能瓶颈:磁盘IO性能低下
- 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群
# 解决思路
- 降低磁盘IO次数,越低越好:使用内存存储
- 去除数据间关系,越简单越好:不存储关系,仅存储数据
总结就是引入 NoSQL
# NoSQL
NoSQL:即 Not-Only SQL(泛指非关系型的数据库),作为关系型数据库的补充。
作用:应对基于海量用户和海量数据前提下的数据处理问题
特征:
- 可扩容,可伸缩
- 大数据量下高性能
- 灵活的数据模型
- 高可用
常见 Nosql 数据库:
- Redis
- memcache
- HBase
- MongoDB
# Redis 所处电商系统位置

# 简介—6379
# 概念
Redis(Remote Dictionary Server)是用 C 语言开发的一个开源的高性能键值对(key-value)数据库
# 特征
数据间没有必然的关联关系
内部采用单线程机制进行工作(6.0后支持多线程)
高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s
多数据类型支持
- 字符串类型 string
- 列表类型 list
- 散列类型 hash
- 集合类型 set
- 有序集合类型 sorted_set
持久化支持。可以进行数据灾难恢复
# 应用场景 🔥
- 缓存,为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类、短链接等高访问量信息等
- 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
- 时效性信息控制,如验证码控制、投票控制等
- 分布式数据共享,如分布式集群架构中的 session 分离
- 数据过期处理(可以精确到毫秒)
- 任务队列,如秒杀、抢购、12306购票排队等
- 消息队列
- 分布式锁(不推荐,推荐使用 zookepper)
# 数据存储类型—数据结构
分析业务数据的特殊性,是什么数据会存储在 Redis 中呢?据此来设计
# 作为缓存使用
原始业务功能设计
- 秒杀
- 618活动
- 双11活动
- 排队购票
运营平台监控到的突发高频访问数据
- 突发时政要闻,被强势关注围观
高频、复杂的统计数据
- 在线人数
- 投票排行榜
# 附加功能
系统功能优化或升级
- 单服务器升级集群
- Session 管理
- Token 管理
# 数据结构总览
- redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储
- 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串
常见类型如下:
- 字符串类型 string
- 哈希类型 hash : map 格式
- 列表类型 list : linkedlist 格式。支持重复元素
- 集合类型 set : 不允许重复元素
- 有序集合类型 sortedset:不允许重复元素,且元素有顺序
- ...
上次更新: 2021/06/21, 15:45:42