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 使用方法
- 查询
- 查出数据后,利用json将数据转成String类型,存进reids
- 更新
- 先把数据更新到数据库
- 删除reids的key
2 缓存雪崩
2.1 what
- 由于缓存时间相近或者redis宕机导致缓存数据同一时间大面积失效,使得数据库短时间请求增多,增加数据库压力,减低数据库访问性能
2.2 how(解决):
- 事前:
- 宕机导致:的保证redis高可用,发现机器宕机,及时补上。选择合适的内存淘汰策略
- 缓存失效时间相同导致的:在设计时间的时候随机加减几分钟
- 事后:
- 宕机导致的: 利用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哨兵
- 用途:
- 监视主从数据库运行情况
- 主数据库发生故障后,自动切换到从数据库
6 卡顿现象
6.1 解决方法:
- 使用show global status
- 使用show processlist
- 使用查询日志
7 大数据查询优化
- 优化sql语句 索引
- 使用主从复制,实现读写分离
- 加入缓存 如redis
redis数据库学习的更多相关文章
- 【redis数据库学习】用JAVA连接redis数据库各种报错
最近项目中,需要用到redis数据库,然后使用Jedis让JAVA连接redis. 首先,安装redis数据库,参考的是:http://www.runoob.com/redis/redis-insta ...
- redis数据库学习笔记
redis数据库 工作需要,简单了解一下redis数据库,供后续参考和复习使用. 一.简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字 ...
- Redis 数据库学习
安装(mac) 使用homebrew安装,命令是:brew install redis. 安装完成后启动命令:brew services start redis. 使用命令redis-cli进入red ...
- 项目开发git-短信验证-redis数据库
项目开发git操作 基本流程 """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3.将开发结果提交到本地版本库 - git status查看时没有待处理的事件 4. ...
- 数据库学习番外篇 神奇的Redis
数据库学习番外篇 神奇的Redis 由于最近呢小猿我找到了自己的女神,所以整个学习计划都被打乱了,本来想着一天看一张<SQLServer宝典>的.没成想,我竟然脱离了单身狗的队伍. 最近准 ...
- 【Redis数据库】命令学习笔记——发布订阅、事务、脚本、连接等命令汇总
本篇基于redis 4.0.11版本,学习发布订阅.事务.脚本.连接的相关命令. Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. 序号 ...
- 小白学习 Redis 数据库日记(2017-06-13)
redis 127.0.0.1:6379> LPUSH runoobkey redis(integer) 1redis 127.0.0.1:6379> LPUSH runoobkey mo ...
- Redis学习(5)-Jedis(Java操作redis数据库技术)
Java连接redis 一,导入jar包 Redis有什么命令,Jedis就有什么方法 设置防火墙 在Linux上面运行如下代码: 单实例:Jedis实例: package com.jedis.dem ...
- python学习笔记(十六)python操作redis数据库
Redis是一个key-value存储系统,它支持丰富的数据类型,如:string.list.set.zset(sorted set).hash. Redis特点 Redis以内存作为数据存储介质,所 ...
随机推荐
- 解决报错:类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用
Razor视图引擎中,使用部分视图编译报错 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Cultur ...
- 直方图均衡基本原理及Python实现
1. 基本原理 通过一个变换,将输入图像的灰度级转换为`均匀分布`,变换后的灰度级的概率密度函数为 $$P_s(s) = \frac{1}{L-1}$$ 直方图均衡的变换为 $$s = T(r) = ...
- 用jquery实现放大镜效果
----css代码--- *{margin:0;padding:0;} .showimg{position:relative;width:450px;height:420px;border:1px s ...
- 前后端分离后台api接口框架探索
前言 很久没写文章了,今天有时间,把自己一直以来想说的,写出来,算是一种总结吧! 这篇文章主要说前后端分离模式下(也包括app开发),自己对后台框架和与前端交互的一些理解和看法. 前后端分离 ...
- redhat linux 5.3修改Java环境变量
需要配置的环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把jdk安装目录下的bin目录增 ...
- javaWeb 中前端Form表单数据处理(手动拼json)
在前端我们会用到最多的就是form表单提交数据,在form表单中有很多都是自动将数据传到后台,然后通过实体来接受的,但是有的时候我们就是需要在前端就拿到这个Form表单的数据,这是我们就可以自己讲数据 ...
- 使用CefSharp在.NET中嵌入Chromium
使用CefSharp可以在.NET轻松的嵌入Html,不用担心WPF与Winform 控件与它的兼容性问题,CefSharp大部分的代码是C#,它可以在VB或者其他.NET平台语言中来进行使用. 近几 ...
- 实测win10 efi启动及centos7双系统引导顺序修改
安装win10 安装win10过程中,系统自动建立esp分区,分区格式为FAT16,目录如下 1,EFI/Boot文件夹保持不动 删除 EFI/Microsoft/boot/ 文件夹下面除BCD文件外 ...
- [Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结
到目前为止,我们整个初级广告检索系统就初步开发完成了,我们来整体回顾一下我们的广告系统. 整个广告系统编码结构如下: mscx-ad 父模块 主要是为了方便我们项目的统一管理 mscx-ad-db 这 ...
- Java网络编程与NIO详解2:JAVA NIO 一步步构建I/O多路复用的请求模型
微信公众号[黄小斜]作者是蚂蚁金服 JAVA 工程师,专注于 JAVA 后端技术栈:SpringBoot.SSM全家桶.MySQL.分布式.中间件.微服务,同时也懂点投资理财,坚持学习和写作,相信终身 ...