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

友情下载网站此网站三天换一次域名

友情下载网站,此网站三天换一次域名,平面设计网络培训,网站备案资料修改参考Redis连环60问#xff08;八股文背诵版#xff09; - 知乎 (zhihu.com) 1.是什么 本质上是一个key-val数据库,把整个数据库加载到内存中操作#xff0c;定期通过异步操作把数据flush到硬盘持久化。因为纯内存操作#xff0c;所以性能很出色#xff0c;每秒可以超过10…参考Redis连环60问八股文背诵版 - 知乎 (zhihu.com) 1.是什么 本质上是一个key-val数据库,把整个数据库加载到内存中操作定期通过异步操作把数据flush到硬盘持久化。因为纯内存操作所以性能很出色每秒可以超过10万次操作。 2.优点 1.读写性能极高每秒可读11万次写8万次 2.支持持久化AOF(Append Only File做日志)和RDB(Redis DataBase做全局备份)两种方式Redis两种持久化机制RDB和AOF详解面试常问工作常用 - 知乎 (zhihu.com) RDB理解是做备份 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。 AOF: 全量备份总是耗时的有时候我们提供一种更加高效的方式AOF工作机制很简单redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。每当有一个写命令过来时就直接保存在我们的AOF文件中。 3.支持事务原子性操作 4.redis支持stringhash、set、zset、list五种类型 5.丰富的特性 – Redis还支持 publish/subscribe 通知 key 过期等特性。 3.缺点 数据库容量受到物理内存的限制不能用作海量数据的高性能读写因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。主机宕机宕机前有部分数据未能及时同步到从机切换IP后还会引入数据不一致的问题降低了系统的可用性。 4.为什么速度快 内存存储Redis是使用内存(in-memeroy)存储没有磁盘IO上的开销。数据存在内存中类似于 HashMapHashMap 的优势就是查找和操作的时间复杂度都是O(1)。单线程实现 Redis 6.0以前Redis使用单个线程处理请求避免了多个线程之间线程切换和锁资源争用的开销。注意单线程是指的是在核心网络模型中网络请求模块使用一个线程来处理即一个线程处理所有网络请求。 非阻塞IORedis使用多路复用IO技术将epoll作为I/O多路复用技术的实现再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件不在网络I/O上浪费过多的时间。优化的数据结构Redis有诸多可以直接应用的优化数据结构的实现应用层可以直接使用原生的数据结构提升性能。使用底层模型不同Redis直接自己构建了 VM (虚拟内存)机制 因为一般的系统调用系统函数的话会浪费一定的时间去移动和请求。 5.为什么要用 Redis 做缓存 从高并发上来说 直接操作缓存能够承受的请求是远远大于直接访问数据库的所以我们可以考虑把数据库中的部分数据转移到缓存中去这样用户的一部分请求会直接到缓存这里而不用经过数据库。 理解相当于削峰实时性要求不高的大量数据可以先到缓存里  从高性能上来说 用户第一次访问数据库中的某些数据。 因为是从硬盘上读取的所以这个过程会比较慢。将该用户访问的数据存在缓存中下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存所以速度相当快。如果数据库中的对应数据改变的之后同步改变缓存中相应的数据。 理解有点像计组里的cpu缓存把最近使用的数据放在缓存内一段时间不用再去除。cpu取用先到缓存找再去磁盘找就能读提高速度 6.常用场景 1、缓存 缓存现在几乎是所有中大型网站都在用的必杀技合理的利用缓存不仅能够提升网站访问速度还能大大降低数据库的压力。Redis提供了键过期功能也提供了灵活的键淘汰策略所以现在Redis用在缓存的场合非常多。 2、排行榜 很多网站都有排行榜应用的如京东的月度销量榜单、商品按时间的上新排行榜等。Redis提供的有序集合数据类构能实现各种复杂的排行榜应用。 3、计数器(高实时性的一些计数) 什么是计数器如电商网站商品的浏览量、视频网站视频的播放数等。为了保证数据实时效每次浏览都得给1并发量高时如果每次都请求数据库操作无疑是种挑战和压力。Redis提供的incr命令来实现计数器功能内存操作性能非常好非常适用于这些计数场景。 4、分布式会话 集群模式下在应用不多的情况下一般使用容器自带的session复制功能就能满足当应用增多相对复杂的系统中一般都会搭建以Redis等内存数据库为中心的session服务session不再由容器管理而是由session服务及内存数据库管理。 5、分布式锁 在很多互联网公司中都使用了分布式技术分布式技术带来的技术挑战是对同一个资源的并发访问如全局ID、减库存、秒杀等场景并发量不大的场景可以使用数据库的悲观锁、乐观锁来实现但在并发量高的场合中利用数据库锁来控制资源的并发访问是不太理想的大大影响了数据库的性能。可以利用Redis的setnx功能来编写分布式的锁如果设置返回1说明获取锁成功否则获取锁失败实际应用中要考虑的细节要更多。 6、 社交网络 点赞、踩、关注/被关注、共同好友等是社交网站的基本功能社交网站的访问量通常来说比较大而且传统的关系数据库类型不适合存储这种类型的数据Redis提供的哈希、集合等数据结构能很方便的的实现这些功能。如在微博中的共同好友通过Redis的set能够很方便得出。 7、最新列表 Redis列表结构LPUSH可以在列表头部插入一个内容ID作为关键字LTRIM可用来限制列表的数量这样列表永远为N个ID无需查询最新的列表直接根据ID去到对应的内容页即可。 8、消息系统MQ 消息队列是大型网站必用中间件如ActiveMQ、RabbitMQ、Kafka等流行的消息队列中间件主要用于业务解耦、流量削峰及异步处理实时性低的业务。Redis提供了发布/订阅及阻塞队列功能能实现一个简单的消息队列系统。另外这个不能和专业的消息中间件相比。 7.几种数据类型 Redis 数据类型 | 菜鸟教程 (runoob.com) String、Hash、Set、List、SortedSet String就是字符串 Hash是Key-val键值对类似go或者cpp的map底层是Hashtable。 List底层是双向链表两边皆可push和pop Set是一个去重的集合类似cpp的set但不排序 Zset(SortedSet)是自动排序的Set类似cpp的set 8.两种持久化方法快照RDB只追加文件AOF Redis提供了两种不同的持久化方法可以将数据存储在磁盘中一种叫快照RDB另一种叫只追加文件AOF。 RDB理解大批量数据定时备份如有误差直接回滚读取存档 在指定的时间间隔内将内存中的数据集快照写入磁盘(Snapshot)它恢复时是将快照文件直接读到内存里。 优势适合大规模的数据恢复对数据完整性和一致性要求不高 劣势在一定间隔时间做一次备份所以如果Redis意外down掉的话就会丢失最后一次快照后的所有修改。 AOF理解记录操作日志如有误差按操作重新走一遍 以日志的形式来记录每个写操作将Redis执行过的所有写指令记录下来(读操作不记录)只许追加文件但不可以改写文件Redis启动之初会读取该文件重新构建数据换言之Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。 AOF采用文件追加方式文件会越来越大为避免出现此种情况新增了重写机制当AOF文件的大小超过所设定的阈值时 Redis就会启动AOF文件的内容压缩只保留可以恢复数据的最小指令集.。 优势 每修改同步appendfsync always 同步持久化每次发生数据变更会被立即记录到磁盘性能较差但数据完整性比较好每秒同步appendfsync everysec 异步操作每秒记录如果一秒内宕机有数据丢失不同步appendfsync no 从不同步 劣势 相同数据集的数据而言aof文件要远大于rdb文件恢复速度慢于rdbaof运行效率要慢于rdb每秒同步策略效率较好不同步效率和rdb相同 9如何选择持久化方法 10.过期键的删除 Redis的过期删除策略就是惰性删除和定期删除两种策略配合使用。 惰性删除惰性删除不会去主动删除数据而是在访问数据的时候再检查当前键值是否过期如果过期则执行删除并返回 null 给客户端如果没有过期则返回正常信息给客户端。它的优点是简单不需要对过期的数据做额外的处理只有在每次访问的时候才会检查键值是否过期缺点是删除过期键不及时造成了一定的空间浪费。 定期删除Redis会周期性的随机测试一批设置了过期时间的key并进行处理。测试到的已过期的key将被删除。 11.设置过期时间 12.Redis内存淘汰策略 Redis是不断的删除一些过期数据但是很多没有设置过期时间的数据也会越来越多那么Redis内存不够用的时候是怎么处理的呢答案就是淘汰策略。此类的 当Redis的内存超过最大允许的内存之后Redis会触发内存淘汰策略删除一些不常用的数据以保证Redis服务器的正常运行。 13.缓存异常 缓存异常有四种类型分别是缓存和数据库的数据不一致、缓存雪崩、缓存击穿和缓存穿透。 14.缓存击穿 缓存击穿跟缓存雪崩有点类似缓存雪崩是大规模的key失效而缓存击穿是某个热点的key失效大并发集中对其进行请求就会造成大量请求读缓存没读到数据从而导致高并发访问数据库引起数据库压力剧增。这种现象就叫做缓存击穿。 从两个方面解决第一是否可以考虑热点key不设置过期时间第二是否可以考虑降低打在数据库上的请求数量。 解决方案 在缓存失效后通过互斥锁或者队列来控制读数据写缓存的线程数量比如某个key只允许一个线程查询数据和写缓存其他线程等待。这种方式会阻塞其他的线程此时系统的吞吐量会下降热点数据缓存永远不过期。永不过期实际包含两层意思 物理不过期针对热点key不设置过期时间逻辑过期把过期时间存在key对应的value里如果发现要过期了通过一个后台的异步线程进行缓存的构建 15. 什么是缓存穿透 缓存穿透是指用户请求的数据在缓存中不存在即没有命中同时在数据库中也不存在导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据会导致短时间大量请求落在数据库上造成数据库压力过大甚至导致数据库承受不住而宕机崩溃。 缓存穿透的关键在于在Redis中查不到key值它和缓存击穿的根本区别在于传进来的key在Redis中是不存在的。假如有黑客传进大量的不存在的key那么大量的请求打在数据库上是很致命的问题所以在日常开发中要对参数做好校验一些非法的参数不可能存在的key就直接返回错误提示。 解决方法 将无效的key存放进Redis中 当出现Redis查不到数据数据库也查不到数据的情况我们就把这个key保存到Redis中设置valuenull并设置其过期时间极短后面再出现查询这个key的请求的时候直接返回null就不需要再查询数据库了。但这种处理方式是有问题的假如传进来的这个不存在的Key值每次都是随机的那存进Redis也没有意义。 使用布隆过滤器 如果布隆过滤器判定某个 key 不存在布隆过滤器中那么就一定不存在如果判定某个 key 存在那么很大可能是存在(存在一定的误判率)。于是我们可以在缓存之前再加一个布隆过滤器将数据库中的所有key都存储在布隆过滤器中在查询Redis前先去布隆过滤器查询 key 是否存在如果不存在就直接返回不让其访问数据库从而避免了对底层存储系统的查询压力。 如何选择针对一些恶意攻击攻击带过来的大量key是随机那么我们采用第一种方案就会缓存大量不存在key的数据。那么这种方案就不合适了我们可以先对使用布隆过滤器方案进行过滤掉这些key。所以针对这种key异常多、请求重复率比较低的数据优先使用第二种方案直接过滤掉。而对于空数据的key有限的重复率比较高的则可优先采用第一种方式进行缓存。 16. 什么是缓存雪崩 如果缓在某一个时刻出现大规模的key失效那么就会导致大量的请求打在了数据库上面导致数据库压力巨大如果在高并发的情况下可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库马上又会有新的流量把数据库打死。这就是缓存雪崩。 造成缓存雪崩的关键在于同一时间的大规模的key失效主要有两种可能第一种是Redis宕机第二种可能就是采用了相同的过期时间。 解决方案 1、事前 均匀过期设置不同的过期时间让缓存失效的时间尽量均匀避免相同的过期时间导致缓存雪崩造成大量数据库的访问。如把每个Key的失效时间都加个随机值setRedisKeyvaluetime Math.random() * 10000保证数据不会在同一时间大面积失效。分级缓存第一级缓存失效的基础上访问二级缓存每一级缓存的失效时间都不同。热点数据缓存永远不过期。永不过期实际包含两层意思 物理不过期针对热点key不设置过期时间逻辑过期把过期时间存在key对应的value里如果发现要过期了通过一个后台的异步线程进行缓存的构建 保证Redis缓存的高可用防止Redis宕机导致缓存雪崩的问题。可以使用 主从 哨兵Redis集群来避免 Redis 全盘崩溃的情况。 2、事中 互斥锁在缓存失效后通过互斥锁或者队列来控制读数据写缓存的线程数量比如某个key只允许一个线程查询数据和写缓存其他线程等待。这种方式会阻塞其他的线程此时系统的吞吐量会下降使用熔断机制限流降级。当流量达到一定的阈值直接返回“系统拥挤”之类的提示防止过多的请求打在数据库上将数据库击垮至少能保证一部分用户是可以正常使用其他用户多刷新几次也能得到结果。 3、事后 开启Redis持久化机制尽快恢复缓存数据一旦重启就能从磁盘上自动加载数据恢复内存中的数据。 17.如何保证缓存与数据库双写时的数据一致性 背景使用到缓存无论是本地内存做缓存还是使用 Redis 做缓存那么就会存在数据同步的问题因为配置信息缓存在内存中而内存时无法感知到数据在数据库的修改。这样就会造成数据库中的数据与缓存中数据不一致的问题。 删除缓存、更新数据库先后都可以 18.Redis为何选择单线程 19.redis不支持数据回滚 我自身没什么大问题出问题都是你用的不好自己检查代码
http://www.dnsts.com.cn/news/123787.html

