LRU Cache
---------

A `golang` implementation of last recently used cache data structure.

To install:

    go get github.com/cloudflare/golibs/lrucache

To test:

    cd $GOPATH/src/github.com/cloudflare/golibs/lrucache
    make test

For coverage:

    make cover

Basic benchmarks:

    $ make bench  # As tested on my two core i5
    [*] Scalability of cache/lrucache
    [ ] Operations in shared cache using one core
    BenchmarkConcurrentGetLRUCache       5000000               450 ns/op
    BenchmarkConcurrentSetLRUCache       2000000               821 ns/op
    BenchmarkConcurrentSetNXLRUCache     5000000               664 ns/op

    [*] Scalability of cache/multilru
    [ ] Operations in four caches using four cores
    BenchmarkConcurrentGetMultiLRU-4     5000000               475 ns/op
    BenchmarkConcurrentSetMultiLRU-4     2000000               809 ns/op
    BenchmarkConcurrentSetNXMultiLRU-4   5000000               643 ns/op

    [*] Capacity=4096 Keys=30000 KeySpace=15625
                vitess          LRUCache        MultiLRUCache-4
    create      1.709us         1.626374ms      343.54us
    Get (miss)  144.266083ms    132.470397ms    177.277193ms
    SetNX #1    338.637977ms    380.733302ms    411.709204ms
    Get (hit)   195.896066ms    173.252112ms    234.109494ms
    SetNX #2    349.785951ms    367.255624ms    419.129127ms