文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis字符串类型的应用场景

2024-04-02 19:55

关注

这篇文章运用了实例代码展示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 = redis
session.save_path = "tcp://192.168.1.220:6379?auth=password"

以上就是Redis字符串类型的几种应用场景,如果在日常工作遇到这个问题,希望你能通过这篇文章解决问题。如果想了解更多相关内容,欢迎关注亿速云行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