美文网首页
redis N连问

redis N连问

作者: _静夜听雨_ | 来源:发表于2023-02-13 10:42 被阅读0次
一、缓存特点

1.什么是缓存(cache)

定义:就是计算机内存中的一段数据

2.内存中数据的特点

读写快
断点立即丢失

3.redis缓存解决了什么问题

提高了网站吞吐量,提高网站运行效率。
核心解决问题:缓存的存在时用来减轻后端数据库的访问压力

4.既然缓存能提高效率,那项目中所有数据加入缓存岂不是更好?

注意:使用缓存时一定是数据库中极少发生修改,更多用于查询这种情况的,否则会引起频繁数据库和redis的更新,导致性能更差。

5.本地缓存和分布式缓存的区别?

本地缓存:存在应用服务器内存中的数据为本地缓存(local cache)
分布式缓存:存储在当前应用服务器内存之外的数据为分布式缓存(distribute cache)
集群:将同一种服务的多个节点放在一起共同对系统提供服务过程称之为集群。
分布式:有多个不同服务集群共同对系统系统提供服务这个系统称之为分布式系统(distribute system),即分布式是建立在集群之上的。

二、缓存优化策略

1.对放入redis中的可以进行优化:

key的长度不能太长
尽可能将key设计的简洁一些,如果key太长可以考虑将key设计成md5码保存。

三、如何解决Redis的缓存穿透、缓存雪崩和缓存击穿
  1. redis的缓存穿透
    缓存穿透,是指查询一个数据库不存在的数据。

例如数据库中没有id=-1的数据,这时如果外界疯狂查id=-1这个数据,先查询redis没有这个数据,再查询数据库也不存在这个数据即返回空,因此一直重复这个步骤,导致数据库压力过大,而出现宕机。

解决方案:

对不存在的数据缓存到redis中,设置key,value值为null(不管是数据未null还是系统bug问题),并设置一个短期过期时间段,避免过期时间过长影响正常用户使用。
拉黑该IP地址
布隆过滤器 将所有可能存在的数据哈希到一个足够大的bitmap(位图)中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

  1. redis的缓存击穿

某一个热点key,在不停地扛着高并发,当这个热点key在失效的一瞬间,持续的高并发访问就击破缓存直接访问数据库,导致数据库宕机。

解决方案:

设置热点数据"永不过期"
加上互斥锁:上面的现象是多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个互斥锁来锁住它,其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后将数据放到redis缓存起来。后面的线程进来发现已经有缓存了,就直接走缓存

  1. redis的雪崩

在高并发下,大量缓存key在同一时间失效,大量请求直接落在数据库上,导致数据库宕机。

解决方案:

这种情况,我们一般是采取不同分类商品,缓存不同周期,在同一分类中的商品,加上一个随机因子,这样尽可能分散缓存过期时间,而且,热门类目的商品缓存时间长一些,冷门类目的商品缓存时间短一些,也能节省缓存服务的资源。
缓存永久存储(不推荐)。
若是集群部署,可将热点数据均匀分布在不同的Redis库中也能够避免key全部失效问题。

相关文章

  • block N连问

    Block 与 循环引用 1、 在所有的Block中,使用self 都会引起循环引用吗? 答:不一定.循环引用的原...

  • 每日灵魂N连问

    今天音频听了吗?笔记写了吗? 作业做了吗?实操会了吗?复习了吗? 简书日更写了吗?云赞家园点赞点完了吗?兑赞了吗?...

  • Redis监控

    最近因为redis的问题,老是被人烦,一会这个问redis是不是好的,一会那个问,其实用redis-cli连一下,...

  • 用N连问带新员工:省力又高效的方法

    今天get一个方法,就是用N连问的方法去叫人寻找答案,用这种方法代替讲课。 其实任何内容分享都该用N连问的方法来串...

  • 揭开面纱,追着 redis 七连问!

    01 redis的通讯协议是什么? redis的通讯协议是文本协议,是的,Redis服务器与客户端通过RESP(...

  • redis连接时报错:Could not connect to

    brew install redis 安装好redis 用terminal连接redis时出现错误:Could n...

  • LNMP下Redis安装使用

    如何安装 查看Redis 进入使用Redis 其他方式安装参考Redis官网 http://www.redis.n...

  • 01-Redis开篇

    Redis基础 什么是Redis?Remote Dictionary Server(远程字典服务器)Redis是N...

  • redis 入门

    redis 入门 一、redis 安装 ==1)linux:== ==2)windows==百度 N多。步骤简单。...

  • Redis批量删除

    命令解释:-a 后面是你的redis密码-n 是redis的哪个库,默认是0库-p redis端口,默认6379-...

网友评论

      本文标题:redis N连问

      本文链接:https://www.haomeiwen.com/subject/wyvjkdtx.html