Redis大全(概念与下载安装)

目录

一、概念

1.非关系型数据库(NoSQL)的介绍

2.什么是redis

3.redis的作者

4.Redis的特点

5.redis的应用场景

6.高度概括知识

一、二 缓存穿透、缓存击穿、缓存雪崩的概念

(一)缓存穿透

(二)缓存击穿

 (三)缓存雪崩

二、下载安装Redis操作步骤 


一、概念

1.非关系型数据库(NoSQL)的介绍

 答:随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站的高并发和纯动态网站已经显得力不从心。NoSQL数据库(非关系型数据库)的产生就是为了解决大规模集合多重数据种类带来的挑战,尤其是大数据应用难题

2.什么是redis

答: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的非关系型数据库。Redis的数据都基于缓存的,所以很快,每秒可以处理超过10万次读写,是已知性能最快的Key -Value DB。也可以实现写入磁盘中,保证了数据的不丢失,而且Redis的操作是原子性的。

3.redis的作者

答: redis的作者,他叫Salvatore Sanfilippo,来自意大利的西西里岛,现在居住在卡塔尼亚。目前供职于Pivotal公司。

4.Redis的特点

(1)性能极高--(redis读取速度是110000次/s,写入的速度是81000次/s)

(2)丰富的数据类型(String、List、Hash、Set、Ordered Set).

(3)原子--Redis的所有操作都是原子性的,就是要么成功执行要么失败完全不执行

5.redis的应用场景

缓存、排行、计数器应用、分布式锁、社交网络、消息队列、共享Session、位操作

6.高度概括知识

(1)基于内存实现的。因为内存要比用磁盘读写的MySQL速度要快很多。

(2)高效的数据结构。Redis 支持多种数据数据类型,每种基本类型,可能对多种数据结构。

(3)字符串长度处理。

(4)空间预分配。SDS修改和空间扩充,会额外分配未使用的空间,减少性能损耗。

(5)惰性空间释放。SDS 缩短时,不是回收多余的内存空间,而是free记录下多余的空间,后续有变更,直接使用free中记录的空间,减少分配。

(6) 二进制安全。Redis可以存储一些二进制数据,在C语言中字符串遇到'\0'会结束,而 SDS中标志字符串结束的是len属性。

(7)I/O 多路复用。多路I/O复用技术可以让单个线程高效的处理多个连接请求,而Redis使用用epoll作为I/O多路复用技术的实现。并且,Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间。

(8)单线程模型。Redis是单线程模型的,而单线程避免了CPU不必要的上下文切换和竞争锁的消耗。

(9)虚拟机内存机制。Redis自己构建了VM机制 ,不会像一般的系统会调用系统函数处理,会浪费一定的时间去移动和请求。

(10)redis持久化。Redis是基于内存的非关系型K-V数据库,既然它是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了持久化,即把数据保存到磁盘。

一、二 缓存穿透、缓存击穿、缓存雪崩的概念

正常的缓存请求方式:读取请求过来了,然后去缓存区域查询有没有,缓存有对应的值就直接命中返回。

如果去缓存区域查询没有,就去查询数据库,然后再把数据库的值更新到缓存,再返回

(一)缓存穿透

读请求访问时候,缓存和数据库都没有这个值,但是每次还是会到数据库中先查询一下。(没有该key

产生的原因

(1)业务设计的不合理:大多数用户没有开守护,但是每个请求都去查询缓存,查询某个用户有没有守护。

(2)业务/运维/开发失误的操作:比如缓存和数据库的数据都被删了

(3)黑客的非法请求攻击:黑客故意捏造大量非法请求,去读取不存在的业务

解决办法

(1)使用布隆过滤器快速判断数据是否存在。即一个查询请求过来时,先通过布隆过滤器判断值是否存在,存在才继续往下查。

(2)如果查询数据库为空,可以给缓存设置个空值,或者默认值。但是如果有写请求进来的话,需要更新缓存,以保证缓存一致性。同时,最后给缓存设置适当的过期时间。(常用)

(3)如果是非法请求,我们在API入口,对参数进行校验,过滤非法值。

(二)缓存击穿

 指热点的key在某个时间点过期,而恰好这个时候大量的并发请求来访问这个热点key,然后大量请求到了数据库。(单一key个过期

解决办法:

(1)使用互斥锁。缓存失效时候,不是立即去加载数据库的数据。而是先使用某些成功带成功返回的原子操作命令去操作,再去加载数据库和设置缓存。否则就重试去获取缓存。

(2)永不过期。没有设置过期时间,但是热点数据快要过期时,异步线程去更新和设置过期时间。

 (三)缓存雪崩

指缓存中数据大批量到过期时间,而查询数据量巨大,请求都直接访问数据库,引起数据库压力过大甚至down机。(大量key过期

解决办法:

(1)通过均匀设置过期时间解决,即让过期时间相对离散一点。如采用一个较大固定值+一个较小的随机值,5小时+0到1800秒

(2)Redis 故障宕机也可能引起缓存雪奔。这就需要用Redis高可用集群

二、下载安装Redis操作步骤 

 Windows下载安装Redis的详细步骤_云边的快乐猫的博客-CSDN博客

如果你觉得本篇文章对你有所帮助的,多多支持吧!!!

点赞收藏评论,抱拳了!

猜你喜欢

转载自blog.csdn.net/m0_52861000/article/details/129172825