当前位置: 首页 > wzjs >正文

网站建设上机考试题目如何建网站不花钱

网站建设上机考试题目,如何建网站不花钱,浙江省建设信息港官网首页,文字转图片生成器在线Redis知识点总结(七)——缓存雪崩、缓存穿透、缓存击穿、Redis高级用法 缓存雪崩缓存穿透布隆过滤器 缓存击穿Redis高级用法bitmapHyperLogLog 缓存雪崩 缓存雪崩是指,同一时间有大量的缓存key失效,或者redis节点直接宕机了&…

Redis知识点总结(七)——缓存雪崩、缓存穿透、缓存击穿、Redis高级用法

  • 缓存雪崩
  • 缓存穿透
    • 布隆过滤器
  • 缓存击穿
  • Redis高级用法
    • bitmap
    • HyperLogLog

缓存雪崩

缓存雪崩是指,同一时间有大量的缓存key失效,或者redis节点直接宕机了,造成大量的请求打向数据库,像雪崩一样。

原本我们的redis就像是数据库前面的一堵墙,挡住大量的请求,只有少量的请求打到数据库。

在这里插入图片描述

但是由于大量的缓存key在同一时间失效,相当于是redis这堵墙开了个大口,这时候大量的请求就会同一时刻打向数据库,有可能直接把数据库打挂掉。

在这里插入图片描述

面对这种问题,解决办法就是给每一个key的过期时间添加一个随机值,然后redis要以集群方式部署,避免redis单点故障导致所有请求打向数据库。

缓存穿透

缓存穿透是指一个请求查询的数据在缓存中没有,在数据库中也没有,这种请求每次都会直达数据库,向穿过了缓存层一样。如果客户端不断的发起这样的请求,就会造成大量的无效查询,如果是黑客通过某种手段制造这种大量的无效请求打向数据库,也有可能把数据库打挂掉。

在这里插入图片描述

解决办法有如下几种:

  • 添加校验规则,过滤无效请求
  • 缓存一个空值到redis,并设置一个较短的过期时间
  • 使用布隆过滤器

布隆过滤器

布隆过滤器是基于bitmap加多个hash函数组成的一个用于判断一个key是否存在的过滤器。当它判断该key不存在时,那就一定是不存在的;当它判断该key是存在的时候,大概率是存在的,但也有可能是误判。

原理如下:

在这里插入图片描述

布隆过滤器包含多个hash函数和一个bitmap,比如有3个hash函数和一个bitmap。当我要通过布隆过滤器判断是一个key是否存在是,布隆过滤器会分别使用这三个hash函数算出三个bitmap的下标,然后到bitmap中查看对应的bit是否为1,如果三个bit都为1,则判断key存在,如果有至少其中一个bit是0,则判断key不存在。

在这里插入图片描述

有了布隆过滤器之后,我们每次往数据库添加数据的时候,同时往布隆过滤器中添加一份,每次要向数据库查询数据的时候,先通过布隆过滤器判断是否存在,存在再去查,不存在就不去查了,这样就能过滤掉缓存穿透造成的无效查询请求。

缓存击穿

缓存击穿的意思是一个热点key在某个时间点突然失效了,因为它是热点key,因此大量请求同一时刻涌向数据库去查询这个key,把数据库打挂掉。

在这里插入图片描述

解决办法有两种:

  • 设置热点key永不失效
  • 添加分布式锁,每次查询数据前要先获取到锁,没抢到锁的则睡眠一会再重试

Redis高级用法

bitmap

上面说到布隆过滤器是基于bitmap实现的,这个bitmap其实就是基于redis的string类型的,因为string会保存二进制字节数组,所以自然可以用它来实现bitmap的功能。

当我们向bitmap中写入一个bit时,可以用以下命令:

setbit {bitmap} {offset} 1

查询一个bit时就这样:

getbit {bitmap} {offset}

这里的{bitmap}指的是这个bitmap的名字,由我们自己指定,{offset}则是bit在bitmap中的偏移量。

然后可以这样统计bitmap中共有多少个bit是1:

bitcount {bitmap}

还可以通过以下这个命令对多个bitmap进行按位与运算,合并成一个新的bitmap。

bitop and {new_bitmap} {bitmap1} {bitmap2} {bitmap3}

在这里插入图片描述

假设我们系统有1亿个用户,我们要统计在2024年1月28日当天这1亿个用户中有多少用户登录,我们可以用一个长度为1亿的bitmap,然后bitmap中每个bit对应一个用户当天的登录情况,登录了则置为1,否则该bit就是0,那么我们只要用一个bitcount命令就可以得到当天这1亿个用户的登录情况了。

在这里插入图片描述

那我们要统计一周内连续登录的用户数呢?我们只要使用 bitop and 命令把一周内的七天对应的七个bitmap按位与合并成一个新的bitmap,再用bitcount命令统计一下这个新的bitmap即可。

在这里插入图片描述

HyperLogLog

redis有一个高级功能HyperLogLog,可以用来做基数统计。基数统计的意思是求一个集合中不重复的元素个数。

比如我们现在要统计某网页的UV,UV就是一天之内访问当前页面的用户数,一个用户一天之内多次访问该页面,只能算作访问一次。

此时我们可以使用HyperLogLog完成网页UV的统计:

  1. 我们用网页名称做key,比如uv:{pageName}这样
  2. 一个用户访问该页面,我们就使用pfadd命令把该用户id添加进去,比如 pfadd uv:page1 uid1
  3. 如果要统计该页面的uv,我们使用pfcount命令,比如pfcount uv:page1这样

在这里插入图片描述

但是有一点要注意,HyperLogLog的统计不是精确的,有一定的误差,如果要精确统计,那么HyperLogLog就不适用了。

http://www.dtcms.com/wzjs/209836.html

相关文章:

  • 徐州网站建设 网站推广产品推广方案ppt
  • 手机网站制作注意事项怎么在百度免费推广
  • wordpress推广插件湖南网站seo地址
  • 企业网站建设公司网址收录
  • 苏州公司建站南宁网络推广软件
  • 建设好的网站成都seo招聘信息
  • 十大最好玩网页游戏手机优化软件排名
  • 国家卫生健康委员会电子化注册旧版优化大师
  • 虚拟主机发布网站吗西安竞价托管代运营
  • 网站二级栏目数量百度一下百度搜索百度一下
  • 怎样做网站的源代码app开发制作
  • 公司网站如何做维护上海站群优化公司
  • 佛山做网站-准度科技公司深圳seo招聘
  • wordpress首页显示指定分类文章电脑优化软件
  • 外网工业设计网站外贸网站有哪些
  • 门户网站建设与推广方案合肥网站seo整站优化
  • 广州网站设计价格seo是什么部位
  • 网站中下拉列表框怎么做发布广告的平台免费
  • seo 网站结构视频优化是什么意思
  • 做图模板网站有哪些经典营销案例
  • 小学英语教师做应用相关网站百度游戏
  • 内蒙古企业网站制作广告网站留电话不用验证码
  • 网站源码.net百度竞价推广方案的制定
  • 天然气公司的网站应该怎么做提供seo服务
  • 如何给自己做的网站留后门关键词优化seo排名
  • 阳泉网站设计360搜索推广
  • 做网站有哪些注意事项运营培训班有用吗
  • 网站开发实训周报域名搜索
  • 网站开发小结软文范例200字
  • 建设工程质量+协会网站新闻实时报道