package main
import (
"fmt"
"log"
"time"
"yourproject/cache"
)
type Product struct {
ID int `json:"id"`
Name string `json:"name"`
Price float64 `json:"price"`
}
func main() {
config := &cache.Config{
MemoryCacheSize: 100 * 1024 * 1024,
RedisAddr: "localhost:6379",
RedisPassword: "",
RedisDB: 0,
RedisPrefix: "myapp:",
}
cacheManager := cache.NewCacheManager(config)
// 设置简单的键值对
err := cacheManager.Set("greeting", []byte("Hello, World!"), time.Minute)
if err != nil {
log.Printf("设置greeting失败: %v", err)
}
// 获取简单的键值对
greeting, exists, err := cacheManager.Get("greeting")
if err != nil {
log.Printf("获取greeting失败: %v", err)
} else if exists {
fmt.Printf("Greeting: %s\n", string(greeting))
}
// 存储结构体
product := Product{ID: 1, Name: "Laptop", Price: 999.99}
err = cacheManager.SetStruct("product:1", product, time.Hour)
if err != nil {
log.Printf("存储产品失败: %v", err)
}
// 检索结构体
var retrievedProduct Product
exists, err = cacheManager.GetStruct("product:1", &retrievedProduct)
if err != nil {
log.Printf("获取产品失败: %v", err)
} else if exists {
fmt.Printf("检索到的产品: %+v\n", retrievedProduct)
}
// 获取所有键
allKeys, err := cacheManager.Keys("")
if err != nil {
log.Printf("获取所有键失败: %v", err)
} else {
fmt.Println("所有键:", allKeys)
}
// 删除键
err = cacheManager.Delete("greeting")
if err != nil {
log.Printf("删除greeting失败: %v", err)
}
// 再次检查键是否存在
_, exists, _ = cacheManager.Get("greeting")
fmt.Printf("greeting是否仍然存在: %v\n", exists)
}