Golang crypto/tls.NewLRUClientSessionCache function example

package crypto/tls

NewLRUClientSessionCache returns a ClientSessionCache with the given capacity that uses an LRU strategy. If capacity is < 1, a default capacity is used instead.

Golang crypto/tls.NewLRUClientSessionCache function usage example

 package main

 import (
 "crypto/tls"
 "fmt"
 )

 func main() {

 // LRU stands for Least Recently Used strategy
 // http://en.wikipedia.org/wiki/Cache_algorithms

 sessioncache := tls.NewLRUClientSessionCache(4)
 clientsessionstate := make([]tls.ClientSessionState, 6)
 sessionkey := []string{"ses1","ses2","ses3","ses4", "ses5","ses6"}


 fmt.Println("Before LRU strategy")
 //populate our sessioncache
 for i := 0; i < 4; i++ {
 sessioncache.Put(sessionkey[i], &clientsessionstate[i])
 }

 //list our sessioncache
 for i := 0; i < 4; i++ {
 fmt.Println(sessioncache.Get(sessionkey[i]))
 }

 fmt.Println("AFTER LRU ")
 // Add two entries and the first 2 should be removed
 for i := 4; i < 6; i++ {
 sessioncache.Put(sessionkey[i], &clientsessionstate[i])
 }

 //Removed sessionkey will return false
 for i := 0; i < 4; i++ {
 fmt.Println(sessioncache.Get(sessionkey[i]))
 }
 }

Output :

Before LRU strategy

&{[] 0 0 [] []} true

&{[] 0 0 [] []} true

&{[] 0 0 [] []} true

&{[] 0 0 [] []} true

AFTER LRU

false

false

&{[] 0 0 [] []} true

&{[] 0 0 [] []} true

Reference :

http://golang.org/pkg/crypto/tls/#NewLRUClientSessionCache

Advertisement