Redis应用场景介绍

昨天和一位前辈聊天,谈到关于redis到场景问题,这里做一下小结。
Redis呢,百科这样说,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
在官方上讲的很仔细,这里就简单说一下redis几个特点,因为场景是由特点决定的嘛。

单线程、并发转串行、强大的QPS、基础类型的数据结构是比较独秀的特点;

单线程呢,可以引申出计数器;

由于单线程,可以避免并发问题,保证不会出错,而且100%毫秒级性能!(注意持久化,redis是内存数据库,存储于内存中)

并发转串行呢,是中间件消息处理,秒杀场景;

由于redis把数据添加到队列是返回添加元素在队列的第几位,所以可以做判断用户是第几个访问这种业务

秒杀系统,基于redis是单线程特征,防止出现数据库“爆破”

强大的QPS,是热缓存(并发场景需注意同步),缓存session判断是否重复请求;

热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,比memcached还提供了丰富的数据类型可以用

验证前端的重复请求(可以自由扩展类似情况),可以通过redis进行过滤:每次请求将request Ip、参数、接口等hash作为key存储redis(幂等性请求),设置多长时间有效期,然后下次请求过来的时候先在redis中检索有没有这个key,进而验证是不是一定时间内过来的重复提交

数据结构呢,排行榜场景,大数据处理场景;

排行榜可以使用redis中的sorted set数据类型

判断大量对象的状态,通过位图的方式进行构建
redis内构建一个足够长的数组,每个数组元素只能是0和1两个值,然后这个数组的下标index用来表示我们上面例子里面的用户id(必须是数字哈),那么很显然,这个几亿长的大数组就能通过下标和元素值(0和1)来构建一个记忆系统

其中还谈到了关于区分服务之外特定的网站的跨域访问问题(钓鱼网站),可以通过http的heaer中referer参数(浏览器在向 web 服务器发送一个 http 请求的时候,服务器会把 http 的请求包装成一个 request 对象,在这些请求里面就包括 referer,告诉服务器,该请求来自哪里。)进行判断,从而保证只有白名单中的域名可以访问。(referer除了在这里用到外,一般还经常用于链接访问量的统计。)

读万卷书不如行万里路,行万里路不如阅人无数。不断积累,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏小言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值