[技术博客] 用户验证码验证机制---redis缓存数据库的使用

做者:马振亚sql

问题引入

在此次的开发过程当中,咱们的需求中有一个是普通用户能够经过特定的机制申请成为社长。由于只有部分人才能验证成功,因此这个最开始想了两种思路,一个是全部用户发出申请成为社长,而后社联工做人员手动审核是否予经过用户的申请。可是这种思路的局限性就在于社联工做人员工做量比较大,须要人工审核过程比较多,比较消耗时间并且出错率比较高。后来你们讨论了一下采用了一种比较新的思路,就是社联那边只进行一次操做,提供给社长一个验证码,这个验证码的正确性由后端代码直接进行处理。后来你们讨论到验证码的失效性与不可重复性,决定把验证码的有效时长设置为10分钟(从社联申请出验证码)并且是单次验证有效(验证成功一次以后这个验证码就失效了)。数据库

初识redis

这时候咱们经过查阅资料决定了采用redis缓存数据库支持上述接口的开发,redis是Nosql数据库,是一个key-value存储系统。虽然redis是key-value的存储系统,可是redis支持的value存储类型是很是的多,好比字符串、链表、集合、有序集合和哈希。后端

进过查阅资料讨论获得使用redis这样的Nosql数据库的通常场景以下:缓存

1) 当数据量的总大小一个机器放不下时;code

2) 数据索引一个机器的内存放不下时;blog

3) 访问量(读写混合)一个实例放不下时。索引

4) 须要进行失效性控制。接口

实际应用

在这个需求场景下,主要分为验证码生成保存以及用户验证两个部分。内存

  • 验证码生成主要步骤
    • 后端随机生成10位验证码。
    • 将验证码存入redis缓存中。
    • 经过查询redis缓存进行。
  • 验证码验证的主要步骤
    • 查询redis中记录的正确验证码。
    • 若是校验成功返回成功标志,同时将redis数据库中有记录删除。
    • 若是不成功返回失败标志便可。

上述步骤用到的主要redis相关方法有set方法(存入数据库),get方法(从数据库中取值),remove方法(验证成功一次就失效,保证了单次有效性)。其中为了保持10分钟的预设有效性时间,须要在调用redis_set_cache()方法时加上时间参数。

redis_set_cache(key,value,time)
相关文章
相关标签/搜索