【原创】Spring Boot 集成 Redis 的玩法
关注“Java后端技术全栈”**
回复“面试”获取全套大厂面试资料
缓存的简单认识
在项目中存在很多地方使用缓存,缓存是我们提高系统的一项必不可少的技术,无论是前端还是后端,都应用到了缓存技术,Mysql
数据库也有使用缓存,所以认识缓存是非常有必要的。
前端使用缓存可以降低多次请求给服务端造成的压力。
后端使用缓存,可以降低数据库操作的压力,提升读取数据的性能。
前端缓存
本地缓存
网关缓存
服务端缓存
进程缓存
分布式缓存
其中我们可以使用Redis
做分布式缓存。
Redis 简单认识
Redis
是一个速度非常快的非关系型数据库(Non-Relational Database),Redis可以存储键值(key-value)数据。其中value可以用5种类型。可以将存储在内存的键值对数据持久化到硬盘上,可以使用复制特性来扩展读性能,还可以做客户端分片来扩展写性能。
为了满足Redis的高性能,它采用了(in-memory)数据集(Dataset),根据使用场景,可以通过每隔一段时间转存数据集到磁盘,或者追加没挑明了到日志来持久化。也可以禁用持久化,如果你只是需要一个功能丰富、网络传输化的内存缓存。
Redis数据模型
Redis数据模型不仅与关系型数据库不同,也不同于其他简单的NoSQL键值数据存储。
Redis数据类型类似于编程语言的基础类型数据,因此在对于咱们开发人员来说就更易于理解和使用。每个数据类型都支持适用于其类型的操作,受支持的数类型约束。
场景类型五种:
String字符串
Hash哈希
List列表
Set集合
ZSet有序集合
Spring Boot集成Redis
增加依赖
添加配置
Redis使用
请求 http://localhost:8080/setKeyAndValue 输出
OK,到此,Redis已经成功集成到Spring Boot项目中了。
集成进来后,我们就可以使用Redis来做很多事情了。
1,使用Redis来存储用户登录session
2,使用Redis的setnx和expire来做分布式锁
3,使用Redis的List来做队列
4,使用Redis的ZSet来做排行榜
5,使用自增inrc来确保不会超卖。
…..
上述这些使用场景是有前提条件的,因为没有绝对完美的技术,只能是选择相对能满足业务场景的就OK。
这里我们来做一个排行榜的场景。
Redis实现排行榜
需求是做一个用户购买理财产品金额的排行榜,相同的金额的以购买时间来排名。
写一个controller演示
时间处理工具类
启动项目,然后请求
http://localhost:8080/rank
输出
排名依据出来了。
redis的其他功能后面继续完善,本文就搞到这里。
码字不易,期待你们 点在看+分享。
推荐阅读
版权声明: 本文为 InfoQ 作者【田维常】的原创文章。
原文链接:【http://xie.infoq.cn/article/a25c66313543c7dcca1001e0c】。文章转载请联系作者。
评论