相关文章:

  • 做行业门户网站要投资多少钱网页设计收费标准
  • 桥东区住房和建设局网站太原建站公司点击查看
  • 建设常规的网站报价是多少做简历模板的网站都有哪些
  • 长沙百度租车有限公司广州百度首页优化
  • 郑州网站营销汉狮制作网站品牌公司哪家好
  • 南充做网站电话商务型网站建设
  • 淘宝上开做网站的店铺实训网站建设的心得总结
  • 花钱想贷款结果成了做网站化妆品网站建设说明
  • 天津做网站企业wordpress热门文章插件
  • 网站设计师介绍济南哪里做网站好
  • 安徽省建设干部学校网站关停网站背景设计
  • 中山小型网站建设公司网站建设方案报价
  • 长春微网站商务网站建设与维护 ppt
  • 免费模板下载网站网站建设策划书的心得
  • 科技微网站建筑网格图绘制
  • 国外有哪些设计网站有哪些问题学院网站开发竞争对手分析
  • 十堰微网站建设电话wordpress图片专辑
  • 企业网站建设 新闻宣传分类信息网
  • 网站开发能赚钱吗网站模板 山
  • 做财经类网站要许可吗郑州app开发公司
  • 电子商务旅游网站建设策划书企业黄页名单
  • 购物网站建设机构成都设计网站的公司名称
  • 竞价页面网站做优化桐城住房和城乡建设局网站
  • 商城网站的开发怎么做推广企业网站域名
  • 福建省建设资格注册中心网站视频制作软件app下载
  • zencart 网站入侵seo搜索优化费用
  • 游戏网站如何做宿迁做网站公司
  • 中航长江建设工程有限公司网站长沙关键词快速排名
  • 做彩票网站是违法的吗海宁网站设计公司
  • 服装定制网站源码腾讯公司