Redis的常见使用场景

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。

Redis的基本特点

读写速度快:比一般的数据库快
可以持久化:尽管redis可以持久化,但是不使用其持久化的场景也很多
Redis的数据类型

STRING: 字符串、整数或者浮点数,对整个字符串或者字符串的其中一部分执行操作,对整数和浮点数执行自增或者自减操作
LIST: 列表,从两端压入或者弹出元素,对单个或者多个元素进行修剪,只保留一个范围内的元素
SET: 无序集合
HASH: 包含键值对的无序散列表
ZSET: 有序集合,添加、获取、删除元素,根据分值范围或者成员来获取元素,计算一个键的排名,这个是支持排序的

常见使用场景

计数器:比如某公众号推送一篇文章给几千万的粉丝,我们需要记录阅读量。由于每个用户都会产生一次的阅读记录,假设有上万的用户在同1秒产生了阅读数,那么1秒要写入上万次,对于数据库来说这个写入次数是比较巨大的,会带来比较大的性能压力。这时候就可以把阅读数先保存在redis里面,由于redis的吞吐量比较大,扛住的可能性会更高一些。等数据写入的差不多了在持久化到数据库就好了;

缓存:将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。比如站点的一些全局配置,每个用户都需要来拉一次,而且内容变化的频率很低,如果放数据库的话会对数据库宝贵的计算资源造成浪费,所以可以放到redis里,用户去redis缓存里读,降低了对数据库的访问量的同学要加速了配置拉取的速度;

查找表:例如 DNS 记录就很适合使用 Redis 进行存储。查找表和缓存类似,也是利用了 Redis 快速的查找特性。但是查找表的内容不能失效,而缓存的内容可以失效,因为缓存不作为可靠的数据来源。

消息队列:List 是一个双向链表,可以通过 lpush 和 rpop 写入和读取消息。比如可以把发送邮件的场景,因为邮件服务器的qps一般来说都不是特别高,如果同时发送很多邮件的话,对邮件服务器可能产生很大的压力。我们可以把邮件发送的消息放到redis里,让邮件服务器从redis一个接一个的读取和处理。不过更专业的消息队列场景最好使用 Kafka、RabbitMQ 等消息中间件。

会话缓存: 可以使用 Redis 来统一存储多台应用服务器的会话信息。应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性以及可伸缩性。简单来说可以把登录态的一些信息也放redis里。

共同好友: Set 可以实现交集、并集等操作,从而实现共同好友等功能;

排行榜: ZSet 可以实现有序性操作,从而实现排行榜等功能;

限制验证码的发送频率:一般我们收到短信验证码的时候,应用都会限制说60秒之后重新获取,这是为了防止有人恶意刷短信验证码,毕竟发验证码是要花钱的。用redis可以非常方便的实现这个功能。我们可以把用户id记录到redis里,并设置过期时间是60秒,这样60秒内用户再请求发送的时候就会发现该用户的发送记录已存在,60秒以后由于缓存自动过期,那么就可以重新再发送了;

以上是redis的一些非常简单的使用场景了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值