namreg / godown Goto Github PK
View Code? Open in Web Editor NEWDistributed, fault-tolerant key-value storage written in go.
License: MIT License
Distributed, fault-tolerant key-value storage written in go.
License: MIT License
thanks.
Hi,
I'm really impressed with this effort.
I understand the main goal is to provide a transparent REDIS client API but would you consider an addition of a gRPC API in addition to the REDIS API?
The benefits would be improved RPC semantics, speed and throughput (binary protocol).
Would you accept contributions to that effect?
(maintaining the API cleanly separated, of course)
Hello, does it support permission verification? I have started using godown in production projects.
I seem to have found a new problem. In my application scenario, I need to use the rpush command to send 9000000 data entries. I started three instances to form a cluster, but in the end I found that the data in the list became 27000000 after the program was completed.
Here is my test code
package main
import (
"fmt"
"github.com/namreg/godown/client"
"time"
)
const data = `
ow9sif3W+Of+dqe2xoII1QJ2OoZFS5zjz4NtdQ49BhPOUdSlQtHVfStNlyLBxD7kxU/BV9h6PjDen2VSIbbV69jEAamcQtT4r8MTtghMC+9H/dgfNUQJQmtvHkJPqHTho1rBSRFseOpmhR9SW2CJL+0tfKGK6hziwTlbdi40qUDy905zbteLCxf2RiNDLkmwQTx+KfPVFvNPHzDOBrgvA52ZgivGlIur6r2djaAqp0XbLQN+3pw5bR1AtB/GL9x56MU+BVDg/IOQH15klpmR+EEsABF3vNo6FBL7i+JDu6ri9z9jEjMxL+UZ/lFvTkzQSiyNsigps8GnDtjuyq2ZWmdh02HMgCfNZyz9BvVZlU9PE4SgFPBtW49V080iX5t8/qlppMcRRBmOiShjmo54uTT4r+48fKMu3qX2p6F9n4jxMBbQxUDPzCq7xmNS5g4f7sH7XLTKc/W7XI2V4TNYXXxqH0YATMjz7Jyo3fOkQtUN50WPBW5fNj8soW+52q4gQqdfJcEa34HiAEo3axX5Q5LO0giLdBF/zNiM0K0leQEfgEjoGviD9s1+t214FyoKnHBQgrrFf2HxGZnuMfiDVTtUEG5UqN+dRL5VD0ZTMzY/YEJ1Fn1NIy1R7vBfhKfZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA=
`
func main() {
c, err := client.New("10.2.1.246:14001")
if err != nil {
fmt.Println(err)
return
}
start := time.Now()
for i := 0; i < 90; i ++ {
x := make([]string, 999)
for j := 0; j < 999; j++ {
x[j] = data
}
c.RPush("t13", data, x...)
}
fmt.Println(time.Since(start))
}
The amount of data has tripled, which is equivalent to the amount of data multiplied by the number of clusters.
I found lpush, rpush api inconsistent.
// RPush appends a new value(s) to the list stored at the given key.
func (c *Client) RPush(key, value string, values ...string) StatusResult
//LPush prepends a new value to the list stored at the given key.
func (c *Client) LPush(key, value string) StatusResult
I think setting the api this way will make it more comfortable to use.
func (c *Client) RPush(key, values ...string) StatusResult
Originally posted by @fangpianqi in #5 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.