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

redis数据库学习的更多相关文章

  1. 【redis数据库学习】用JAVA连接redis数据库各种报错

    最近项目中,需要用到redis数据库,然后使用Jedis让JAVA连接redis. 首先,安装redis数据库,参考的是:http://www.runoob.com/redis/redis-insta ...

  2. redis数据库学习笔记

    redis数据库 工作需要,简单了解一下redis数据库,供后续参考和复习使用. 一.简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字 ...

  3. Redis 数据库学习

    安装(mac) 使用homebrew安装,命令是:brew install redis. 安装完成后启动命令:brew services start redis. 使用命令redis-cli进入red ...

  4. 项目开发git-短信验证-redis数据库

    项目开发git操作 基本流程 """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3.将开发结果提交到本地版本库 - git status查看时没有待处理的事件 4. ...

  5. 数据库学习番外篇 神奇的Redis

    数据库学习番外篇 神奇的Redis 由于最近呢小猿我找到了自己的女神,所以整个学习计划都被打乱了,本来想着一天看一张<SQLServer宝典>的.没成想,我竟然脱离了单身狗的队伍. 最近准 ...

  6. 【Redis数据库】命令学习笔记——发布订阅、事务、脚本、连接等命令汇总

    本篇基于redis 4.0.11版本,学习发布订阅.事务.脚本.连接的相关命令. Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. 序号 ...

  7. 小白学习 Redis 数据库日记(2017-06-13)

    redis 127.0.0.1:6379> LPUSH runoobkey redis(integer) 1redis 127.0.0.1:6379> LPUSH runoobkey mo ...

  8. Redis学习(5)-Jedis(Java操作redis数据库技术)

    Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.dem ...

  9. python学习笔记(十六)python操作redis数据库

    Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.list.set.zset(sorted set).hash. Redis特点 Redis以内存作为数据存储介质,所 ...

随机推荐

  1. iOS基础面试题汇总

    目录 1. #import 跟#include.@class有什么区别?#import<> 跟 #import""又什么区别? 都可以完整包含某个文件的内容,但是#im ...

  2. Android PDA扫描枪广播接搜条码并使用

    在开发扫描枪扫码接收广播条码的时候,由于厂商如shit般的文档和对Anroid基础知识的缺失,走了一些弯路,以下是广播接收条码并使用的代码实现 : 1 : 动态注册广播 PDA扫描枪对扫码有强大支持, ...

  3. 一文了解:Redis的RDB持久化

    一文了解:Redis的RDB持久化 Redis是内存数据库,为了保证数据不在故障后丢失,Redis需要将数据持久化到硬盘上. Redis持久化有两种方式:一种是快照,全量备份.一种是AOF方式,连续增 ...

  4. .net core web api部署到docker

    一.创建.net core web api 的Demo 修改部分代码 端口随意指定,ip用星号“*”,方便接下来docker虚拟网络自动分配ip 下一步是Dockerfile文件,如果发现你的项目中没 ...

  5. AWS Aurora数据库 Multi-Master 小测

    AWS Aurora Mysql终于推出了Multi-Master,直面硬刚Oracle RAC.在多一份数据库产品选择的小兴奋之余,我们也看看新推出的Multi-Master的特点(包括优缺点). ...

  6. Notepad++编辑器——Verilog、代码片段、F6编译

    Notepad++是一款精致小巧的编辑器,自带Verilog语法识别功能,插件也挺好用的.这里陈列一下我的设置. 版本:Notepad++ 7.6.6 ,32位 //================= ...

  7. DataPipeline丨DataOps的组织架构与挑战

    作者:DataPipeline CEO 陈诚 前两周,我们分别探讨了“数据的资产负债表与现状”及“DataOps理念与设计原则”.接下来,本文会在前两篇文章的基础上继续探讨由DataOps设计原则衍生 ...

  8. ThreadLocalSingleton.h——base

    #ifndef MUDUO_BASE_THREADLOCALSINGLETON_H #define MUDUO_BASE_THREADLOCALSINGLETON_H #include <boo ...

  9. 某团面试题:JVM 堆内存溢出后,其他线程是否可继续工作?

    转载注明:http://dwz.win/gHc 最近网上出现一个美团面试题:"一个线程OOM后,其他线程还能运行吗?".我看网上出现了很多不靠谱的答案.这道题其实很有难度,涉及的知 ...

  10. netty源码解解析(4.0)-18 ChannelHandler: codec--编解码框架

    编解码框架和一些常用的实现位于io.netty.handler.codec包中. 编解码框架包含两部分:Byte流和特定类型数据之间的编解码,也叫序列化和反序列化.不类型数据之间的转换. 下图是编解码 ...