前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis简述

redis简述

作者头像
姜同学
发布2022-10-27 16:13:59
2680
发布2022-10-27 16:13:59
举报
文章被收录于专栏:姜同学姜同学
什么是Redis

Redis是支持分布式的可持久化的内存缓存的以kay-value形式存储的nosql的非关系型数据库

相关解释
代码语言:javascript
复制
nosql:
not only structured query langguage 
redis可以大量存储非结构化数据
结构化数据:属性固定的 例如学生信息 建筑信息。
非结构化数据:网页 日志文件。
代码语言:javascript
复制
key-value :
处理非结构化数据的常见结构,key值是自定义的代表业务的信息,
value存储的是真正的数据
代码语言:javascript
复制
非关系型数据库:
存储处理非关系型的数据
代码语言:javascript
复制
可持久化:
redis采用内存为介质来提高访问速度。
优点:对数据库的访问绕过了磁盘的io所以很快。
缺点:a.内存容量小(数据库可以存储万条数据,
		内存可能只能存储万条)
      b.断电内存数据丢失,容易造成内存数据的雪崩
缺点这么明显,我们为什么还要用redis,当然就是因为redis提供了可持久化
redis会使用配置的策略将内存中的数据存储到磁盘中,数据丢失,重新启动读取
磁盘数据即可恢复。虽然一台服务器内存容量小,但是redis支持分布式,可以组成
redis集群。
代码语言:javascript
复制
分布式:redis支持网络通信,就可以通过搭建多个服务器分担压力。每个redis在集群中
都可以处理不同的数据,整体处理的更多。相当于整体将数据分到了不同的节点去处理,实现
了高可用的分布式结构(哨兵集群,hash一致性,redis-cluster结构)
代码语言:javascript
复制
什么是雪崩。
不可抗力倒置的数据来源丢失(数据库,缓存),造成了大量的数据丢失(缓存未命中)
海量请求涌入,倒置系统宕机,这是选择将系统重启,如果数据恢复还好,可以继续使用
如果数据未恢复将会造成宕机,重启的死循环,最后导致整个系统不可用,解决雪崩的最重要的
手段就是缓存技术支持可持久化。

缓存穿透

对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。

黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。

举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请求 id 全部都是负数。这样的话,缓存中不会有,请求每次都“视缓存于无物”,直接查询数据库。这种恶意攻击场景的缓存穿透就会直接把数据库给打死。

解决方式很简单,每次系统 A 从数据库中只要没查到,就写一个空值到缓存里去,比如 set -999 UNKNOWN。然后设置一个过期时间,这样的话,下次有相同的 key 来访问的时候,在缓存失效之前,都可以直接从缓存中取数据。

缓存击穿

缓存击穿,就是说某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。

解决方式也很简单,可以将热点数据设置为永远不过期;或者基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完缓存之后,再释放锁,进而其它请求才能通过该 key 访问数据。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-06T,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Redis
  • 相关解释
  • 缓存穿透
  • 缓存击穿
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档