redis storage implemented

This commit is contained in:
Radu Ioan Fericean
2012-01-25 16:43:56 +02:00
parent 2aabb38e5c
commit 0963085685
14 changed files with 81 additions and 15 deletions

View File

@@ -26,7 +26,7 @@ func callRater() {
client:= <-raterList.Balancer
err = client.Call("Storage.Get", "test", &reply)
if err != nil {
log.Print("Got en error from rater... recovering")
log.Printf("Got en error from rater: %v", err)
}
}
fmt.Println(fmt.Sprintf("Result: %v", reply))
@@ -34,7 +34,7 @@ func callRater() {
func testCallRater(){
for {
go callRater()
callRater()
time.Sleep(1 * time.Second)
}
}

View File

@@ -54,7 +54,6 @@ func (rl *RaterList) startBalance() {
go func(){
for {
rl.balancer_mutex.Lock()
log.Print("balancing")
for addr, client := range rl.Clients {
log.Printf("using server %s:", addr)
rl.Balancer <- client

View File

@@ -0,0 +1,6 @@
include $(GOROOT)/src/Make.inc
TARG=kyoto_loader
GOFILES=kyoto_loader.go
include $(GOROOT)/src/Make.cmd

BIN
src/loader/kyoto/kyoto_loader Executable file

Binary file not shown.

View File

@@ -0,0 +1,20 @@
package main
import (
"fmt"
"github.com/fsouza/gokabinet/kc"
"flag"
)
var (
fileName = flag.String("fileName", "storage.kch", "kyoto storage file")
)
func main() {
flag.Parse()
db, _ := kc.Open(*fileName, kc.WRITE)
defer db.Close()
db.Set("test", "12223")
fmt.Println("Done!")
}

View File

@@ -0,0 +1,6 @@
include $(GOROOT)/src/Make.inc
TARG=redis_loader
GOFILES=redis_loader.go
include $(GOROOT)/src/Make.cmd

BIN
src/loader/redis/redis_loader Executable file

Binary file not shown.

View File

@@ -0,0 +1,12 @@
package main
import (
"fmt"
"github.com/simonz05/godis"
)
func main() {
r := godis.New("", 10, "")
r.Set("test", 12224)
fmt.Println("Done!")
}

View File

@@ -6,5 +6,6 @@ GOFILES=\
registration/registration.go\
storage/interface.go\
storage/kyoto_storage.go\
storage/redis_storage.go\
include $(GOROOT)/src/Make.cmd

View File

@@ -19,9 +19,7 @@ type Storage struct {
}
func NewStorage(nsg StorageGetter) *Storage{
s := &Storage{sg: nsg}
s.sg.Open("storage.kch")
return s
return &Storage{sg: nsg}
}
func (s *Storage) Get(args string, reply *string) (err error) {
@@ -31,8 +29,15 @@ func (s *Storage) Get(args string, reply *string) (err error) {
func main() {
flag.Parse()
kyoto := KyotoStorage{}
storage := NewStorage(kyoto)
//getter, err := NewKyotoStorage("storage.kch")
//defer getter.Close()
getter, err := NewRedisStorage("tcp:127.0.0.1:6379")
defer getter.Close()
if err != nil {
log.Printf("Cannot open storage file: %v", err)
os.Exit(1)
}
storage := NewStorage(getter)
rpc.Register(storage)
rpc.HandleHTTP()
go RegisterToServer(server, listen)

BIN
src/rater/storage.kch Normal file

Binary file not shown.

View File

@@ -1,7 +1,6 @@
package main
type StorageGetter interface {
Open(string) error
Close()
Get(key string) (string, error)
}

View File

@@ -8,12 +8,12 @@ type KyotoStorage struct {
db *kc.DB
}
func (ks KyotoStorage) Open(fileName string) error {
db, err := kc.Open(fileName, kc.READ)
ks.db = db
return err
func NewKyotoStorage(filaName string) (KyotoStorage, error) {
ndb, err := kc.Open(filaName, kc.READ)
return KyotoStorage{db: ndb}, err
}
func (ks KyotoStorage) Close() {
ks.db.Close()
}

View File

@@ -1,7 +1,25 @@
package main
package main
import (
"github.com/simonz05/godis"
)
type RedisStorage struct {
db *godis.Client
}
func NewRedisStorage(address string) (RedisStorage, error) {
ndb:= godis.New(address, 10, "")
return RedisStorage{db: ndb}, nil
}
func (rs RedisStorage) Close() {
rs.db.Quit()
}
func (rs RedisStorage) Get(key string) (string, error) {
elem, err := rs.db.Get(key)
return elem.String(), err
}