mirror of
https://github.com/gofiber/storage.git
synced 2025-12-19 00:38:24 +08:00
4e90d76c398ce9f334a854199afa5b0d2a317dd9
Returning the stored slice directly allows callers to mutate the stored data, which defeats the purpose of the defensive copying in Set(). Since this package doesn't have access to gofiber/utils, we manually copy the slice using make() and copy(). This completes the fix by ensuring stored data cannot be corrupted either on input (Set) or accessed mutably on output (Get).
title, description, sidebar_position
| title | description | sidebar_position |
|---|---|---|
| 👋 Welcome | 📦 Premade storage drivers for 🚀 Fiber. | 1 |
Premade storage drivers that implement the Storage interface, designed to be used with various Fiber middlewares.
Note: All storages are tested with the latest two Go version. Older Go versions may also work, but are not guaranteed to be supported.
// Storage interface for communicating with different database/key-value
// providers. Visit https://github.com/gofiber/storage for more info.
type Storage interface {
// GetWithContext gets the value for the given key with a context.
// `nil, nil` is returned when the key does not exist
GetWithContext(ctx context.Context, key string) ([]byte, error)
// Get gets the value for the given key.
// `nil, nil` is returned when the key does not exist
Get(key string) ([]byte, error)
// SetWithContext stores the given value for the given key
// with an expiration value, 0 means no expiration.
SetWithContext(ctx context.Context, key string, val []byte, exp time.Duration) error
// Set stores the given value for the given key along
// with an expiration value, 0 means no expiration.
// Empty key or value will be ignored without an error.
Set(key string, val []byte, exp time.Duration) error
// DeleteWithContext deletes the value for the given key with a context.
// It returns no error if the storage does not contain the key,
DeleteWithContext(ctx context.Context, key string) error
// Delete deletes the value for the given key.
// It returns no error if the storage does not contain the key,
Delete(key string) error
// ResetWithContext resets the storage and deletes all keys with a context.
ResetWithContext(ctx context.Context) error
// Reset resets the storage and delete all keys.
Reset() error
// Close closes the storage and will stop any running garbage
// collectors and open connections.
Close() error
}
📑 Storage Implementations
Languages
Go
100%