这不是一篇搭建教程,因为用Redis实现布隆过滤器很简单,Redis本身就支持bitmap这种数据结构,通过setbit和getbit即可实现一个Bloom Filter。本文要讨论的是测试过程中,或者出问题时,要怎么优雅的把数据清除。
Java本身有bitSet这种数据结构来支持布隆过滤器,而如果要清除的话,重启服务器,或者自身方法的clear()都可以。然而在序列化的数据库中,一旦存入成千上万个位数据到Redis后,千万不要期待使用循环的方式一一清空bitmap的数据,当然有一种非常简单粗暴,那就是flashdb!!
这里想提出的是最简单,然而我以前居然没想到的方法。那就是给bitmap的key设置过期时间,只要执行
EXPIRE "bitmap的key值" 0
1
1
那么这个bitmap的所有已设置的位就能都清空了!!执行时间不超过1秒。这算是过期时间的一个妙用吧,以前一直都只是简单的当成过期时间而已,没想到在删除数据方面非常高效。