Popularity
1.7
Growing
Activity
5.5
-
9
2
3

Programming language: Go
Tags: Data Structures    
Latest version: v1.1.2

timedmap alternatives and similar packages

Based on the "Data Structures" category

Do you think we are missing an alternative of timedmap or a related project?

Add another 'Data Structures' Package

README

~ timedmap ~ A map which has expiring key-value pairs.        


go get github.com/zekroTJA/timedmap


Intro

This package allows to set values to a map which will expire and disappear after a specified time.

Here you can read the docs of this package, generated by pkg.go.dev.


Usage Example

package main

import (
    "log"
    "time"

    "github.com/zekroTJA/timedmap"
)

func main() {
    // Create a timed map with a cleanup timer interval of 1 second
    tm := timedmap.New(1 * time.Second)
    // Set value of key "hey" to 213, which will expire after 3 seconds
    tm.Set("hey", 213, 3*time.Second)
    // Print the value of "hey"
    printKeyVal(tm, "hey")
    // Block the main thread for 5 seconds
    // After this time, the key-value pair "hey": 213 has expired
    time.Sleep(5 * time.Second)
    // Now, this function should show that there is no key "hey"
    // in the map, because it has been expired
    printKeyVal(tm, "hey")
}

func printKeyVal(tm *timedmap.TimedMap, key interface{}) {
    d, ok := tm.GetValue(key).(int)
    if !ok {
        log.Println("data expired")
        return
    }

    log.Printf("%v = %d\n", key, d)
}

Further examples, you can find in the [example](examples) directory.

If you want to see this package in a practcal use case scenario, please take a look at the rate limiter implementation of the REST API of myrunes.com, where I have used timedmap for storing client-based limiter instances:
https://github.com/zekroTJA/myrunes/blob/master/internal/webserver/ratelimit.go


Copyright (c) 2020 zekro Development (Ringo Hoffmann).
Covered by MIT licence.