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

有ip地址如何做网站北京云无限优化

有ip地址如何做网站,北京云无限优化,猎头公司是干什么的,义乌网站建设公司代理注册用户如何防止缓存穿透? 先说明用户注册为什么会发送缓存穿透:用户注册时,需要验证用户名是否已存在,先查缓存,没有再查数据库,还没有才验证通过。高并发的情况下就可能有大量用户同时注册,…

注册用户如何防止缓存穿透?

先说明用户注册为什么会发送缓存穿透:用户注册时,需要验证用户名是否已存在,先查缓存,没有再查数据库,还没有才验证通过。高并发的情况下就可能有大量用户同时注册,或有恶意请求(因为注册是不设限的),造成缓存穿透。

常见的解决方案有哪些?

所以,在用户注册场景下,需要注意防止缓存穿透,常见的处理方式有下述这些:

  1. 对不存在的 Key 进行缓存,值设为 Null,并设置短暂过期时间,如 60 秒。(用户注册时验证了用户名a和b,最后用的b,那60内a也不允许别的用户使用,造成用户体验不好,而且内存有限,高并发会让内存压力大)
  2. 使用布隆过滤器,将所有已注册的用户名存入布隆过滤器,判断时先判断该用户名是否在布隆过滤器中,不在的一定不存在,避免直接查询数据库。(布隆的特性,只能添加,无法删除,注销的用户名也不能用)
  3. 使用确定的数据结构如 Redis 的 Set 集合来存储已注册用户名,判断时检查是否在集合内。(占用内存较多且复杂度较高)
  4. 针对高并发注册场景,可以先查询缓存,如果不命中则使用分布式锁来保证只有一个线程访问数据库,避免重复查询。(用户注册高峰期,只有一个线程访问数据库,这可能会导致大量用户的注册请求缓慢或超时。)

所以,从真实业务场景来看,上面这些解决方案都存在弊端,不能适用于真实场景。

最终方案:

在布隆过滤器后加一层缓存(Set),用于缓存已经注销的用户名,当布隆过滤器查询有时,再查Set里有没有,有说明这是一个被注销的用户名,可以继续使用。(也有缺点,增加了查询性能消耗和内存消耗)

而且这种方案还有一种情况也让人头疼:

用户频繁申请账号再注销(每次用新用户名),可能导致用户注销可复用的 Username Redis Set 结构变得庞大,增加了存储查询的负担。

遇到问题解决问题:

  1. 异常行为限制:每次用户注销时,记录用户的证件号,并限制证件号仅可用于注销五次。超过这个限制的次数,将禁止该证件号再次用于注册账号。

  2. 缓存分片处理:对 Username Redis Set 结构进行分片。即使我们对异常行为进行了限制,如果有大量用户注销账户,存储这些数据在一个 Redis Set 结构中可能成为一个灾难,可能出现 Redis 大 Key 问题。因此,我将 Set 结构进行分片,根据用户名的 HashCode 进行取模操作,将数据分散存储在 1024 个 Set 结构中,从而有效地解决了这个问题。

http://www.yidumall.com/news/103377.html

相关文章:

  • 网站导航建设注意百度一下你就知道官网网页版
  • 寻找项目做的网站郑州网站顾问
  • 万秀服务不错的seo推广seo外包公司如何优化
  • 连云港网站建设培训学校seo sem
  • 301网站跳转设置魔方优化大师官网下载
  • 织梦做的网站总是被攻击百度学术查重
  • 长春百度seo百度seo排名优化公司哪家强
  • h5网站制作价格中国最好的网络营销公司
  • 做网站合同模板知名做网站的公司
  • 带网站的电话小游戏推广接单平台
  • 成都租车公司网站百度怎么进入官方网站
  • 南通网站建设seo网站如何快速收录
  • wordpress主要标签外贸seo推广
  • 网站开发的公司排名企业网站seo推广
  • wordpress博客做seo苏州seo公司
  • 久久建筑网从哪里申请开发票seo应该怎么做
  • 网站如何做原创文章google推广方式和手段有哪些
  • 充值网站怎么做的线下推广活动策划方案
  • wordpress 微言插件台州优化排名推广
  • 外国媒体新闻网站百度账号申诉
  • 做一家影视网站赚钱吗seo服务商技术好的公司
  • 营销型网站建设首选做百度推广
  • it网站建设2024很有可能再次封城吗
  • dw做网站怎么换图片地产渠道12种拓客方式
  • 做网站公司找哪家市场推广渠道有哪些
  • wordpress外贸站免费收录网站
  • web网页制作成品代码西安seo计费管理
  • 网站建设用什么语言开发厦门百度开户
  • wordpress css丢失北京seo优化技术
  • 分销电商平台开发淄博网站seo