大咖分享

实操演练解读非关系型数据库—Redis
北大青鸟总部

摘要:非关系型数据库(NoSQL)通常用于存储那些类型不固定的,也没有什么规律的数据。现在的企业每天都产生大量的数据过程中,非关系型数据库的应用非常广泛,应用场景也非常多。

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

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

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

这个时期的关系型数据库得到了较为广泛的关注和应用,网站访问量谈不上什么高并发、更别说什么用户体验了。

但是转眼到现在,中国的互联网发展已经是发生了天翻地覆的变化,也早已经不是当年那个“吴下阿蒙”。在如今这个不提三高(高并发、高可用、高性能)都不好意思说自己是个程序猿。

现在单纯的依靠关系型数据库已经无法满足的我们的业务需求了,更何况当今在云计算、大数据、人工智能盛行的时代,对技术的需求也更加的多元化。

现在网络上每天都会产生庞大的数据,这些数据有很大一部分是由关系型数据库来处理,其严谨成熟的数学理论基础使得数据建模和应用程序编程更加简单。

然而,由于数据量级很大而且包含有大量的无规律的数据,而我们如果想要更好的利用这些数据,对数据的处理和存储的重要性也越来越高,如果还仅仅依赖关系型数据库显然是不太现实的。所以,此时非关系型数据库(NoSQL)就应运而生了,


接下来让我们看看什么是非关系型数据库。


所谓非关系型数据库,其实是相对于关系型数据库而说的,我们都知道关系型数据库通常都是处理一些结构化的数据,这些数据通常都是有某些对应关系。

非关系型数据库(NoSQL)通常用于存储那些类型不固定的,也没有什么规律的数据。现在的企业每天都产生大量的数据过程中,非关系型数据库的应用非常广泛,应用场景也非常多,比如:缓存等,目前比较常用的非关系型数据库有


  • Redis

  • Memcache

  • MongoDb

  • HBase


今天咱们就为大家解读其中一个非常优秀且用的非常多的非关系型数据库-Redis。



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


  • string(字符串)

  • hash(哈希)

  • list(列表)

  • set(无序集合)

  • zset(sorted set:有序集合)


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



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


开发环境介绍

首先介绍一下我们的开发环境,这里咱们是基于Java语言使用IDEA做为开发工具,使用Spring Boot来集成Redis。(Redis的安装内容,大家可以按照自己的习惯使用Windows版、Linux版本都可以。)


使用Spring Data Redis操作Redis

Java中操作Redis的方案很多,我们使用目前最主流的Spring Boot Redis,从名称上我们就可以看出来,这又是Spring对操作Redis的客户端的封装,没错Spring就是这么优秀。

我们知道在SpringBoot中默认集成的就是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



添加Redis配置信息

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



实战操作

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



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


  • redisTemplate.opsForValue() 操作string

  • redisTemplate.opsForHash() 操作hash

  • redisTemplate.opsForList() 操作list

  • redisTemplate.opsForSet() 操作set

  • redisTemplate.opsForZSet() 操作有序set


实战测试结果如下:



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


相关阅读
终于搞懂分布式锁是什么了!
双十一预热之秒杀系统专场
原来缓存也会雪崩、击穿、穿透啊!
淘宝京东抖音微信都在用的Redis究竟是什么样呢?
为什么大家纷纷都采用分布式架构呢?
热门推荐