Categorygithub.com/vczyh/redis-lib
repository
1.0.3
Repository: https://github.com/vczyh/redis-lib.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

Redis lib

Install

go get github.com/vczyh/redis-lib

Client

c, err := client.NewClient(&client.Config{  
    Host:     "127.0.0.1",  
    Port:     26379,  
    Username: "",  
    Password: "123",  
})  
if err != nil {  
    panic(err)  
}  
  
if err := c.Auth(); err != nil {  
    panic(err)  
}  
  
if err = c.Ping(); err != nil {  
    panic(err)  
}

Parse RDB

p, err := rdb.NewParser("/tmp/rdb_test.rdb")  
if err != nil {  
    panic(err)  
}  
  
s, err := p.Parse()  
if err != nil {  
    panic(err)  
}  
  
for s.HasNext() {  
    e := s.Next()  
  
    switch e.EventType {  
    case rdb.EventTypeVersion:  
       e.Event.Debug()  
    case rdb.EventTypeStringObject:  
       e.Event.Debug()  
    case rdb.EventTypeSetObject:  
       e.Event.Debug()  
    }  
}  
  
if err := s.Err(); err != nil {  
    panic(err)  
}

=== VersionEvent ===
9

=== StringObjectEvent ===
Key: b
Value: 3

=== SetObjectEvent ===
Key: key:set
Size: 4
Members:
        s2
        s5
        s4
        s1
        
...

Replication

r, err := replica.NewReplica(&replica.Config{  
    MasterIP:            "127.0.0.1",  
    MasterPort:          26379,  
    MasterUser:          "",  
    MasterPassword:      "123",  
    MasterReplicaOffset: 67528,  
    RdbWriter:           os.Stdout,  
    AofWriter:           os.Stdout,  
})  
if err != nil {  
    panic(err)  
}  
  
if err := r.SyncWithMaster(); err != nil {  
    panic(err)  
}

synchronize data and parse RDB:

rdbReader, rdbWriter := io.Pipe()  
  
r, err := replica.NewReplica(&replica.Config{  
    MasterIP:       "127.0.0.1",  
    MasterPort:     26379,  
    MasterUser:     "",  
    MasterPassword: "123",  
    RdbWriter:      rdbWriter,  
    AofWriter:      os.Stdout,  
})  
if err != nil {  
    panic(err)  
}  
  
go func() {  
    if err := parseRdb(rdbReader); err != nil {  
       panic(err)  
    }  
}()  
  
if err = r.SyncWithMaster(); err != nil {  
    panic(err)  
}

func parseRdb(r io.Reader) error {  
    p, err := rdb.NewReaderParser(r)  
    if err != nil {  
       return err  
    }  
    s, err := p.Parse()  
    if err != nil {  
       return err  
    }  
    for s.HasNext() {  
       e := s.Next()  
       e.Event.Debug()  
    }  
    return s.Err()  
}