| | |
| | | |
| | | keys.ToList().ForEach(item => _cache.Remove(item)); |
| | | } |
| | | |
| | | public bool TryAdd(string key, string value, int expireSeconds = -1) |
| | | { |
| | | if (Exists(key)) return false; |
| | | return Add(key, value, expireSeconds); |
| | | } |
| | | |
| | | public bool TryAdd<T>(string key, T value, int expireSeconds = -1) where T : class |
| | | { |
| | | if (Exists(key)) return false; |
| | | return AddObject(key, value, expireSeconds); |
| | | } |
| | | |
| | | public bool TryGetValue(string key, out string? value) |
| | | { |
| | | value = _cache.Get(key)?.ToString(); |
| | | return value != null; |
| | | } |
| | | |
| | | public bool TryGetValue<T>(string key, out T? value) where T : class |
| | | { |
| | | if (_cache.TryGetValue(key, out object? obj) && obj != null) |
| | | { |
| | | value = obj as T ?? JsonConvert.DeserializeObject<T>(obj.ToString() ?? ""); |
| | | return value != null; |
| | | } |
| | | value = default; |
| | | return false; |
| | | } |
| | | |
| | | public bool TryRemove(string key, out string? value) |
| | | { |
| | | value = _cache.Get(key)?.ToString(); |
| | | if (value == null) return false; |
| | | _cache.Remove(key); |
| | | return true; |
| | | } |
| | | |
| | | public bool TryUpdate(string key, string newValue, int expireSeconds = -1) |
| | | { |
| | | if (!Exists(key)) return false; |
| | | Remove(key); |
| | | Add(key, newValue, expireSeconds); |
| | | return true; |
| | | } |
| | | |
| | | public string GetOrAdd(string key, string value, int expireSeconds = -1) |
| | | { |
| | | var existing = _cache.Get(key)?.ToString(); |
| | | if (existing != null) return existing; |
| | | Add(key, value, expireSeconds); |
| | | return value; |
| | | } |
| | | |
| | | public string GetOrAdd(string key, Func<string, string> valueFactory, int expireSeconds = -1) |
| | | { |
| | | var existing = _cache.Get(key)?.ToString(); |
| | | if (existing != null) return existing; |
| | | var value = valueFactory(key); |
| | | Add(key, value, expireSeconds); |
| | | return value; |
| | | } |
| | | |
| | | public T GetOrAdd<T>(string key, Func<string, T> valueFactory, int expireSeconds = -1) where T : class |
| | | { |
| | | if (_cache.TryGetValue(key, out object? obj) && obj != null) |
| | | { |
| | | if (obj is T t) return t; |
| | | var deserialized = JsonConvert.DeserializeObject<T>(obj.ToString() ?? ""); |
| | | if (deserialized != null) return deserialized; |
| | | } |
| | | var value = valueFactory(key); |
| | | AddObject(key, value, expireSeconds); |
| | | return value; |
| | | } |
| | | } |
| | | } |