zoukankan      html  css  js  c++  java
  • redis数据库学习

    0 使用理由

    0.1 高性能

    • 纯内存操作,比在硬盘操作数据的速度有极大提升

    0.2 高并发

    • 承受请求比直接操作数据库大得多

    0.3 单线程

    • 至于redis单线程的原因。有点意思。CPU不是Redis的主要瓶颈,因为Redis通常是内存或网络绑定。例如,一般Linux系统上运行的Redis每秒甚至可以提供100万个请求,因此不会使用太多的CPU。言下之意,就是说redis根本不需要多线程,况且多线程会有上下文切换消耗。当然可以通过启动多个redis实例,达到利用cpu的目的。

    1 缓存使用

    1.1 使用场景

    • 读对于写,为了减少数据库访问的id操作,可以将数据缓存,提高系统性能

    1.2 使用方法

    • 查询
      1. 查出数据后,利用json将数据转成String类型,存进reids
    • 更新
      1. 先把数据更新到数据库
      2. 删除reids的key

    2 缓存雪崩

    2.1 what

    • 由于缓存时间相近或者redis宕机导致缓存数据同一时间大面积失效,使得数据库短时间请求增多,增加数据库压力,减低数据库访问性能

    2.2 how(解决):

    • 事前:
      1. 宕机导致:的保证redis高可用,发现机器宕机,及时补上。选择合适的内存淘汰策略
      2. 缓存失效时间相同导致的:在设计时间的时候随机加减几分钟
    • 事后:
      1. 宕机导致的: 利用redis持久化机制保存的数据及时恢复缓存

    3 缓存穿透

    3.1 what(是什么)

    • 请求缓存中不存在的数据,使得数据库压力增大,从而崩掉

    3.2 how:(解决)

    • 布隆过滤器
    • 直接缓存他(空的),设计一个较短时间,使其失效

    4 Redis数据类型

    • String 字符串
    • Hash哈希 :用户ID
    • List列表 :粉丝列表
    • Set集合 :共同好友
    • Sorted Set有序集合:排行榜

    5 主从复制

    5.1 定义/解释

    建立一个与主数据库一样的数据库环境,称为从数据库,主复制库一般是准实时的业务数据库。

    5.2 作用

    • 作为备用数据库,主数据库发生故障后,切换到从数据库
    • 架构扩展,业务量增大,io访问频繁,做多库的存储,提高io性能
    • 实现读写分离。

    5.3 原理

    • 将主数据库中的bin-log文件的sql语句复制到从数据库中的relay-log文件,再次执行。

    5.4 Redis哨兵

    • 用途:
      1. 监视主从数据库运行情况
      2. 主数据库发生故障后,自动切换到从数据库

    6 卡顿现象

    6.1 解决方法:

    • 使用show global status
    • 使用show processlist
    • 使用查询日志

    7 大数据查询优化

    • 优化sql语句 索引
    • 使用主从复制,实现读写分离
    • 加入缓存 如redis
  • 相关阅读:
    Anaconda + Djongo + spyder 网站开发 (三)
    Anaconda + Djongo + spyder 网站开发 (二)
    Anaconda + Djongo + spyder 网站开发 (一)
    实验室网盘链接方式
    R 缓存画图代码,之后再总结
    换源的重要性!!!!
    latex 调整页边距
    Latex 字体设置
    嵌套交叉验证
    FDR及Benjamini-Hochberg方法
  • 原文地址:https://www.cnblogs.com/chenzhuantou/p/11497640.html
Copyright © 2011-2022 走看看