mirror of
https://github.com/sot-tech/mochi.git
synced 2026-07-21 07:28:10 -07:00
initial redis work, storage.Storage->storage.Conn,
among other new options in the config file for storage timeouts
This commit is contained in:
@@ -5,5 +5,46 @@
|
||||
package redis
|
||||
|
||||
import (
|
||||
"github.com/garyburd/redigo/redis"
|
||||
|
||||
"github.com/pushrax/chihaya/config"
|
||||
"github.com/pushrax/chihaya/storage"
|
||||
)
|
||||
|
||||
type driver struct{}
|
||||
|
||||
func (d *driver) New(conf *config.Storage) (storage.Conn, error) {
|
||||
var (
|
||||
conn redis.Conn
|
||||
err error
|
||||
)
|
||||
|
||||
if conf.ConnectTimeout != nil &&
|
||||
conf.ReadTimeout != nil &&
|
||||
conf.WriteTimeout != nil {
|
||||
|
||||
conn, err = redis.DialTimeout(
|
||||
conf.Network,
|
||||
conf.Addr,
|
||||
conf.ConnectTimeout.Duration,
|
||||
conf.ReadTimeout.Duration,
|
||||
conf.WriteTimeout.Duration,
|
||||
)
|
||||
} else {
|
||||
conn, err = redis.Dial(conf.Network, conf.Addr)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Conn{
|
||||
conn,
|
||||
}, nil
|
||||
}
|
||||
|
||||
type Conn struct {
|
||||
conn redis.Conn
|
||||
}
|
||||
|
||||
func init() {
|
||||
storage.Register("redis", &driver{})
|
||||
}
|
||||
|
||||
+3
-3
@@ -15,7 +15,7 @@ import (
|
||||
var drivers = make(map[string]StorageDriver)
|
||||
|
||||
type StorageDriver interface {
|
||||
New(*config.Storage) (Storage, error)
|
||||
New(*config.Storage) (Conn, error)
|
||||
}
|
||||
|
||||
func Register(name string, driver StorageDriver) {
|
||||
@@ -28,7 +28,7 @@ func Register(name string, driver StorageDriver) {
|
||||
drivers[name] = driver
|
||||
}
|
||||
|
||||
func New(conf *config.Storage) (Storage, error) {
|
||||
func Open(conf *config.Storage) (Conn, error) {
|
||||
driver, ok := drivers[conf.Driver]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf(
|
||||
@@ -43,7 +43,7 @@ func New(conf *config.Storage) (Storage, error) {
|
||||
return store, nil
|
||||
}
|
||||
|
||||
type Storage interface {
|
||||
type Conn interface {
|
||||
Close() error
|
||||
|
||||
FindUser(passkey string) (*User, bool, error)
|
||||
|
||||
Reference in New Issue
Block a user