文章目录
一、Redis是什么?
redis是一种基于k-v键值对、存储在内存的 非关系型数据库。
二、Redis的优点
1.读取快速,QPS最高能达到10万(每秒处理10万个请求),纳秒级,是MySQL数据库的100倍;
2.线程安全
3.可持久化
4.应用场景丰富
5.性能强大,受限于内存,不是redis不够强,而是被服务器内存限制了
三、Redis 的 5 种数据类型
1.String 字符串(包含int)
2.List 可重复集合
3.set 不可重复集合
4.zest 不可重复、有序集合
5.hash 哈希散列表
四、Redis的主要应用场景
⭐网上一大推花里胡哨的应用场景,眼睛都看花了,什么消息队列、订阅与发布等等,个人觉得没必要去学,确实能实现,但这些场景没有更好的组件和工具吗?不要为了技术而技术,做开发永远要追求性能,Redis设计之初就是用来做缓存的,在缓存方面Redis才是性能之王,这里只介绍最常用的6个,基于缓存的应用场景:
1.临时数据
对临时数据、不重要的数据进行存储,无需存储数据库,用完即删。
2.热点数据
一些经常被访问、被大量客户端访问的热点数据,比如微博大瓜、秒杀商品、排行榜等等,放到缓存中,降低Mysql数据库的压力。
3.分布式锁
对于分布式应用想要给线程加锁,但又由于多服务器的特征,就需要一个线程安全的中间件存储这个锁,redis完美的符合这个要求。
4.全局主键ID
对于分库分表的场景,数据库部署在多台服务器上,单靠数据库自身的“主键不允许重复”特性无法避免主键重复,就需要一个中间件来统一管理全局主键ID。
5.计数器
频繁访问、修改,但又不是很重要的数据,允许延迟展示,文章阅读量、点赞数等,先放到缓存中,再通过定时任务同步到数据库中。
6.限流
防止恶意用户暴力破解、攻击服务器。
· 以访问者的IP或其它信息作为key,单位时间内访问次数超过N次就直接返回false,比如1秒内访问超过10次就不允许再访问。
· 限制密码错误登录次数,比如密码错误登录失败3次弹出验证码校验、失败5次就锁定账户不允许再登录。
五、Redis在Java中的简单应用(以jedis为例)
1.pom依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
2.application.properties配置
# Redis 数据库索引(默认为 0)
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
# Redis 服务器连接密码(默认为空)
spring.redis.password=
# springboot 2.0 redis默认客户端已换成lettuce
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=0
# 连接超时
spring.redis.timeout=5000
3.创建jedis对象
1)本地
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
2)指定IP
//连接指定ip的 Redis 服务,6379是redis的端口号
Jedis jedis = new Jedis("IP地址",<