// This example demonstrates the use of the Cuckoo Filter // in the RedisBloom module (https://redis.io/docs/stack/bloom/) import { createClient } from 'redis'; const client = createClient(); await client.connect(); // Delete any pre-existing Cuckoo Filter. await client.del('mycuckoo'); // Reserve a Cuckoo Filter with a capacity of 10000 items. // https://redis.io/commands/cf.reserve/ try { await client.cf.reserve('mycuckoo', 10000); console.log('Reserved Cuckoo Filter.'); } catch (e) { console.log('Error, maybe RedisBloom is not installed?:'); console.log(e); } // Add items to Cuckoo Filter individually with CF.ADD command. // https://redis.io/commands/cf.add/ await Promise.all([ client.cf.add('mycuckoo', 'leibale'), client.cf.add('mycuckoo', 'simon'), client.cf.add('mycuckoo', 'guy'), client.cf.add('mycuckoo', 'suze'), client.cf.add('mycuckoo', 'brian'), client.cf.add('mycuckoo', 'steve'), client.cf.add('mycuckoo', 'kyle'), client.cf.add('mycuckoo', 'josefin'), client.cf.add('mycuckoo', 'alex'), client.cf.add('mycuckoo', 'nava'), ]); // Add items to the Cuckoo Filter only if they don't exist in it... // https://redis.io/commands/cf.addnx/ const nxReply = await Promise.all([ client.cf.addNX('mycuckoo', 'kaitlyn'), // New client.cf.addNX('mycuckoo', 'rachel'), // New client.cf.addNX('mycuckoo', 'brian') // Previously added ]); console.log('Added members to Cuckoo Filter.'); console.log('nxReply:'); // nxReply looks like this: // [ // true, // true, // false // ] console.log(nxReply); // Check whether a member exists with the CF.EXISTS command. // https://redis.io/commands/cf.exists/ const simonExists = await client.bf.exists('mycuckoo', 'simon'); console.log(`simon ${simonExists ? 'may' : 'does not'} exist in the Cuckoo Filter.`); // Get stats for the Cuckoo Filter with the CF.INFO command: // https://redis.io/commands/cf.info/ const info = await client.cf.info('mycuckoo'); // info looks like this: // { // size: 16440, // numberOfBuckets: 8192, // numberOfFilters: 1, // numberOfInsertedItems: 12, // numberOfDeletedItems: 0, // bucketSize: 2, // expansionRate: 1, // maxIteration: 20 // } console.log(info); client.destroy();