通过技术派发文章的时候,发文章会先通过审核,只有通过审核在会在网站上进行展示。是不是所有的作者都要经过审核呢?
当然不是,在这里做了一个白名单,在白名单中的用户发文之后是不需要进入审核的,可以直接上线。
问题的产生的疑问?
为什么要进行审核?
如后台文章列表
文章参差不齐,有的值得点赞、收藏,有的可能有违规的内容,还有的文章不符合网站的主题要求等,若不经过审核直接上线,会导致网站的文章质量下滑。作为一个交流的学习型的网站社区,审核是必不可少的。
白名单如何实现的?
对作者添加白名单有很多可选方案
配置文件写死(相当于硬编码方式)
- 优点:简单
- 缺点:不灵活,每次改动都需要改代码发版,基本上不适用实际生产项目
数据库配置一个白名单
- 优点:灵活,实用性强
- 缺点:实现有点重、难
基于redis的set实现白名单
- 优点:实现简单,轻量
- 缺点:依赖于redis
本项目的白名单就是基于redis的set来实现的,下面来看一下详细实现策略。
redis实现白名单
对于使用redis来实现白名单,最容易想到的数据结构就是set。
set基本知识点
首先熟悉一下redis中的set的相关命令操作
添加
#向集合中添加多个成员
sadd key val1 val2
集合数量
scard key
判断集合是否包含元素val
sismember key val
返回1表示在里面 0表示不再里面
返回集合所有成员
smembers key
随机移除集合中的一个元素
spop key
随机返回集合中的几个元素
srandmember key count
删除集合中成员
srem key val
简单演示一下
集合除上述基本操作之外,还支持多集合之间的相互操作
差集
返回第一个集合以其他集合之间的差异
sdiff key1 key2 key3