npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

redis-lru-cache

v1.0.16

Published

cluster friendly cache, that relies on redis pub/sub to share data

Downloads

213

Readme

REDIS LRU CACHE

This composite cache has a memory LRU layer at the top for quick access - where a set amount of key value pairs are stored, then the data is cached in a redis instance or cluster, the redis cache has a configurable expiry, so that it does not grow uncontrollably. What makes this cache clever is that it also uses redis pub/sub to ensure that it can work nicely in clustered environments

life-cycle of a SET request:

  1. redis cache is updated, with configured expiry
  2. lru cache is updated (item is bumped up if it already exists)
  3. a listener is created with redis pub-sub to ensure changes that happen elsewhere result in a cache update
  4. redis pub sub is called via an emit, to let everyone know

life-cycle of a GET request:

  1. LRU cache is checked for item, if it exists item is returned
  2. redis cache is checked for the item, if it exists LRU cache is updated and item is returned
  3. if there is a retrieveItem method attached to the options, it is called to produce the missing item, REDIS cache and LRU cache are both updated and item is returned

life-cycle of a DEL request:

  1. item is removed from LRU cache
  2. unless called again, the item will eventually expire from the redis cache

dependancies:

  • redis, v 2.8.3 and up

installation:

npm install redis-lru-cache

usage:


var RedisCache = require('redis-lru-cache');

var cache = new RedisCache({
    cacheId:'redis-lru-cache-redis-concurrent',//uniquely identifies your cache if it is used by multiple processes
    lru:{
      max:10000 //size of your memory cache, 5000 by default
    },
    clear:true //clear redis on instantiation, false by default
});

cache.set('/SET_TEST/1234', {test:"data"}, function(e){
...

cache.get('/SET_TEST/1234', function(e, data){
...

cache.remove('/SET_TEST/1234', function(e){
...