mirror of
https://github.com/gofiber/storage.git
synced 2025-10-24 17:00:28 +08:00
Compare commits
1 Commits
add-config
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74e5927649 |
2
.github/workflows/benchmark.yml
vendored
2
.github/workflows/benchmark.yml
vendored
@@ -62,7 +62,7 @@ jobs:
|
||||
go-version: "1.23.x"
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
|
||||
2
.github/workflows/sync-docs.yml
vendored
2
.github/workflows/sync-docs.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
|
||||
2
.github/workflows/test-cloudflarekv.yml
vendored
2
.github/workflows/test-cloudflarekv.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
||||
go-version: ${{ matrix.go-version }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
|
||||
@@ -73,11 +73,6 @@ type Config struct {
|
||||
//
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
}
|
||||
```
|
||||
|
||||
@@ -85,6 +80,5 @@ type Config struct {
|
||||
```go
|
||||
var ConfigDefault = Config{
|
||||
Servers: "127.0.0.1:11211",
|
||||
DisableStartupCheck: false,
|
||||
}
|
||||
```
|
||||
|
||||
@@ -15,11 +15,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// The socket read/write timeout.
|
||||
//
|
||||
// Optional. Default is 100 * time.Millisecond
|
||||
@@ -39,7 +34,6 @@ var ConfigDefault = Config{
|
||||
Servers: "127.0.0.1:11211",
|
||||
timeout: 100 * time.Millisecond,
|
||||
maxIdleConns: 2,
|
||||
DisableStartupCheck: false,
|
||||
}
|
||||
|
||||
// Helper function to set default values
|
||||
|
||||
@@ -30,7 +30,6 @@ func New(config ...Config) *Storage {
|
||||
db.Timeout = cfg.timeout
|
||||
db.MaxIdleConns = cfg.maxIdleConns
|
||||
|
||||
if !cfg.DisableStartupCheck {
|
||||
// Ping database to ensure a connection has been made
|
||||
if err := db.Ping(); err != nil {
|
||||
panic(err)
|
||||
@@ -41,7 +40,6 @@ func New(config ...Config) *Storage {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create storage
|
||||
store := &Storage{
|
||||
|
||||
@@ -178,16 +178,6 @@ func Test_Memcache_Reset(t *testing.T) {
|
||||
require.Zero(t, len(result))
|
||||
}
|
||||
|
||||
func Test_Memcache_New_DisableStartupCheck(t *testing.T) {
|
||||
require.NotPanics(t, func() {
|
||||
store := New(Config{
|
||||
Servers: "127.0.0.1:11210",
|
||||
DisableStartupCheck: true,
|
||||
})
|
||||
require.NotNil(t, store)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Memcache_Close(t *testing.T) {
|
||||
testStore := newTestStore(t)
|
||||
require.Nil(t, testStore.Close())
|
||||
|
||||
@@ -117,11 +117,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// Time before deleting expired keys
|
||||
//
|
||||
// Optional. Default is 10 * time.Second
|
||||
@@ -140,7 +135,6 @@ var ConfigDefault = Config{
|
||||
Table: "fiber_storage",
|
||||
SSLMode: "disable",
|
||||
Reset: false,
|
||||
DisableStartupCheck: false,
|
||||
GCInterval: 10 * time.Second,
|
||||
}
|
||||
```
|
||||
|
||||
@@ -61,11 +61,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// Time before deleting expired keys
|
||||
//
|
||||
// Optional. Default is 10 * time.Second
|
||||
@@ -81,7 +76,6 @@ var ConfigDefault = Config{
|
||||
Table: "fiber_storage",
|
||||
SSLMode: "disable",
|
||||
Reset: false,
|
||||
DisableStartupCheck: false,
|
||||
GCInterval: 10 * time.Second,
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,6 @@ func New(config ...Config) *Storage {
|
||||
}
|
||||
}
|
||||
|
||||
if !cfg.DisableStartupCheck {
|
||||
// Ping database
|
||||
if err := db.Ping(context.Background()); err != nil {
|
||||
panic(err)
|
||||
@@ -109,7 +108,6 @@ func New(config ...Config) *Storage {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create storage
|
||||
store := &Storage{
|
||||
@@ -123,9 +121,7 @@ func New(config ...Config) *Storage {
|
||||
sqlGC: fmt.Sprintf("DELETE FROM %s WHERE e <= $1 AND e != 0", cfg.Table),
|
||||
}
|
||||
|
||||
if !cfg.DisableStartupCheck {
|
||||
store.checkSchema(cfg.Table)
|
||||
}
|
||||
|
||||
// Start garbage collector
|
||||
go store.gcTicker()
|
||||
|
||||
@@ -202,18 +202,6 @@ func TestNoCreateUser(t *testing.T) {
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func Test_Postgres_New_DisableStartupCheck(t *testing.T) {
|
||||
require.NotPanics(t, func() {
|
||||
store := New(Config{
|
||||
Host: "127.0.0.1",
|
||||
Port: 65432,
|
||||
DisableStartupCheck: true,
|
||||
})
|
||||
require.NotNil(t, store)
|
||||
defer store.Close()
|
||||
})
|
||||
}
|
||||
func Test_Should_Panic_On_Wrong_Schema(t *testing.T) {
|
||||
testStore := newTestStore(t)
|
||||
defer testStore.Close()
|
||||
|
||||
@@ -180,11 +180,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// TLS Config to use. When set TLS will be negotiated.
|
||||
//
|
||||
// Optional. Default is nil
|
||||
@@ -213,7 +208,6 @@ var ConfigDefault = Config{
|
||||
URL: "",
|
||||
Database: 0,
|
||||
Reset: false,
|
||||
DisableStartupCheck: false,
|
||||
TLSConfig: nil,
|
||||
PoolSize: 10 * runtime.GOMAXPROCS(0),
|
||||
Addrs: []string{},
|
||||
|
||||
@@ -68,11 +68,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// TLS Config to use. When set TLS will be negotiated.
|
||||
//
|
||||
// Optional. Default is nil
|
||||
@@ -99,7 +94,6 @@ var ConfigDefault = Config{
|
||||
URL: "",
|
||||
Database: 0,
|
||||
Reset: false,
|
||||
DisableStartupCheck: false,
|
||||
TLSConfig: nil,
|
||||
PoolSize: 10 * runtime.GOMAXPROCS(0),
|
||||
Addrs: []string{},
|
||||
|
||||
@@ -65,7 +65,6 @@ func New(config ...Config) *Storage {
|
||||
IsClusterMode: cfg.IsClusterMode,
|
||||
})
|
||||
|
||||
if !cfg.DisableStartupCheck {
|
||||
// Test connection
|
||||
if err := db.Ping(context.Background()).Err(); err != nil {
|
||||
panic(err)
|
||||
@@ -77,7 +76,6 @@ func New(config ...Config) *Storage {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create new store
|
||||
return &Storage{
|
||||
|
||||
@@ -198,19 +198,6 @@ func Test_Redis_Delete(t *testing.T) {
|
||||
require.Nil(t, keys)
|
||||
}
|
||||
|
||||
func Test_Redis_New_DisableStartupCheck(t *testing.T) {
|
||||
require.NotPanics(t, func() {
|
||||
store := New(Config{
|
||||
Host: "127.0.0.1",
|
||||
Port: 6390,
|
||||
Addrs: []string{"127.0.0.1:6390"},
|
||||
DisableStartupCheck: true,
|
||||
})
|
||||
require.NotNil(t, store)
|
||||
_ = store.Close()
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Redis_DeleteWithContext(t *testing.T) {
|
||||
var (
|
||||
key = "john"
|
||||
|
||||
@@ -184,13 +184,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
// When true and client creation fails, New returns a Storage whose
|
||||
// operations surface the initialization error instead of panicking.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// CacheTTL TTL
|
||||
//
|
||||
// Optional. Default is time.Minute
|
||||
@@ -217,7 +210,6 @@ var ConfigDefault = Config{
|
||||
DisableCache: false,
|
||||
AlwaysPipelining: true,
|
||||
Reset: false,
|
||||
DisableStartupCheck: false,
|
||||
CacheTTL: time.Minute,
|
||||
}
|
||||
```
|
||||
|
||||
@@ -95,13 +95,6 @@ type Config struct {
|
||||
// Optional. Default is false
|
||||
Reset bool
|
||||
|
||||
// DisableStartupCheck skips the initial connection validation during New.
|
||||
// When true and the client cannot be created, New returns a Storage whose
|
||||
// operations will report the initialization error instead of panicking.
|
||||
//
|
||||
// Optional. Default is false
|
||||
DisableStartupCheck bool
|
||||
|
||||
// CacheTTL TTL
|
||||
//
|
||||
// Optional. Default is time.Minute
|
||||
@@ -127,7 +120,6 @@ var ConfigDefault = Config{
|
||||
DisableCache: false,
|
||||
AlwaysPipelining: true,
|
||||
Reset: false,
|
||||
DisableStartupCheck: false,
|
||||
CacheTTL: time.Minute,
|
||||
}
|
||||
|
||||
@@ -202,9 +194,5 @@ func configDefault(config ...Config) Config {
|
||||
cfg.Reset = true
|
||||
}
|
||||
|
||||
if userConfig.DisableStartupCheck {
|
||||
cfg.DisableStartupCheck = true
|
||||
}
|
||||
|
||||
return cfg
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ var cacheTTL = time.Second
|
||||
// Storage interface that is implemented by storage providers
|
||||
type Storage struct {
|
||||
db rueidis.Client
|
||||
initErr error
|
||||
}
|
||||
|
||||
// New creates a new rueidis storage
|
||||
@@ -46,6 +45,7 @@ func New(config ...Config) *Storage {
|
||||
}
|
||||
}
|
||||
|
||||
// Update config values accordingly and start new Client
|
||||
db, err := rueidis.NewClient(rueidis.ClientOption{
|
||||
Username: cfg.Username,
|
||||
Password: cfg.Password,
|
||||
@@ -64,14 +64,9 @@ func New(config ...Config) *Storage {
|
||||
AlwaysPipelining: cfg.AlwaysPipelining,
|
||||
})
|
||||
if err != nil {
|
||||
if cfg.DisableStartupCheck {
|
||||
return &Storage{initErr: err}
|
||||
}
|
||||
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if !cfg.DisableStartupCheck {
|
||||
// Test connection
|
||||
if err := db.Do(context.Background(), db.B().Ping().Build()).Error(); err != nil {
|
||||
panic(err)
|
||||
@@ -83,7 +78,6 @@ func New(config ...Config) *Storage {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create new store
|
||||
return &Storage{
|
||||
@@ -93,9 +87,6 @@ func New(config ...Config) *Storage {
|
||||
|
||||
// GetWithContext gets value by key with context
|
||||
func (s *Storage) GetWithContext(ctx context.Context, key string) ([]byte, error) {
|
||||
if s.db == nil {
|
||||
return nil, s.initErr
|
||||
}
|
||||
if len(key) <= 0 {
|
||||
return nil, nil
|
||||
}
|
||||
@@ -113,9 +104,6 @@ func (s *Storage) Get(key string) ([]byte, error) {
|
||||
|
||||
// SetWithContext sets key with value with context
|
||||
func (s *Storage) SetWithContext(ctx context.Context, key string, val []byte, exp time.Duration) error {
|
||||
if s.db == nil {
|
||||
return s.initErr
|
||||
}
|
||||
if len(key) <= 0 || len(val) <= 0 {
|
||||
return nil
|
||||
}
|
||||
@@ -133,9 +121,6 @@ func (s *Storage) Set(key string, val []byte, exp time.Duration) error {
|
||||
|
||||
// DeleteWithContext deletes key by key with context
|
||||
func (s *Storage) DeleteWithContext(ctx context.Context, key string) error {
|
||||
if s.db == nil {
|
||||
return s.initErr
|
||||
}
|
||||
if len(key) <= 0 {
|
||||
return nil
|
||||
}
|
||||
@@ -149,9 +134,6 @@ func (s *Storage) Delete(key string) error {
|
||||
|
||||
// ResetWithContext resets all keys with context
|
||||
func (s *Storage) ResetWithContext(ctx context.Context) error {
|
||||
if s.db == nil {
|
||||
return s.initErr
|
||||
}
|
||||
return s.db.Do(ctx, s.db.B().Flushdb().Build()).Error()
|
||||
}
|
||||
|
||||
@@ -162,10 +144,6 @@ func (s *Storage) Reset() error {
|
||||
|
||||
// Close the database
|
||||
func (s *Storage) Close() error {
|
||||
if s.db == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
s.db.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -49,17 +49,6 @@ func newTestStore(t testing.TB, opts ...testredis.Option) *Storage {
|
||||
return New(newConfigFromContainer(t, opts...))
|
||||
}
|
||||
|
||||
func Test_Rueidis_New_DisableStartupCheck(t *testing.T) {
|
||||
require.NotPanics(t, func() {
|
||||
store := New(Config{
|
||||
InitAddress: []string{"127.0.0.1:6390"},
|
||||
DisableStartupCheck: true,
|
||||
})
|
||||
require.NotNil(t, store)
|
||||
require.NoError(t, store.Close())
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Rueidis_Set(t *testing.T) {
|
||||
var (
|
||||
key = "john"
|
||||
|
||||
Reference in New Issue
Block a user