1、单机Mysql时代
2、Memcached(缓存) + Mysql + 垂直拆分(读写分离)网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用缓存来保证效率!
3、分库分表 + 水平拆分 + Mysql集群
4、如今最近的年代如今信息量井喷式增长,各种各样的数据出现(用户定位数据,图片数据等),大数据的背景下关系型数据库(RDBMS)无法满足大量数据要求。Nosql数据库就能轻松解决这些问题。
目前一个基本的互联网项目
为什么要用NoSQL ?用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长!
NoSQLNoSQL = Not Only SQL (不仅仅是SQL)
NoSQL特点
了解:3V + 3高大数据时代的3V :主要是描述问题的
四者对比
Redis是什么Redis(Remote Dictionary Server ),即远程字典服务。
Redis能该干什么?
特性
Redis 是单线程的Redis是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽。
Redis为什么单线程还这么快?1、误区1:高性能的服务器一定是多线程的?
在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。一些常用命令
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)首先我们列表,可以经过规则定义将其变为队列、栈、双端队列等
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
小结
geoadd
geopos
geodist两人之间的距离
georadius 以给定的经纬度为中心,找出某一半径内的元素我附近的人? (获得所有附近的人的地址,定位!) 通过半径来查询
georadiusbymember
geohash 返回一个或多个位置元素的geohash表示(很少使用到)该命令将返回11个字符的geohash字符串
geo 底层的实现原理其实就是Zset 我们可以使用Zset命令来操作geo
什么是基数?
简介Redis 2.8.9版本就更新了hyperloglog 数据结构
位存储统计用户信息,活跃,不活跃!登录,未登录!打卡,未打卡! 两个的状态,都可以使用bitmaps
正常执行事务
放弃事务 ( discard )
编译型异常(代码有问题 ,及命令有错) ,事务中所有的命令都不会被执行
运行时异常(1/0),如果事务队列中存在语法性,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常
监控 watch (面试常问)悲观锁:
redis监视测试正常执行成功
测试1.导入对应的依赖
判断keys * 以及一些基本方法
对String操作的命令
对List操作的命令
对set操作的命令
对hash操作的命令
对Zset操作的命令
源码分析
整合测试1.导入依赖
REPLICATION 主从复制,我们后面讲解主从复制的时候再进行详解6.SECURITY 安全
持久化:在指定时间间隔内将内存数据存入磁盘中,断电也能恢复数据,使用快照文件读到内存中。RDB:读写文件
什么是RDB用在主从复制中,rdb就是备用的,在从机上面。
由于 save 命令是同步命令,会占用Redis的主进程。若Redis数据非常多时,save命令执行速度会非常慢,阻塞所有客户端的请求。示意图:
可以通过配置文件对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动进行数据集保存操作。
优点:
缺点:
AOF 是什么
append
重写规则说明aof 默认就是文件的无限追加,文件会越来越大!
优点和缺点!
命令这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。
测试订阅端:
原理Redis是使用C实现的,通过分析 Redis 源码里的 pubsub.c 文件,了解发布和订阅机制的底层实现,籍此加深对 Redis 的理解。
缺点
使用场景1、实时消息系统!
细节主机可以写,从机不能写只能读。 主机中的所有信息和数据,都会自动被从机保存。
赋值原理Slave 启动成功连接到 master 后会发送一个sync同步命令
层层链路上一个M链接下一个 S!
如果没有老大了,这个时候能不能选择一个老大出来呢? 需手动设置!谋朝篡位
概述主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工 干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。
测试我们目前的状态是 一主二从!
哨兵模式如果主机此时回来了,只能归并到新的主机下,当做从机,这就是哨兵模式的规则!
哨兵模式优缺点优点:
哨兵模式的全部配置完整的哨兵模式配置文件 sentinel.conf
服务的高可用问题!Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一 些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据 的一致性要求很高,那么就不能使用缓存。
概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于 是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中(秒 杀!),于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了 缓存穿透。
解决方案布隆过滤器
概述这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中 对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一 个屏障上凿开了一个洞。
解决方案设置热点数据永不过期
概念缓存雪崩,是指在某一个时间段,缓存集中过期失效。Redis 宕机!
解决方案redis高可用
优点
缺点这就要回到我们上面所说的那些缺点了。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |