一丶什么是redis
redis是一个开源的内存种的数据结构存储系统,可用作为数据库丶中间件丶缓存,是一个nosql存储key-val类型的数据库
二丶redis的访问数量级是多少
redis的访问数量级为10万/秒,链接数越多访问速度越慢
三丶redis的配置以及持久化方案有两种
第一:RDB方式,(快照,速度快)
第二:AOF方式,(记录redis的操作日志,后面还原,速度慢)
什么是RDB:
将Redis在内存中的数据库状态保存到磁盘里面,RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态(默认下,持久化到dump.rdb文件,并且在redis重启后,自动读取其中文件,据悉,通常情况下一千万的字符串类型键,1GB的快照文件,同步到内存中的 时间是20-30秒)
什么是AOF:
以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),
只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis
重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
四丶缓存雪崩和缓存穿透问题解決方案
缓存雪崩
简介:缓存同一时间大面积失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉
解決办法
●事前:尽量保证整个redis集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。
●事中:本地ehcache缓存+ hystrix限流&降级,避免MySQL 崩掉
●事后:利用redis持久化机制保存的数据尽快恢复缓存
●事中:本地ehcache缓存+ hystrix限流&降级,避免MySQL 崩掉
●事后:利用redis持久化机制保存的数据尽快恢复缓存
缓存穿透
简介: - 般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
解决办法:有很多种方法可以有效地解决缓存穿透问题, 最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一 个 不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有- 一个更为简单粗暴的方法(我们采用的就是这种),如果- -个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
简介: - 般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
解决办法:有很多种方法可以有效地解决缓存穿透问题, 最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一 个 不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有- 一个更为简单粗暴的方法(我们采用的就是这种),如果- -个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。