Files
gocryptotrader/common/cache/cache.go
Adrian Gallagher 4651af5767 modernise: Run new gopls modernise tool against the codebase and fix minor issues (#1826)
* modernise: Run new gopls modernise tool against codebase

* Address shazbert's nits

* apichecker, gctcli: Simplify HTML scraping functions and improve depth limit handling

* refactor: Create minSyncInterval const and update order book limit handling for binance and binanceUS

* refactor: Various slice usage improvements and rename TODO

* tranches: Revert deleteByID changes due to performance decrease

Shazbert was a F1 driver in a past lifetime 🏎️

* tranches: Simply retrieve copy

Thanks to shazbert

* documentation: Sort contributors list by contributions

* tranches: Remove deadcode in deleteByID
2025-03-21 09:17:10 +11:00

76 lines
1.5 KiB
Go

package cache
// New returns a new concurrent-safe LRU cache with input capacity
func New(capacity uint64) *LRUCache {
return &LRUCache{
lru: NewLRUCache(capacity),
}
}
// Add new entry to Cache return true if entry removed
func (l *LRUCache) Add(k, v any) {
l.m.Lock()
l.lru.Add(k, v)
l.m.Unlock()
}
// Get looks up a key's value from the cache.
func (l *LRUCache) Get(key any) (value any) {
l.m.Lock()
defer l.m.Unlock()
return l.lru.Get(key)
}
// GetOldest looks up old key's value from the cache.
func (l *LRUCache) getOldest() (key, value any) {
l.m.Lock()
defer l.m.Unlock()
return l.lru.getOldest()
}
// getNewest looks up a key's value from the cache.
func (l *LRUCache) getNewest() (key, value any) {
l.m.Lock()
defer l.m.Unlock()
return l.lru.getNewest()
}
// ContainsOrAdd checks if cache contains key if not adds to cache
func (l *LRUCache) ContainsOrAdd(key, value any) bool {
l.m.Lock()
defer l.m.Unlock()
if l.lru.Contains(key) {
return true
}
l.lru.Add(key, value)
return false
}
// Contains checks if cache contains key
func (l *LRUCache) Contains(key any) bool {
l.m.Lock()
defer l.m.Unlock()
return l.lru.Contains(key)
}
// Remove entry from cache
func (l *LRUCache) Remove(key any) bool {
l.m.Lock()
defer l.m.Unlock()
return l.lru.Remove(key)
}
// Clear is used to clear the cache.
func (l *LRUCache) Clear() {
l.m.Lock()
l.lru.Clear()
l.m.Unlock()
}
// Len returns the number of items in the cache.
func (l *LRUCache) Len() uint64 {
l.m.Lock()
defer l.m.Unlock()
return l.lru.Len()
}