123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- // Package gredis provides convenient client for redis server.
- //
- // Redis Client.
- //
- // Redis Commands Official: https://redis.io/commands
- //
- // Redis Chinese Documentation: http://redisdoc.com/
- package gredis
- import (
- "github.com/gogf/gf/v2/errors/gcode"
- "github.com/gogf/gf/v2/errors/gerror"
- )
- // AdapterFunc is the function creating redis adapter.
- type AdapterFunc func(config *Config) Adapter
- var (
- // defaultAdapterFunc is the default adapter function creating redis adapter.
- defaultAdapterFunc AdapterFunc = func(config *Config) Adapter {
- return nil
- }
- )
- // New creates and returns a redis client.
- // It creates a default redis adapter of go-redis.
- func New(config ...*Config) (*Redis, error) {
- var (
- usedConfig *Config
- usedAdapter Adapter
- )
- if len(config) > 0 && config[0] != nil {
- // Redis client with go redis implements adapter from given configuration.
- usedConfig = config[0]
- usedAdapter = defaultAdapterFunc(config[0])
- } else if configFromGlobal, ok := GetConfig(); ok {
- // Redis client with go redis implements adapter from package configuration.
- usedConfig = configFromGlobal
- usedAdapter = defaultAdapterFunc(configFromGlobal)
- }
- if usedConfig == nil {
- return nil, gerror.NewCode(
- gcode.CodeInvalidConfiguration,
- `no configuration found for creating Redis client`,
- )
- }
- if usedAdapter == nil {
- return nil, gerror.NewCode(
- gcode.CodeNecessaryPackageNotImport,
- errorNilAdapter,
- )
- }
- redis := &Redis{
- config: usedConfig,
- localAdapter: usedAdapter,
- }
- return redis.initGroup(), nil
- }
- // NewWithAdapter creates and returns a redis client with given adapter.
- func NewWithAdapter(adapter Adapter) (*Redis, error) {
- if adapter == nil {
- return nil, gerror.NewCodef(gcode.CodeInvalidParameter, `adapter cannot be nil`)
- }
- redis := &Redis{localAdapter: adapter}
- return redis.initGroup(), nil
- }
- // RegisterAdapterFunc registers default function creating redis adapter.
- func RegisterAdapterFunc(adapterFunc AdapterFunc) {
- defaultAdapterFunc = adapterFunc
- }
|