redis

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2012 License: BSD-3-Clause Imports: 11 Imported by: 0

Documentation

Overview

Package redis implements an asynchronous Redis client.

Simple client for accessing the Redis database. After establishing a connection with NewClient, commands can be executed with Client.Command. Client.Command returns a Reply with different methods for accessing the retrieved values. Client.MultiCommand can be used for sending multiple commands in a single request and Client.Transaction offers a simple way for executing atomic requests. Client.Subscription returns a Subscription that can be used for listening published messages.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client manages the access to a database.

func NewClient

func NewClient(conf Configuration) *Client

NewClient create a new accessor.

func (*Client) AsyncCommand

func (c *Client) AsyncCommand(cmd string, args ...interface{}) Future

AsyncCommand performs a Redis command asynchronously.

func (*Client) AsyncMultiCommand

func (c *Client) AsyncMultiCommand(f func(*MultiCommand)) Future

Perform an asynchronous multi command.

func (*Client) AsyncTransaction

func (c *Client) AsyncTransaction(f func(*MultiCommand)) Future

Perform a simple asynchronous transaction.

func (*Client) Close

func (c *Client) Close()

Close all connections of the client.

func (*Client) Command

func (c *Client) Command(cmd string, args ...interface{}) *Reply

Command performs a Redis command.

func (*Client) MultiCommand

func (c *Client) MultiCommand(f func(*MultiCommand)) *Reply

Perform a multi command.

func (*Client) Select

func (c *Client) Select(database int)

Select changes the database of connections used by the Client to the given database. This is the RECOMMENDED way of changing database as Redis SELECT command changes only the database of one connection of the Client. Database changes occur after the next calls to pullConnection (through Command, etc.)

func (*Client) Subscription

func (c *Client) Subscription(msgHdlr func(msg *Message)) (*Subscription, *Error)

Subscribe to given channels and return a Subscription or an error. The msgHdlr function is called whenever a new message arrives.

func (*Client) Transaction

func (c *Client) Transaction(f func(*MultiCommand)) *Reply

Perform a simple transaction. Simple transaction is a multi command that is wrapped in a MULTI-EXEC block. For complex transactions with WATCH, UNWATCH or DISCARD commands use MultiCommand.

type Configuration

type Configuration struct {
	Address        string
	Path           string
	Database       int
	Auth           string
	PoolSize       int
	Timeout        int
	NoLoadingRetry bool
}

Configuration of a database client.

type Error

type Error struct {
	// contains filtered or unexported fields
}

func (*Error) Error

func (e *Error) Error() string

Return a string representation of the error.

func (*Error) Test

func (e *Error) Test(flags ...ErrorFlag) bool

Return true, if any of the given error flags is set in the error, otherwise false.

type ErrorFlag

type ErrorFlag uint8
const (
	ErrorRedis ErrorFlag = iota
	ErrorConnection
	ErrorLoading
	ErrorAuth
	ErrorParse
	ErrorInvalidReply
	ErrorTimeout
)

type Future

type Future chan *Reply

Future is a channel for fetching a reply of an asynchronous command.

func (Future) Reply

func (f Future) Reply() (r *Reply)

Return the Reply of the Future. Blocks until the Reply is available.

type Message

type Message struct {
	Type          MessageType
	Channel       string
	Pattern       string
	Subscriptions int
	Payload       string
	Error         error
}

Pub/sub message

func (*Message) String

func (m *Message) String() string

Returns a string representation of the message.

type MessageType

type MessageType int
const (
	MessageSubscribe MessageType = iota
	MessageUnsubscribe
	MessagePSubscribe
	MessagePUnsubscribe
	MessageMessage
	MessagePMessage
	MessageError
)

type MultiCommand

type MultiCommand struct {
	// contains filtered or unexported fields
}

MultiCommand holds data for a Redis multi command.

func (*MultiCommand) Command

func (mc *MultiCommand) Command(cmd string, args ...interface{})

Queue a command for later execution.

func (*MultiCommand) Flush

func (mc *MultiCommand) Flush() *Reply

