Redis字符串类型的几种应用
Redis  /  管理员 发布于 7年前   1302
Redis的字符串数据类型,是最简单的一种数据类型,但它也是学好其他redis的数据类型的基础。下面介绍几种redis的应用。
限流
使用redis可以做到限流的作用。redis本身性能极高,可以用它来抵挡部分请求。
防御大流量
现在网站攻击日渐猖獗,静态的资源可以用cdn,但动态的程序如何防御。下面,展示一个redis来防御大量请求的解决方案。
基本思路是限制一个ip一定时间内请求数,比如一个ip一秒的请求数不能超过10次。
伪代码如下:
function ip_limit($cnt = 10){ $ip = $_SERVER['SERVER_ADDR']; $key = "limit:$ip:cnt"; $isExisit = $redis->set($key, 1, ['nx', 'ex'=>1]); if (!$isExisit || $redis->incr($key) <= $cnt) { // 通过 return true; } else { // 不通过 return false; }}
获取验证码频率限制
短信验证码现在已经成为了web应用的标配的,许多的地方都会需要短信验证码。如:注册时、修改密码时、一些对安全要求比较高的操作。当然,验证码获取不是免费的,所以,我们不希望用户无限制的获取验证码。
也是相同的思路,我们可以写一个获取短信验证码频率的限制应用。
完成一个一分钟内,只准获取一次验证码的应用,伪代码如下:
function code_limit($mobile, $time = 60){ $key = "limit:$mobile:cnt"; $isExisit = $redis->set($key, 1, ['nx', 'ex'=>$time]); if (!$isExisit) { // 通过 return true; } else { // 不通过 return false; }}
存放session
使用redis存放session,是现在推荐的方式,他的好处是性能高,到期自动销魂。(PHP自身的session垃圾回收机制不是可靠的,过期销魂是有概率的)。
该方式非常简单,只需在修改php.ini文件即可。
找到session.save_handler这行,修改为
session.save_handler = redis
将session.save_path修改为
session.save_path = "tcp://localhost:6379"
如何redis设置了密码的话,只需修改为
session.save_path = "tcp://localhost:6379?auth=password"
如果不是单机应用,而是分布式的话,怎么样使用redis来集中管理session呢?
也很简单。也是只要修改php.ini文件即可。如session集中管理在192.168.1.220这个机器上,其他机器的php.ini文件修改如下:
session.save_handler = redissession.save_path = "tcp://192.168.1.220:6379?auth=password"
上面只是介绍了一些redis字符串类型了应用,开发者们可以结合实践项目和自己的想象力,创造出更多的应用
以上就是Redis字符串类型的几种应用的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号