第六篇笔记 Redis相关知识 |青训营

69 阅读3分钟

在昨天复习存储系统和数据库的基础上,为了解决高并发情况下在短时间内完成大量读写操作的要求,redis技术逐步发展起来,成为数据库相关知识中不可或缺的重要板块.

老师在介绍Redis时提到了以下两点原因:

1.需要存储的数据,由原先的单表二维,逐步演化到分库分表,复杂性大幅提升

2.单机数据库向集群化的发展趋势,主要是因为处理数据量的快速增加和大量读写的操作压力

Redis的基本原理可以简单概括:

1.坚持数据从内存中读写

2.数据被保存到硬盘上防止重启导致数据丢失 其中增量数据保存AOF文件 全量数据为RDB文件

3.使用单线程处理所有操作命令

Redis是现在最受欢迎的NoSQL数据库之一,Redis作为一个使用ANSIC编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,其具备如下特性: 1.基于内存运行,性能高效

2.支持分布式,理论上可以无限扩展·key-value存储系统

3.开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

相比于其他的数据库类型,Redis具备的独特优点是:

1.C/S通讯模型。

2.单进程单线程模型。

3.丰富的数据类型·

4.操作具有原子性

5.持久化

6.高并发读写

7.支持lua脚本

在后面的案例介绍中,老师通过连续签到,计数,排行榜等实际应用让我们对Redis在开发中的实际作用更加明晰,不过使用Redis也要注意一些问题,否则可能会导致很严重的后果

1.击穿

概念:在Redis获取某一key时,由于key不存在,而必须向DB发起一次请求的行为,称为“Redis击穿”。

引发击穿的原因:

1)第一次访问

2)恶意访问不存在的key·Key过期

合理的规避方案:

1)服务器启动时,提前写入

2)规范key的命名,通过中间件拦截

3)对某些高频访问的Key,设置合理的TTL或永不过期

2.雪崩

概念:Redis缓存层由于某种原因宕机后,所有的请求会涌向存诸层,短时间司内的高并发请求可能会导致存储层挂机,称之为"Redis雪崩”。

合理的规避方案:

1)使用Redis集群

2)限流

对Redis的学习,我之前在java web 开发中只是停留在跟着文章下载应用解决问题的阶段,算是"知其然不知其所以然",Redis作为一种NOSQL类型的数据库,在大规模集群管理和快速读写等方面具有突出的性能,帮助我们开发过程更加顺利.