Golang でキャッシュの無効化に対処する場合、次の戦略に従うことができます。キャッシュ項目にタイムスタンプをマークし、期限切れになったら新しいデータを取得します。ロックを使用すると、コルーチンがキャッシュ項目を取得するとキャッシュがロックされ、キャッシュ項目が存在しないか期限切れになるとキャッシュのロックが解除されて新しいデータが取得されます。
Golang のキャッシュ障害に対処するにはどうすればよいですか?
Golang プログラムでキャッシュを使用する場合、データの一貫性と信頼性を確保するためにキャッシュの障害に対処することが重要です。以下に 2 つの処理戦略があります:
1. タイムスタンプ
type CacheItem struct { Value interface{} Timestamp time.Time } var cache = make(map[string]CacheItem) func SetCache(key string, value interface{}) { cache[key] = CacheItem{Value: value, Timestamp: time.Now()} } func GetCache(key string) (interface{}, bool) { item, ok := cache[key] if ok && time.Since(item.Timestamp) < time.Second*30 { return item.Value, true } return nil, false }
2. ロックを使用する
var cache = sync.Map{} func SetCache(key string, value interface{}) { cache.Store(key, value) } func GetCache(key string) (interface{}, bool) { if value, ok := cache.Load(key); ok { return value, true } lock := sync.Mutex{} lock.Lock() defer lock.Unlock() if value, ok := cache.Load(key); ok { return value, true } newValue, err := fetchNewValue(key) if err == nil { cache.Store(key, newValue) } return newValue, err == nil }
実際的なケース
RESTful API でキャッシュを使用してユーザーの詳細を保存していると仮定します。
りー以上がGolang のキャッシュが無効になった場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。