mirror of
https://github.com/alibaba/higress.git
synced 2026-02-25 05:01:19 +08:00
59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package cache
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/alibaba/higress/plugins/wasm-go/pkg/wrapper"
|
|
)
|
|
|
|
type redisProviderInitializer struct {
|
|
}
|
|
|
|
func (r *redisProviderInitializer) ValidateConfig(cf ProviderConfig) error {
|
|
if len(cf.serviceName) == 0 {
|
|
return errors.New("cache service name is required")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (r *redisProviderInitializer) CreateProvider(cf ProviderConfig) (Provider, error) {
|
|
rp := redisProvider{
|
|
config: cf,
|
|
client: wrapper.NewRedisClusterClient(wrapper.FQDNCluster{
|
|
FQDN: cf.serviceName,
|
|
Host: cf.serviceHost,
|
|
Port: int64(cf.servicePort)}),
|
|
}
|
|
err := rp.Init(cf.username, cf.password, cf.timeout)
|
|
return &rp, err
|
|
}
|
|
|
|
type redisProvider struct {
|
|
config ProviderConfig
|
|
client wrapper.RedisClient
|
|
}
|
|
|
|
func (rp *redisProvider) GetProviderType() string {
|
|
return PROVIDER_TYPE_REDIS
|
|
}
|
|
|
|
func (rp *redisProvider) Init(username string, password string, timeout uint32) error {
|
|
return rp.client.Init(rp.config.username, rp.config.password, int64(rp.config.timeout))
|
|
}
|
|
|
|
func (rp *redisProvider) Get(key string, cb wrapper.RedisResponseCallback) error {
|
|
return rp.client.Get(key, cb)
|
|
}
|
|
|
|
func (rp *redisProvider) Set(key string, value string, cb wrapper.RedisResponseCallback) error {
|
|
if rp.config.cacheTTL == 0 {
|
|
return rp.client.Set(key, value, cb)
|
|
} else {
|
|
return rp.client.SetEx(key, value, rp.config.cacheTTL, cb)
|
|
}
|
|
}
|
|
|
|
func (rp *redisProvider) GetCacheKeyPrefix() string {
|
|
return rp.config.cacheKeyPrefix
|
|
}
|