| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis -> 正文阅读 |
|
[大数据]Redis |
??之前不停听说redis,但一直很好奇不知道是什么。借着这篇文章,简单的了解一下。希望能说明白以下三个问题: 一、redis是什么???第一句话redis是数据库 二、redis有什么优点???这部分的内容阐述方式,是先介绍redis的优点,然后围绕每条优点来详细介绍redis的实现,分析如何提供功能的。 ??1.为什么速度快???1)基于内存做操作 ??2)单进程单线程 ??3)使用非阻塞的多路复用IO模型 ??4)主从配置 ??2.为什么持久???从上面了解到redis是基于内存存储结构的,内存是DRAM,每次关机就是刷新内容,那它是怎么保持持久性的呢? ??其实redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,虽然内存里的数据没有,但Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化。但另一个问题就来了:是咋把数据写到磁盘里的?为了防止发生数据丢失,有一个内置的持久性模块,它会在给定的情况下将内存状态写入磁盘上的转储文件,转储文件在系统启动时加载,一旦启动并运行,数据就可用于操作,所以,没有数据丢失。这个持久化模块和redis的持久化策略有关,redis有两种策略: ??1)RBD策略(默认策略) ??3.丰富的数据结构,应用场景多??redis底层支持的五种数据类型:String,Hash,List,Set,ZSet。基于五种数据类型又有多种数据结构。因为其支持多种数据结构,应用场景丰富,也被称为数据结构数据库。 ??应用场景当然有很多啦,但其实我没用过,理解的也不是很深刻,简单做下记录: ??4.安全性高:??安全性其实是数据库应该保障的首要因素,毕竟希望读取的是正确的数据,否则再快也没用,redis执行所有操作都是原子操作,不会有乱序执行造成的结果差异化,这样就可以保证安全性,这也对高并发场景有天然的优势。 ??那redis这么好,是不是就没有什么问题呢?当然也不是,下面介绍下redis常见的几个问题: 三、redis的常见问题??Redis常见问题1:雪崩??概念:在高并发下,缓存层无法处理请求,所有的请求会涌向存储层,短时间内的高并发请求可能会导致存储层挂机,称之为“Redis雪崩”。 ??Redis常见问题2:缓存穿透??概念:多次访问那些redis里没有,数据库也没有的数据。导致数据库搜索压力过大,因为redis没有,所以无法拦截,直接穿透到数据库而得名 ??Redis常见问题3:缓存击穿??概念:热点数据一直在被高并发访问,突然失效了,大量请求直接给到数据库,数据库崩了 参考:Redis的雪崩,击穿,穿透详解_童先森的blog的博客-CSDN博客_redis击穿 ??还有一个问题就是redis是基于内存的,众所周知内存相比磁盘来说空间很少,那满了怎么办,找个时候就需要淘汰策略。 ??redis有六种淘汰策略: ??2)allkeys-lru:从所有key中使用LRU算法进行淘汰(LRU算法:即最近最少使用算法) ??3)volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰 ??4)allkeys-random:从所有key中随机淘汰数据 ??5)volatile-random:从设置了过期时间的key中随机淘汰 ??6)volatile-ttl:在设置了过期时间的key中,淘汰过期时间剩余最短的 ??不过redis也不是万能的,具体情况还是要具体分析,redis毕竟是缓存机制,如果项目对于缓存要求是强一致性,就不要使用redis。选择一个合适的数据库,灵活多变才是真理。 ??理论学习总是浅尝辄止,还是要使用才能深刻理解原理。 参考资料:Redis是什么-电子发烧友网 (elecfans.com) 因作者水平有限,如有错误之处,请在下方评论区指正,谢谢! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:42:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |