redis简述
Redis 简述
2023-06-13 09:14:08 时间
什么是Redis
Redis是支持分布式的可持久化的内存缓存的以kay-value形式存储的nosql的非关系型数据库
相关解释
nosql:
not only structured query langguage
redis可以大量存储非结构化数据
结构化数据:属性固定的 例如学生信息 建筑信息。
非结构化数据:网页 日志文件。
key-value :
处理非结构化数据的常见结构,key值是自定义的代表业务的信息,
value存储的是真正的数据
非关系型数据库:
存储处理非关系型的数据
可持久化:
redis采用内存为介质来提高访问速度。
优点:对数据库的访问绕过了磁盘的io所以很快。
缺点:a.内存容量小(数据库可以存储万条数据,
内存可能只能存储万条)
b.断电内存数据丢失,容易造成内存数据的雪崩
缺点这么明显,我们为什么还要用redis,当然就是因为redis提供了可持久化
redis会使用配置的策略将内存中的数据存储到磁盘中,数据丢失,重新启动读取
磁盘数据即可恢复。虽然一台服务器内存容量小,但是redis支持分布式,可以组成
redis集群。
分布式:redis支持网络通信,就可以通过搭建多个服务器分担压力。每个redis在集群中
都可以处理不同的数据,整体处理的更多。相当于整体将数据分到了不同的节点去处理,实现
了高可用的分布式结构(哨兵集群,hash一致性,redis-cluster结构)
什么是雪崩。
不可抗力倒置的数据来源丢失(数据库,缓存),造成了大量的数据丢失(缓存未命中)
海量请求涌入,倒置系统宕机,这是选择将系统重启,如果数据恢复还好,可以继续使用
如果数据未恢复将会造成宕机,重启的死循环,最后导致整个系统不可用,解决雪崩的最重要的
手段就是缓存技术支持可持久化。
缓存穿透
对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。
黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。
举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请求 id 全部都是负数。这样的话,缓存中不会有,请求每次都“视缓存于无物”,直接查询数据库。这种恶意攻击场景的缓存穿透就会直接把数据库给打死。
解决方式很简单,每次系统 A 从数据库中只要没查到,就写一个空值到缓存里去,比如 set -999 UNKNOWN。然后设置一个过期时间,这样的话,下次有相同的 key 来访问的时候,在缓存失效之前,都可以直接从缓存中取数据。
缓存击穿
缓存击穿,就是说某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。
解决方式也很简单,可以将热点数据设置为永远不过期;或者基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完缓存之后,再释放锁,进而其它请求才能通过该 key 访问数据。
相关文章
- 在Redis中如何保存时间序列数据详解
- 实时同步:借助Redis实现数据同步(redis数据实时同步)
- Redis实现唯一索引的有效方式(redis唯一索引)
- Redis与NoSQL:来自数据库的友好探索(redis和nosql)
- Redis:加速你的内存数据库(redis内存数据库)
- 深入了解 Redis:高效的数据缓存机制(redis数据缓存机制)
- 极致性能,测试Redis配置的最佳之路(性能测试查redis配置)
- 如何快速集成Redis(怎么集成redis)
- 虚拟机中启动Redis一步一步完成(虚拟机如何启动redis)
- 拥抱开源,享受群辉Redis之美(群辉redis)
- 深入探究使用Redis查询语句(查询redis语句)
- 致命的Redis命令隐患无处不在(一个致命的redis命令)
- 技术单机Redis实现高并发读写的新技术(单机redis高并发读写)
- 存储至Redis时有回传值吗(存redis有返回值吗)
- 释放空间,优化Redis内存清理技巧(内存清理redis)
- 以Redis存储图片实现高效图片体验(图片保存在redis)
- Redis实现高效数据写入(redis高效写入)
- 灵活的Redis饱和策略解决方案(redis 饱和策略)
- Redis集群极大提升数据库性能的神器(redis集群吧)
- 管理利用Redis实现高效的队列信息管理(redis 队列信息)
- Redis中Set值重复的检测方式(redis重复set)
- 警惕Redis连接数超标危险(redis 连接数太多)
- Redis远程连接遭遇拒绝(redis远程拒绝连接)
- 如何使用Redis搭配密码访问(redis设置密码后访问)