Skip to content


Repository files navigation

~ timedmap ~

A map which has expiring key-value pairs.


go get -u


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

Usage Example

package main

import (


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")

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

Further examples, you can find in the example 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, where I have used timedmap for storing client-based limiter instances:

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