目录
redis 默认16个数据库 select 0 -15(切换数据库)
在redis里面,我们可以把list玩成,栈、队列、阻塞队列!
georadius 以给定的经纬度为中心,找出某一半径内的元素
hyperloglog (命令以PF开头) (统计不重复数值)
redis 默认16个数据库 select 0 -15(切换数据库)
string
flushdb 清空数据库
flushall 清空所有数据库
exists key 查看数据库中是否存在key
list
在redis里面,我们可以把list玩成,栈、队列、阻塞队列!
*所有list命令都是有 l 开头+原有的命令 l+命令
小结 (list)
set(集合
所有set 的命令都是以 s 开头
\
hash(哈希)
zset(有序集合)
小结
三种特殊数据类型
GEOPOS
获取指定地点位置
georadius 以给定的经纬度为中心,找出某一半径内的元素
hyperloglog (命令以PF开头) (统计不重复数值)
bitmaps
位存储
事务
监控
redis 订阅分布
redis 主从复制
环境配置
命令配置主从机
配置文件配置主从机
测试∶主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取到主机写的信息!
如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从主机中获取值!
层层链路
哨兵模式 (**)
这里的哨兵有两个作用
1、 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
2、·当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式 通知其他的从服务器,修改配置文件,让它们切换主机。
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
测试
1、建立sentinel.conf
2、启动哨兵
3、如果Master节点断开了,这个时候就会从从机中随机选择一个服务器!(这里面有一个投票算法!)
哨兵日志
如果主机此时回来了,只能归并到新的主机下,当做从机,这就是哨兵模式的规则!
哨兵模式
优点︰
1、哨兵集群,基于主从复制模式,所有的主从配置优点,它全有2、主从可以切换,故障可以转移,系统的可用性就会更好
3、哨兵模式就是主从模式的升级,手动到自动,更加健壮!缺点︰
1、Redis不好啊在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦!2、实现哨兵模式的配置其实是很麻烦的,里面有很多选择!
哨兵模式的全部配置
Redis缓存穿透和雪崩(重点)
服务器的高可用问题!
缓存穿透(搜索不到数据导致)
解决方案
1、布隆过滤器
2、缓存空对象
缓存击穿(同一时间被访问的数据量巨大,缓存过期)
概述
这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞
当某个key在过期的瞬间,有大量的请求并发访问,这类数据一般是热点数据,由于缓存过期,会同时访问数据库来查询最新数据,并且回写缓存,会导使数据库瞬间压力过大。
缓存雪崩
概念
缓存雪崩,是指在某一个时间段,缓存集中过期失效。Redis宕机!
产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中的放入了缓存,假设缓存一个小时。那么到了凌晨一点钟的时候,这批商品的缓存就都过期了。而对这批商品的访问查询,都落到了数据库上,对于数据库而言,就会产生周期性的压力波峰。于是所有的请求都会达到存储层,存储层的调用量会暴增,造成存储层也会挂掉的情况。
其实集中过期,倒不是非常致命,比较致命的缓存雪崩,是缓存服务器某个节点宕机或断网。因为自然形成的缓存雪崩,一定是在某个时间段集中创建缓存,这个时候,数据库也是可以顶住压力的。无非就是对数据库产生周期性的压力而已。而缓存服务节点的宕机,对数据库服务器造成的压力是不可预知的,很有可能瞬间就把数据库压垮。 I
应用: