Skip to main content

An in memory cache with efficient expiration

Project description

knowhere

In memory cache, a python implementation of zizou with a different expiration policy

knowhere

Features

  • Store millions of entries
  • High concurrent thread-safe access
  • Expiration support
  • Shard support to avoid locks on whole db during any concurrent read/writes/deletes

Installation

pip install knowhere

Usage

Initialize

shard_size should be a power of 2. This size must be set according to the number of keys you expect to be there in the cache at any given time.

from datetime import timedelta
from decimal import Decimal

import uuid, time, json, sys, knowhere

c = knowhere.Cache(shard_size=2, eviction_interval=timedelta(seconds=10))

Set

c.set("key", "value", ttl=timedelta(seconds=5))

Default expiry will be set to 5 minutes if no ttl is specified

Get

c.get("key")

Delete

c.delete("key")

Flush

deletes all keys in the cache

c.flush()

Info

gives all shards and number of keys in each shard as a json

c.info()

Keys

gives a list of all keys in the cache

c.keys()

Expiration policy

knowhere expires keys the same way redis does. You can find it here. Specifically, this is what knowhere does on every eviction interval for each shard

  • Step 1: Get 20 random keys from the shard
  • Step 2: Delete all the keys which should be expired.
  • Step 3: If more than 4 of the 20 keys were expired, start again from step 1

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

knowhere-1.0.0.tar.gz (3.3 kB view details)

Uploaded Source

File details

Details for the file knowhere-1.0.0.tar.gz.

File metadata

  • Download URL: knowhere-1.0.0.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/2.7.12

File hashes

Hashes for knowhere-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5b897b0265428c61f619ba04a27b65a4a8b807beedb8e08b5d8e69829b2e8f2f
MD5 dd3e902a5e73205ab0406da968a9946e
BLAKE2b-256 5458da4de0ec55f0f78f49f5e4b45782cd717ccd4f26f98ba6864e382eb0c818

See more details on using hashes here.

Supported by

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