[performance] cache follow, follow request and block ID lists (#2027)

This commit is contained in:
kim 2023-07-31 11:25:29 +01:00 committed by GitHub
commit ed2477ebea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 1283 additions and 335 deletions

View file

@ -479,23 +479,23 @@ func (c *Cache[K, V]) InvalidateAll(keys ...K) (ok bool) {
kvs = make([]kv[K, V], 0, len(keys))
c.locked(func() {
for _, key := range keys {
for x := range keys {
var item *Entry[K, V]
// Check for item in cache
item, ok = c.Cache.Get(key)
item, ok = c.Cache.Get(keys[x])
if !ok {
return
continue
}
// Append this old value to slice
kvs = append(kvs, kv[K, V]{
K: key,
K: keys[x],
V: item.Value,
})
// Remove from cache map
_ = c.Cache.Delete(key)
_ = c.Cache.Delete(keys[x])
// Free entry
c.free(item)
@ -553,6 +553,7 @@ func (c *Cache[K, V]) Cap() (l int) {
return
}
// locked performs given function within mutex lock (NOTE: UNLOCK IS NOT DEFERRED).
func (c *Cache[K, V]) locked(fn func()) {
c.Lock()
fn()

2
vendor/modules.txt vendored
View file

@ -13,7 +13,7 @@ codeberg.org/gruf/go-bytesize
# codeberg.org/gruf/go-byteutil v1.1.2
## explicit; go 1.16
codeberg.org/gruf/go-byteutil
# codeberg.org/gruf/go-cache/v3 v3.4.3
# codeberg.org/gruf/go-cache/v3 v3.4.4
## explicit; go 1.19
codeberg.org/gruf/go-cache/v3
codeberg.org/gruf/go-cache/v3/result