Send queued commands to the Redis server for execution and return the returned Reply. The Reply associated with the MultiCommand will be reseted.

type Reply

type Reply struct {
	// contains filtered or unexported fields
}

Reply holds a Redis reply.

func (*Reply) At

func (r *Reply) At(i int) *Reply

Return a Reply of a multi reply by its index. It panics, if the reply type is not ReplyMulti or if the index is out of range.

func (*Reply) Bool

func (r *Reply) Bool() bool

Return true, if the reply value equals to 1 or "1", otherwise false. It panics, if the reply type is not ReplyInteger or ReplyString.

func (*Reply) Bytes

func (r *Reply) Bytes() []byte

Bytes is a convenience method for []byte(Reply.String()).

func (*Reply) Elems

func (r *Reply) Elems() []*Reply

Return the elements (sub-replies) of a multi reply. It panics, if the reply type is not ReplyMulti.

func (*Reply) Error

func (r *Reply) Error() *Error

Return the error value of the reply or nil, if the reply type is not ReplyError.

func (*Reply) ErrorString

func (r *Reply) ErrorString() string

Return the error string of the error value of the reply or an empty string, if the reply type is not ReplyError.

func (*Reply) Int

func (r *Reply) Int() int

Int is a convenience method for int(Reply.Int64()).

func (*Reply) Int64

func (r *Reply) Int64() int64

Return the reply value as a int64. It panics, if the reply type is not ReplyInteger.

func (*Reply) Len

func (r *Reply) Len() int

Return the number of elements in a multi reply. Zero is returned when reply type is not ReplyMulti.

func (*Reply) Map

func (r *Reply) Map() (map[string]*Reply, error)

Return a multi-bulk reply as a map[string]*Reply or an error. The reply elements must be in a "key value key value..."-style order.

func (*Reply) Nil

func (r *Reply) Nil() bool

Return true, if the reply is a nil reply, otherwise false.

func (*Reply) Str

func (r *Reply) Str() string

Return the reply value as a string or a nil, if the reply type is ReplyNil. It panics, if the reply type is not ReplyNil, ReplyStatus or ReplyString.

func (*Reply) String

func (r *Reply) String() string

Return a string representation of the reply and its sub-replies. This method is mainly used for debugging. Use method Reply.Str for fetching a string reply.

func (*Reply) StringMap

func (r *Reply) StringMap() (map[string]string, error)

Return a multi-bulk reply as a map[string]string or an error. The reply elements must be in a "key value key value..."-style order.

func (*Reply) Strings

func (r *Reply) Strings() ([]string, error)

Return a multi-bulk reply as a slice of strings or an error. The reply type must be ReplyMulti and its elements must be ReplyString.

func (*Reply) Type

func (r *Reply) Type() ReplyType

Type returns the type of the reply.

type ReplyType

type ReplyType uint8

ReplyType describes the type of reply.

Possbile values are:

ReplyStatus -- status reply ReplyError -- error reply ReplyInteger -- integer reply ReplyNil -- nil reply ReplyString -- string reply ReplyMulti -- multi-bulk or multi-command reply

const (
	ReplyStatus ReplyType = iota
	ReplyError
	ReplyInteger
	ReplyNil
	ReplyString
	ReplyMulti
)

type Subscription

type Subscription struct {
	// contains filtered or unexported fields
}

Subscription is a structure for holding a Redis subscription for multiple channels.

func (*Subscription) Close

func (s *Subscription) Close()

Close the Subscription and return its connection to the connection pool.

func (*Subscription) PSubscribe

func (s *Subscription) PSubscribe(patterns ...string) *Error

Subscribe to given patterns or return an error.

func (*Subscription) PUnsubscribe

func (s *Subscription) PUnsubscribe(patterns ...string) *Error

Unsubscribe from given patterns or return an error.

func (*Subscription) Subscribe

func (s *Subscription) Subscribe(channels ...string) *Error

Subscribe to given channels or return an error.

func (*Subscription) Unsubscribe

func (s *Subscription) Unsubscribe(channels ...string) *Error

Unsubscribe from given channels or return an error.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL