数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别

背景介绍

话说在互联网发展的早期,那还是一个各路军阀混战,实战为王的时代,没有所谓正规军,搞定问题才是王道。

当然,那个时期也没有这么多问题,毕竟那个时期,互联网还是个新鲜的词汇,能被称作是“网民”的人也都是稀有物种,上网多半是大户人家才玩的起的高端奢侈品。

从技术的角度来看,彼时还处在Web应用发展的初期,互联网技术架构还是最原始的单体架构,网民数量很少,一个服务器完全足够扛起用户访问的压力。

那个时期的关系型数据库得到了较为广泛的关注和应用,网站访问量谈不上什么高并发、更别说什么用户体验了,能玩得起就已经是完胜上亿中国人了。

数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别_第1张图片

不过现在,中国的互联网已经发生了天翻地覆的变化,也早已不是当年那个“吴下阿蒙”,在这个不提三高(高并发、高可用、高性能)都不好意思说自己是个程序猿的时代,单纯的依靠关系型数据库已经无法满足我们的业务需求了,更何况当今在云计算、大数据、人工智能盛行的时代,对技术的需求也更加的多元化;现在网络上每天都会产生庞大的数据,这些数据有很大一部分是由关系型数据库来处理,其严谨成熟的数学理论基础使得数据建模和应用程序编程更加简单。

然而,由于数据量级很大而且包含有大量的无规律的数据,而我们如果想要更好的利用这些数据,就要做好对数据的处理和存储,如果还仅仅依赖关系型数据库显然是不太现实的,因此,非关系型数据库(NoSQL)就应运而生了(好像所有技术都是这么来的,技术诞生通常是为了要解决企业某些业务需求),先来看看什么是非关系型数据库

非关系型数据库(NoSQL)

所谓非关系型数据库,其实是相对于关系型数据库而言的,我们都知道关系型数据库通常都是处理一些结构化的数据,这些数据通常都是有某些对应关系; 而非关系型数据库(NoSQL)通常用于存储那些类型不固定的,也没有什么规律的数据。企业每天都产生大量的数据,非关系型数据库的应用非常广泛,应用场景也非常多,比如:缓存等,目前比较常用的非关系型数据库有:

Redis

• Memcache

• MongoDb

• HBase

今天咱们就先来了解其中一个非常优秀、应用也非常多的非关系型数据库-Redis

数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别_第2张图片

非关系型数据库之Redis

提到Redis可谓是无人不知无人不晓,当然是在程序猿这个可爱的群体中;不管你是从事Python、Java、Go,还是世界上最好的语言PHP开发,Redis都应该是一个比较熟悉的中间件产品。Redis是一个 Key-Value 存储结构,它支持存储的 value 类型非常丰富,包含:

• string(字符串)

• hash(哈希)

• list(列表)

• set(无序集合)

zset(sorted set:有序集合)

在Java开发过程中Redis的应用场景也非常多,比如:缓存、秒杀、分布式锁等;接下来咱们就来一睹Redis芳容。

数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别_第3张图片

Redis实战篇

俗话说的好:"光说不练假把式,光练不说傻把式,连说带练全把式",所以接下来,咱们就连说代练的实操一把

开发环境介绍

首先介绍一下我们的开发环境,这里是基于Java语言使用IDEA做为开发工具,使用Spring Boot来集成Redis。

Redis的安装内容,大家可以按照自己的习惯,使用Windows版、Linux版本都可以。

使用Spring Data Redis操作Redis

Java中操作Redis的方案很多,我们使用目前最主流的 Spring Boot Redis,从名称上我们就可以看出来,这又是Spring对操作Redis的客户端的封装,没错Spring就是这么优秀;我们知道在Spring Boot中默认集成的就是 Spring Data Redis,它针对 Redis 提供了非常方便的操作模板类 RedisTemplate ;那么接下来我们就来看看 Spring Boot 中 Spring Data Redis 的具体用法。

Tips:

在spring中凡是以XxxTemplate命名的类,都是Spring提供的操作xxx的模板类

如:RedisTemplate 就是操作Redis的模板类

创建项目工程

使用Spring Initializr创建Spring Boot 基础工程,引入 Redis 依赖有两种方式:

1. 直接在pom文件中加入redis依赖

2. 在创建项目的时候直接勾选Spring Boot Redis

数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别_第4张图片

添加Redis配置信息

在application.properties中添加redis的相关配置信息

数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别_第5张图片

实战操作

接下来咱么来编写一个测试类,存储一个字符串类型的数据,并且取出来验证是否存储成功

数据库:5分钟了解“关系型数据库”与“非关系型数据库”的区别_第6张图片

RedisTemplate模板类提供了对5种数据结构操作的方法,其他的数据类型大家感兴趣可以自己去试下,使用方式都是一样的

redisTemplate.opsForValue()  操作string

• redisTemplate.opsForHash() 操作hash

• redisTemplate.opsForList() 操作list

• redisTemplate.opsForSet() 操作set

• redisTemplate.opsForZSet() 操作有序set

我看下测试结果如下:

我们从redis中取出的数据和存储的数据是一样的,说明我们在spring中使用Spring Data Redis是成功的,是不是很简单呢,马上动手练练吧。

你可能感兴趣的:(技术文章)