Centos7의 Redis 5.x에 Bloom 필터(BloomFilter) 설치 및 사용
1 进入redis安装目录:cd /usr/local/redis-5.0.4 2. 下载插件: git clone https://github.com/RedisBloom/RedisBloom.git # https://github.com/RedisBloom/RedisBloom 如果慢 可以使用外网访问 3. 进入插件目录: cd redisbloom/ (重命名之前为RedisBloom) 4. 执行: make 5. 修改 redis.conf,增加配置: loadmodule /usr/local/redis-5.0.4/redisbloom/redisbloom.so 6. 启动redis: src/redis-server ./redis.conf 7. 连接客户端: src/redis-cli -p 6379 8. 测试,先后执行: bf.add users francis bf.exists users francis 9. 更多内容可参考: https://oss.redislabs.com/redisbloom/
python 사용
1 첫 번째 방법은 기본 문을 사용하여 redis에 연결하는 것
from redis import StrictRedis from django.conf import settings class BfRedis: def __init__(self, db, host=settings.BF_REDIS_HOST, port=settings.BF_REDIS_PORT, password=settings.BF_REDIS_PASSWORD): self.client = StrictRedis(db=db, host=host, port=port, password=password) def bf_init(self, key: str, error_rate: float(), size: int): res = self.client.execute_command('BF.RESERVE', key, error_rate, size) return res def bf_exists(self, key, value): res = self.client.execute_command('BF.exists', key, value) return res def bf_add(self, key, value): return self.client.execute_command('BF.add', key, value) def bf_local_init(self, task_id, error_rate=0.0001, size=10000): """ """ key = f'bf_{task_id}' if self.client.exists(key): return True res = self.bf_init(key, error_rate, size) return res def bf_local_add(self, task_id, value): key = f'bf_{task_id}' res = self.bf_add(key, value) return res def bf_local_exists(self, task_id, value): key = f'bf_{task_id}' res = self.bf_exists(key, value) return res def bf_local_del(self, task_id): key = f'bf_{task_id}' res = self.client.delete(key) return res # bf_redis = CrawlRedisClient(0)
python 사용 도구 모듈
python2安装:pip install pybloom python3安装:pip install pybloom-live
demo
from pybloom import BloomFilter, ScalableBloomFilter bf = BloomFilter(capacity=10000, error_rate=0.001) bf.add('test') print 'test' in bf sbf = ScalableBloomFilter(mode=ScalableBloomFilter.SMALL_SET_GROWTH) sbf.add('dddd') print 'ddd' in sbf
BloomFilter
是一个定容的过滤器
,error_rate是指最大的误报率是0.1%,而ScalableBloomFilter
是一个不定容量的布隆过滤器
,它可以不断添加元素。add
요소를 추가하는 방법이 있습니다. 요소가 이미 블룸 필터에 있으면 true를 반환하고 요소를 필터에 추가합니다. 요소가 필터에 있는지 확인하려면 in 연산자를 사용하면 됩니다.
위 내용은 Mac에서 Redis5 BloomFilter 설치 및 Python과 함께 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!