| | |
| | | return true; |
| | | } |
| | | |
| | | public bool TrySafeUpdate<T>( |
| | | string key, |
| | | T newValue, |
| | | object? expectedVersion, |
| | | Func<T, object?> versionExtractor, |
| | | int expireSeconds = -1) where T : class |
| | | { |
| | | var existing = Get<T>(key); |
| | | if (existing == null) return false; |
| | | |
| | | // 检查版本是否匹配 |
| | | var currentVersion = versionExtractor(existing); |
| | | if (!Equals(currentVersion, expectedVersion)) |
| | | { |
| | | return false; // 版本不匹配,拒绝更新 |
| | | } |
| | | |
| | | Remove(key); |
| | | AddObject(key, newValue, expireSeconds); |
| | | return true; |
| | | } |
| | | |
| | | public string GetOrAdd(string key, string value, int expireSeconds = -1) |
| | | { |
| | | var existing = _cache.Get(key)?.ToString(); |