Documentation ¶
Overview ¶
Package server supplies a way to use ledis as service. Server implements the redis protocol called RESP (REdis Serialization Protocol). For more information, please see http://redis.io/topics/protocol.
You can use ledis with many available redis clients directly, for example, redis-cli. But I also supply some ledis client at client folder, and have been adding more for other languages.
Usage ¶
Start a ledis server is very simple:
cfg := new(Config) cfg.Addr = "127.0.0.1:6380" cfg.DataDir = "/tmp/ledis" app := server.NewApp(cfg) app.Run()
Replication ¶
You can start a slave ledis server for replication, open slave is simple too, you can set slaveof in config or run slaveof command in shell.
For example, if you start a slave server, and the master server's address is 127.0.0.1:6380, you can start replication in shell:
ledis-cli -p 6381 ledis 127.0.0.1:6381 > slaveof 127.0.0.1 6380
After you send slaveof command, the slave will start to sync master's binlog and replicate from binlog.
HTTP Interface ¶
LedisDB provides http interfaces for most commands(except the replication commands)
curl http://127.0.0.1:11181/SET/hello/world → {"SET":[true,"OK"]} curl http://127.0.0.1:11181/0/GET/hello?type=json → {"GET":"world"}
Index ¶
- Constants
- Variables
- func ReadBulkTo(rb *bufio.Reader, w io.Writer) error
- func ReadLine(rb *bufio.Reader) ([]byte, error)
- type App
- type CommandFunc
- type Config
- type Family
- func (this *Family) DeviceLoginOut(devname string)
- func (this *Family) GetAllMemberInfo() []byte
- func (this *Family) GetAllNodeInfo() []byte
- func (this *Family) GetDevice(devname string) *Node
- func (this *Family) GetMember(username string) *Node
- func (this *Family) InsertDevice(db *sql.DB, devname string) (*Node, error)
- func (this *Family) InsertMember(db *sql.DB, name, pasword string) (*Node, error)
- func (this *Family) MemberLoginOut(username string)
- func (this *Family) NewDevice(devname string) (*Node, bool)
- func (this *Family) NewMember(username string) (*Node, bool)
- func (this *Family) SendMsgToAll(msg []byte)
- func (this *Family) SendMsgToOtherMembers(msg []byte, c *Node)
- type FamilyMgr
- func (this *FamilyMgr) GetFamilyByHostName(hostname string) *Family
- func (this *FamilyMgr) GetFamilyByNodeName(nodename string) *Family
- func (this *FamilyMgr) GetFamilyByUUID(uuid string) *Family
- func (this *FamilyMgr) GetMember(username string) *Node
- func (this *FamilyMgr) NewFamily(hostname string) (*Family, bool)
- type Node
- type NodeType
- type RegisterError
Constants ¶
const ( MAX_DEVICE_NUM = 8 DEFALUT_MEMBER_NUM = 5 )
const (
API_URL_REGISTER = "api/member/register.json"
)
const (
MYCHAT_MAX_MESSAGE = 100
)
Variables ¶
var ( ErrEmptyCommand = errors.New("empty command") ErrNotFound = errors.New("command not found") ErrCmdParams = errors.New("invalid command param") ErrValue = errors.New("value is not an integer or out of range") ErrSyntax = errors.New("syntax error") ErrOffset = errors.New("offset bit is not an natural number") ErrBool = errors.New("value is not 0 or 1") )
Functions ¶
Types ¶
type App ¶
type App struct {
// contains filtered or unexported fields
}
type Config ¶
type Config struct { Addr string `json:"addr"` HttpAddr string `json:"http_addr"` DataDir string `json:"data_dir"` AccessLog string `json:"access_log"` MysqlConf dbConfig `json:"mysqldb"` }
func NewConfig ¶
func NewConfig(data json.RawMessage) (*Config, error)
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
type RegisterError ¶
type RegisterError uint8
func (RegisterError) Error ¶
func (er RegisterError) Error() string