Redis入门:简介

2022-01-05 15:39:33 浏览数 (1)

Redis入门:简介

1、介绍

nginx tomcat集群可以实现10万-百万的并发访问量;目前的架构不能承受如此海量的访问,瓶颈还是在数据库,尤其是查询。要想突破数据库的瓶颈,就需要使用缓存技术。

Redis是分布式的、nosql、key-value、可持久化、内存缓存数据库。

2、特点

2.1 分布式

海量数据分片存储。如下图:

2.2 nosql

not only Structured query language.

不仅仅支持关系型数据——结构化数据(json);支持非关系型数据——非结构化。

Nosql有许多种,redis是其中的一个,它们分为:

  • 列存储:Hbase、Cassandra
  • 文档存储:MongoDB
  • Key-value存储:Berkeley DB、MemcacheDB、redis。其中redis最强。
  • 图存储:Neo4j、Versant。这块基本不用。
  • Xml存储:Berkeley DB xml、XBASE。Oracle很早已经支持这种存储方式了。

结构化数据

mysql数据库中的每个表格的每条数据记录都是关系型、结构化数据。

例如:学生表格

no

name

age

gender

1

张三

35

非结构化数据

数据长度类型不固定。

例如:

《葵花宝典》: 欲练此功,必先自宫,若不自宫,也可成功,若已自宫,未必成功。

2.3 key-value

结构的特点:key自定义的值,value是原数据的切分片段。

代码语言:javascript复制
key=”《葵花宝典》”;
value=” 欲练此功,必先自宫,若不自宫,也可成功,若已自宫,未必成功。”;

2.4 可持久化

针对内存存储的重要特点;数据的恢复机制。

2.5 缓存数据库

缓存数据库可以添加的位置,可以在项目中的很多位置。

2.5.1 数据库缓存

数据库查询执行的过程包括sql语句执行,组织查询结构resultSet。

数据库缓存根据sql可以创建缓存的key,缓存已经拥有了查询过的resultSet,节省了前面的调度组织时间。

2.5.2 持久层缓存

减少从数据库获取结果和创建连接的资源消耗时间,节省了转化成对象的过程。

2.5.3 业务层和控制层

减少调用的层次。

2.5.4 缺点

如果过多的使用redis或者其他缓存的技术,容易产生数据的冗余导致内存或者磁盘存储空间过大占用。

3 缓存的作用

  • 1.减少数据库的访问压力。
  • 2.减少网络传输。
  • 3.减少数据传递层次数。

redis的引入可以适当的添加在控制层和业务层。

4 主流的缓存架构技术

4.1 Ecache

很多数据库的底层缓存都是使用ecache,并发量差。

4.2 memoryCache

曾经memoryCache市场占有率90%以上长达10年,直到redis出现,这个局面被打破。

  • 优点:速度,效率和redis不相上下。
  • 缺点:不落地、没有持久化过程,一旦缓存集群出现数据丢失的过程(宕机、灾难重启),会出现雪崩/缓存击穿(面试题)。

4.3 Redis

性能高,并发高,单实例,单线程,持久化可恢复数据能力强。

5 雪崩/缓存击穿

当海量的数据访问,请求并发,涌入集群。需要高性能的处理过程,缓存的存在对于高并发的意义非常大。如果缓存失效,海量请求访问数据库,造成数据库宕机,如果缓存数据没有恢复的情况下,重启数据库后,高并发的请求访问会导致数据库再次宕机。这种缓存失效导致的数据库重复宕机,重启,叫做缓存击穿/雪崩

解决缓存击穿/雪崩的方法:

  • 1.缓存集群永不宕机。集群中的一部分服务器一直提供访问数据的需求。
  • 2.缓存技术添加持久化的功能。Redis可以做到。

6 REDIS基础应用场景

  • 1、Web间Session共享。多个war工程共享一个Session。
  • 2、分布式缓存

因为redis为键值对,而且它提供了丰富的adapter可以支持到C、.net、java客户端,因此对于异质平台间进行数据交换起到了作用,它可以用作大型系统的分布式缓存,并且其setnx的锁常被用于秒杀、抢红包这种电商活动场景中。

0 人点赞