conanan's blog conanan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub

Evan Xu

前端界的小学生
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub
  • 基础

    • 简介
      • 引入
        • 现象&问题
        • 原因
        • 解决思路
        • NoSQL
        • Redis 所处电商系统位置
      • 简介—6379
        • 概念
        • 特征
        • 应用场景 🔥
      • 数据存储类型—数据结构
        • 作为缓存使用
        • 附加功能
        • 数据结构总览
    • string
    • hash
    • list—顺序双向链表
    • set—大量数据
    • sorted_set—排序的大量数据
    • bitmap—位图
    • HyperLogLog
    • GEO—地理坐标
    • stream
    • 通用指令
    • Jedis
  • 高级

  • 集群

  • Redis面试
  • Redis
  • 基础
conanan
2021-06-21

简介

# 简介

# 引入

# 现象&问题

奥运会门票预售系统开放第一天,上午9点正式开始售票到中午12点,3个小时内,票务网站被浏览次数达到2000万次。12306、淘宝、京东在当时都会发生崩溃的现象。总结来说就是:

  • 海量用户
  • 高并发

# 原因

罪魁祸首就是关系型数据库

  • 性能瓶颈:磁盘IO性能低下
  • 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群

# 解决思路

  • 降低磁盘IO次数,越低越好:使用内存存储
  • 去除数据间关系,越简单越好:不存储关系,仅存储数据

总结就是引入 NoSQL

# NoSQL

NoSQL:即 Not-Only SQL(泛指非关系型的数据库),作为关系型数据库的补充。

作用:应对基于海量用户和海量数据前提下的数据处理问题

特征:

  • 可扩容,可伸缩
  • 大数据量下高性能
  • 灵活的数据模型
  • 高可用

常见 Nosql 数据库:

  • Redis
  • memcache
  • HBase
  • MongoDB

# Redis 所处电商系统位置

image-20210224222012508

# 简介—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 部分永远都是字符串
image-20210224225852838

常见类型如下:

  • 字符串类型 string
  • 哈希类型 hash : map 格式
  • 列表类型 list : linkedlist 格式。支持重复元素
  • 集合类型 set : 不允许重复元素
  • 有序集合类型 sortedset:不允许重复元素,且元素有顺序
  • ...
编辑
上次更新: 2021/06/21, 15:45:42
string

string→

最近更新
01
线程生命周期
07-06
02
线程安全理论
06-24
03
并发简史
06-24
更多文章>
Theme by Vdoing | Copyright © 2019-2021 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×