Jason McNeil 4e90d76c39 Also copy value in Get() to prevent caller mutations
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).
2025-10-31 07:27:45 -03:00
2025-07-06 16:07:06 +03:00
2025-07-06 16:07:06 +03:00
2025-08-29 12:32:42 +02:00
2025-07-06 16:07:06 +03:00
2025-07-06 16:07:06 +03:00
2025-05-25 17:17:19 +02:00
2025-07-06 16:07:06 +03:00
2020-11-05 09:16:20 +01:00
2020-10-28 01:15:14 +01:00
2025-07-07 11:30:26 +02:00

title, description, sidebar_position
title description sidebar_position
👋 Welcome 📦 Premade storage drivers for 🚀 Fiber. 1

Fiber Fiber

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

Description
📦 Premade storage drivers for 🚀 Fiber
Readme MIT 26 MiB
Languages
Go 100%