cache

package
v1.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AcquireMsg added in v1.0.0

func AcquireMsg() *dns.Msg

AcquireMsg returns an empty msg from pool with pre-allocated slices

func ReleaseMsg added in v1.0.0

func ReleaseMsg(m *dns.Msg)

ReleaseMsg returns msg to pool

Types

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

Cache is the cache implementation

func New

func New(cfg *config.Config) *Cache

New creates a new cache

func (*Cache) Name

func (c *Cache) Name() string

Name returns middleware name

func (*Cache) ServeDNS

func (c *Cache) ServeDNS(ctx context.Context, ch *middleware.Chain)

ServeDNS implements the middleware.Handler interface

func (*Cache) Set

func (c *Cache) Set(key uint64, msg *dns.Msg)

Set adds a new element to the cache. Provided for API compatibility.

func (*Cache) Stats added in v1.5.0

func (c *Cache) Stats() map[string]interface{}

Stats returns cache statistics

func (*Cache) Stop added in v1.5.0

func (c *Cache) Stop()

Stop gracefully shuts down the cache

type CacheConfig added in v1.5.0

type CacheConfig struct {
	Size        int
	Prefetch    int
	PositiveTTL time.Duration
	NegativeTTL time.Duration
	MinTTL      time.Duration
	MaxTTL      time.Duration
	RateLimit   int
}

CacheConfig holds cache configuration with validation

func (CacheConfig) Validate added in v1.5.0

func (cc CacheConfig) Validate() error

Validate checks if the configuration is valid

type CacheEntry added in v1.5.0

type CacheEntry struct {
	// contains filtered or unexported fields
}

CacheEntry represents an immutable cache entry

func NewCacheEntry added in v1.5.0

func NewCacheEntry(msg *dns.Msg, ttl time.Duration, rateLimit int) *CacheEntry

NewCacheEntry creates a new cache entry from a DNS message

func (*CacheEntry) IsExpired added in v1.5.0

func (e *CacheEntry) IsExpired() bool

IsExpired checks if the cache entry has expired

func (*CacheEntry) ShouldPrefetch added in v1.5.0

func (e *CacheEntry) ShouldPrefetch(threshold int) bool

ShouldPrefetch checks if this entry should be prefetched

func (*CacheEntry) TTL added in v1.5.0

func (e *CacheEntry) TTL() int

TTL returns the remaining TTL in seconds

func (*CacheEntry) ToMsg added in v1.5.0

func (e *CacheEntry) ToMsg(req *dns.Msg) *dns.Msg

ToMsg creates a response message with updated TTLs

type CacheKey added in v1.5.0

type CacheKey struct {
	Question dns.Question
	CD       bool
}

CacheKey represents a structured cache key

func (CacheKey) Hash added in v1.5.0

func (k CacheKey) Hash() uint64

Hash returns the cache key hash

type CacheMetrics added in v1.5.0

type CacheMetrics struct {
	// contains filtered or unexported fields
}

CacheMetrics tracks cache performance metrics

func (*CacheMetrics) Eviction added in v1.5.0

func (m *CacheMetrics) Eviction()

Eviction records a cache eviction

func (*CacheMetrics) Hit added in v1.5.0

func (m *CacheMetrics) Hit()

Hit records a cache hit

func (*CacheMetrics) Miss added in v1.5.0

func (m *CacheMetrics) Miss()

Miss records a cache miss

func (*CacheMetrics) Prefetch added in v1.5.0

func (m *CacheMetrics) Prefetch()

Prefetch records a prefetch operation

func (*CacheMetrics) Stats added in v1.5.0

func (m *CacheMetrics) Stats() (hits, misses, evictions, prefetches int64)

Stats returns current metrics

type DNSCache added in v1.5.0

type DNSCache interface {
	Get(key uint64) (*CacheEntry, bool)
	Set(key uint64, entry *CacheEntry)
	Remove(key uint64)
	Len() int
}

DNSCache defines the interface for DNS cache implementations

type NegativeCache added in v1.5.0

type NegativeCache struct {
	// contains filtered or unexported fields
}

NegativeCache handles error DNS responses

func NewNegativeCache added in v1.5.0

func NewNegativeCache(size int, minTTL, maxTTL time.Duration, metrics *CacheMetrics) *NegativeCache

NewNegativeCache creates a new negative cache

func (*NegativeCache) Get added in v1.5.0

func (nc *NegativeCache) Get(key uint64) (*CacheEntry, bool)

Get retrieves an entry from the negative cache

func (*NegativeCache) Len added in v1.5.0

func (nc *NegativeCache) Len() int

Len returns the number of entries in the cache

func (*NegativeCache) Remove added in v1.5.0

func (nc *NegativeCache) Remove(key uint64)

Remove deletes an entry from the negative cache

func (*NegativeCache) Set added in v1.5.0

func (nc *NegativeCache) Set(key uint64, entry *CacheEntry)

Set stores an entry in the negative cache

type PositiveCache added in v1.5.0

type PositiveCache struct {
	// contains filtered or unexported fields
}

PositiveCache handles successful DNS responses

func NewPositiveCache added in v1.5.0

func NewPositiveCache(size int, minTTL, maxTTL time.Duration, metrics *CacheMetrics) *PositiveCache

NewPositiveCache creates a new positive cache

func (*PositiveCache) Get added in v1.5.0

func (pc *PositiveCache) Get(key uint64) (*CacheEntry, bool)

Get retrieves an entry from the positive cache

func (*PositiveCache) Len added in v1.5.0

func (pc *PositiveCache) Len() int

Len returns the number of entries in the cache

func (*PositiveCache) Remove added in v1.5.0

func (pc *PositiveCache) Remove(key uint64)

Remove deletes an entry from the positive cache

func (*PositiveCache) Set added in v1.5.0

func (pc *PositiveCache) Set(key uint64, entry *CacheEntry)

Set stores an entry in the positive cache

type PrefetchQueue added in v1.5.0

type PrefetchQueue struct {
	// contains filtered or unexported fields
}

PrefetchQueue manages prefetch requests with worker pool

func NewPrefetchQueue added in v1.5.0

func NewPrefetchQueue(workers, queueSize int, metrics *CacheMetrics) *PrefetchQueue

NewPrefetchQueue creates a new prefetch queue

func (*PrefetchQueue) Add added in v1.5.0

func (pq *PrefetchQueue) Add(req PrefetchRequest) bool

Add queues a prefetch request

func (*PrefetchQueue) Stop added in v1.5.0

func (pq *PrefetchQueue) Stop()

Stop gracefully shuts down the prefetch queue

type PrefetchRequest added in v1.5.0

type PrefetchRequest struct {
	Request *dns.Msg
	Key     uint64
	Cache   *Cache // Reference to the cache to store prefetched results
}

PrefetchRequest represents a DNS query to be prefetched

type ResponseWriter

type ResponseWriter struct {
	middleware.ResponseWriter
	// contains filtered or unexported fields
}

ResponseWriter is the response writer for cache

func (*ResponseWriter) WriteMsg

func (w *ResponseWriter) WriteMsg(res *dns.Msg) error

WriteMsg implements the ResponseWriter interface

type TTLManager added in v1.5.0

type TTLManager struct {
	// contains filtered or unexported fields
}

TTLManager manages TTL calculations

func NewTTLManager added in v1.5.0

func NewTTLManager(min, max time.Duration) TTLManager

NewTTLManager creates a new TTL manager

func (TTLManager) Calculate added in v1.5.0

func (tm TTLManager) Calculate(msgTTL time.Duration) time.Duration

Calculate returns the effective TTL within configured bounds

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL