108 lines
2.0 KiB
Go
108 lines
2.0 KiB
Go
package cache
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestMemorySet(t *testing.T) {
|
|
mc := NewMemoryCache(0)
|
|
err := mc.Set("123", "44567", 0)
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
t.Fatalf("写入失败")
|
|
}
|
|
}
|
|
|
|
func TestMemoryGet(t *testing.T) {
|
|
mc := NewMemoryCache(0)
|
|
mc.Set("123", "44567", 0)
|
|
res := ""
|
|
err := mc.Get("123", &res)
|
|
fmt.Println("res", res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败 " + err.Error())
|
|
}
|
|
if res != "44567" {
|
|
t.Fatalf("读取错误")
|
|
}
|
|
|
|
}
|
|
|
|
func TestMemorySetExpGet(t *testing.T) {
|
|
mc := NewMemoryCache(0)
|
|
//mc.stopEviction()
|
|
mc.Set("1", "10", 10)
|
|
mc.Set("2", "5", 5)
|
|
err := mc.Set("3", "3", 3)
|
|
if err != nil {
|
|
t.Fatalf("写入失败")
|
|
}
|
|
|
|
res := ""
|
|
err = mc.Get("3", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res 3", res)
|
|
time.Sleep(4 * time.Second)
|
|
//res = ""
|
|
err = mc.Get("3", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res 3", res)
|
|
err = mc.Get("2", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res 2", res)
|
|
err = mc.Get("1", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res 1", res)
|
|
|
|
}
|
|
func TestMemoryLru(t *testing.T) {
|
|
mc := NewMemoryCache(18)
|
|
mc.Set("1", "1111", 10)
|
|
mc.Set("2", "2222", 5)
|
|
//读取一次,2就会被放到最后
|
|
mc.Get("1", nil)
|
|
err := mc.Set("3", "三", 3)
|
|
if err != nil {
|
|
//t.Fatalf("写入失败")
|
|
}
|
|
|
|
res := ""
|
|
err = mc.Get("3", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res3", res)
|
|
res = ""
|
|
err = mc.Get("2", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res2", res)
|
|
res = ""
|
|
err = mc.Get("1", &res)
|
|
if err != nil {
|
|
t.Fatalf("读取失败" + err.Error())
|
|
}
|
|
fmt.Println("res1", res)
|
|
|
|
}
|
|
func BenchmarkMemorySet(b *testing.B) {
|
|
mc := NewMemoryCache(0)
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
key := fmt.Sprintf("key%d", i)
|
|
value := fmt.Sprintf("value%d", i)
|
|
mc.Set(key, value, 1000)
|
|
}
|
|
}
|