mirror of
https://github.com/nalgeon/redka.git
synced 2025-09-27 12:22:09 +08:00
39 lines
669 B
Go
39 lines
669 B
Go
package command
|
|
|
|
import (
|
|
"github.com/nalgeon/redka"
|
|
"github.com/tidwall/redcon"
|
|
)
|
|
|
|
// Get returns the string value of a key.
|
|
// GET key
|
|
// https://redis.io/commands/get
|
|
type Get struct {
|
|
baseCmd
|
|
key string
|
|
}
|
|
|
|
func parseGet(b baseCmd) (*Get, error) {
|
|
cmd := &Get{baseCmd: b}
|
|
if len(cmd.args) != 1 {
|
|
return cmd, ErrInvalidArgNum(cmd.name)
|
|
}
|
|
cmd.key = string(cmd.args[0])
|
|
return cmd, nil
|
|
}
|
|
|
|
func (cmd *Get) Run(w redcon.Conn, red redka.Redka) (any, error) {
|
|
v, err := red.Str().Get(cmd.key)
|
|
|
|
if err != nil {
|
|
w.WriteError(err.Error())
|
|
return nil, err
|
|
}
|
|
if v.IsEmpty() {
|
|
w.WriteNull()
|
|
return v, nil
|
|
}
|
|
w.WriteBulkString(v.String())
|
|
return v, nil
|
|
}
|