Popularity
2.5
Growing
Activity
5.6
-
32
2
3

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

timedmap alternatives and similar packages

Based on the "Data Structures" category.
Alternatively, view timedmap alternatives based on common mentions on social networks and blogs.

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.