基于Redis的Set实现黑白名单的过滤校验器

本文介绍了如何利用Redis的Set数据结构实现高并发场景下的用户黑名单过滤器。通过将黑名单数据存储到Redis中,利用`sismember`命令查询用户是否在黑名单内,以提升性能并避免数据库瓶颈。文章包含实现用户黑名单接口、定义测试Controller以及从MySQL同步黑名单到Redis的步骤。

基于Redis的Set实现黑白名单的过滤校验器

黑白名单过滤器在实际开发中有很多种,比如:用户黑名单,IP黑名单等。在一些场景下,如果仅仅通过数据库DB来进行过滤处理。在并发量小的情况下是没有问题。

但是如果在高并发的场景下,可能会出现性能瓶颈,这时采用redis来实现是最佳的选择方案。如何进行开发和处理呢?

答案:redis中的数据结构 set。

  • 把黑名单的用户数据放入到redis的集合中。
  • 在登录、评价或在一些需要限制的地方,通过sismember命令来查询用户是否在黑名单列表中,如果存在就返回1,不存在就返回0。
sadd user_black_items 1 2 3
sismember user_black_items 1

1、实现用户黑名单

目标接口的实现:

  • 添加用户到黑名单
  • 判断用户是否在黑名单中
  • 将用户移除黑名单
package com.example.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

/**
 * @Auther: 长颈鹿
 * @Date: 2021/08/21/13:25
 * @Description:
 */
@Service
public class BlackUserListService {
   
   

    private final static Logger log 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南宫拾壹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值