Skip to main content

去重过滤器,提供常见的去重方案,开发便捷、性能极高。

Project description

简介

去重过滤器,提供常见的去重方案,开发便捷、性能极高。

去重方案

种类 去重方案 说明 特点 缺点 置出方案
Memory MemoryFilter 基于内存集合类型实现 准确性高 不能持久化 随机删除
File FileFiler 基于文件+集合类型实现 准确性高 本地内存和存储占用大 利用文件指针区间删除
Redis RedisBloomFilter
AsyncRedisBloomFilter
基于Redis Bitmap和布隆过滤器算法实现 占用内存极小 有误判的情况且不容易删除元素 随机删除
RedisStringFilter
AsyncRedisStringFilter
基于Redis String数据结构实现 不会误判,能基于过期时间实现查询去重和确认机制 占用资源很大,需尽可能压缩和设置过期时间 设置过期时间
RedisSetFilter
AsyncRedisSetFilter
基于Redis Set数据结构实现 准确性高 占用资源较大 随机删除
RedisSortedSetFilter
AsyncRedisSortedSetFilter
基于Redis SortedSet数据结构实现 准确性高 占用资源较大 根据分值删除
SQL SQLFilter 基于SQL关系数据库表主键来实现 准确性高 在大规模去重场景性能差 按时间删除

项目特点

  1. 多种方案提供不同场景需求。
  2. 基于Lua脚本支持批量操作,速度快。
  3. 支持异步,可快速集成到异步代码和异步框架中。

代码示例

RedisBloomFilter

import redis
from dupfilter import RedisBloomFilter

server = redis.Redis(host="127.0.0.1", port=6379)
rbf = RedisBloomFilter(server=server, key="bf", block_num=2)
print(rbf.exists_many(["1", "2", "3"]))
rbf.insert_many(["1", "2", "3"])
print(rbf.exists_many(["1", "2", "3"]))

AsyncRedisBloomFilter

import asyncio
import aioredis
from dupfilter import AsyncRedisBloomFilter


async def test():
    server = aioredis.from_url('redis://127.0.0.1:6379/0')
    arbf = AsyncRedisBloomFilter(server, key='bf')
    stats = await arbf.exists_many(["1", "2", "3"])
    print(stats)
    await arbf.insert_many(["1", "2", "3"])
    stats = await arbf.exists_many(["1", "2", "3"])
    print(stats)


loop = asyncio.get_event_loop()
loop.run_until_complete(test())

相关库

  1. redis:redis/aioredis
  2. mysql:pymysql/aiomysql
  3. sqlite:sqlite3
  4. oracle:cx_Oracle/cx_Oracle_async

Others

和上述示例类似

后续优化

  1. 部分去重方案的重置逻辑完善

关于作者

  1. 邮箱:1194542196@qq.com
  2. 微信:hu1194542196

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dupfilter-0.0.3.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dupfilter-0.0.3-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file dupfilter-0.0.3.tar.gz.

File metadata

  • Download URL: dupfilter-0.0.3.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.5

File hashes

Hashes for dupfilter-0.0.3.tar.gz
Algorithm Hash digest
SHA256 42c0de2da51686a4c29ad22dd2033c9724317a38da613f7cf4f2b4b63b61e431
MD5 2520048391f4bdff3d301378461843b7
BLAKE2b-256 63a400cb543012cd66f87f8e9ffcfbb53e8eaed7183fcaca4dc8d63f35ad1c90

See more details on using hashes here.

File details

Details for the file dupfilter-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: dupfilter-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 18.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.5

File hashes

Hashes for dupfilter-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6348bf9e6fc100707d3d4a97d15afda2f9799761d247fe97e9086539ddbeb9c9
MD5 2395db7ce7423f83ff0d8b3cc8694abf
BLAKE2b-256 1ad63ce149312ff655f51a90c7dd082a9416784c2bd782c4774817ee56ea75ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page