123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package memcache
- import (
- "context"
- )
- // Error represents an error returned in a command reply.
- type Error string
- func (err Error) Error() string { return string(err) }
- const (
- // Flag, 15(encoding) bit+ 17(compress) bit
- // FlagRAW default flag.
- FlagRAW = uint32(0)
- // FlagGOB gob encoding.
- FlagGOB = uint32(1) << 0
- // FlagJSON json encoding.
- FlagJSON = uint32(1) << 1
- // FlagProtobuf protobuf
- FlagProtobuf = uint32(1) << 2
- _flagEncoding = uint32(0xFFFF8000)
- // FlagGzip gzip compress.
- FlagGzip = uint32(1) << 15
- // left mv 31??? not work!!!
- flagLargeValue = uint32(1) << 30
- )
- // Item is an reply to be got or stored in a memcached server.
- type Item struct {
- // Key is the Item's key (250 bytes maximum).
- Key string
- // Value is the Item's value.
- Value []byte
- // Object is the Item's object for use codec.
- Object interface{}
- // Flags are server-opaque flags whose semantics are entirely
- // up to the app.
- Flags uint32
- // Expiration is the cache expiration time, in seconds: either a relative
- // time from now (up to 1 month), or an absolute Unix epoch time.
- // Zero means the Item has no expiration time.
- Expiration int32
- // Compare and swap ID.
- cas uint64
- }
- // Conn represents a connection to a Memcache server.
- // Command Reference: https://github.com/memcached/memcached/wiki/Commands
- type Conn interface {
- // Close closes the connection.
- Close() error
- // Err returns a non-nil value if the connection is broken. The returned
- // value is either the first non-nil value returned from the underlying
- // network connection or a protocol parsing error. Applications should
- // close broken connections.
- Err() error
- // Add writes the given item, if no value already exists for its key.
- // ErrNotStored is returned if that condition is not met.
- Add(item *Item) error
- // Set writes the given item, unconditionally.
- Set(item *Item) error
- // Replace writes the given item, but only if the server *does* already
- // hold data for this key.
- Replace(item *Item) error
- // Get sends a command to the server for gets data.
- Get(key string) (*Item, error)
- // GetMulti is a batch version of Get. The returned map from keys to items
- // may have fewer elements than the input slice, due to memcache cache
- // misses. Each key must be at most 250 bytes in length.
- // If no error is returned, the returned map will also be non-nil.
- GetMulti(keys []string) (map[string]*Item, error)
- // Delete deletes the item with the provided key.
- // The error ErrCacheMiss is returned if the item didn't already exist in
- // the cache.
- Delete(key string) error
- // Increment atomically increments key by delta. The return value is the
- // new value after being incremented or an error. If the value didn't exist
- // in memcached the error is ErrCacheMiss. The value in memcached must be
- // an decimal number, or an error will be returned.
- // On 64-bit overflow, the new value wraps around.
- Increment(key string, delta uint64) (newValue uint64, err error)
- // Decrement atomically decrements key by delta. The return value is the
- // new value after being decremented or an error. If the value didn't exist
- // in memcached the error is ErrCacheMiss. The value in memcached must be
- // an decimal number, or an error will be returned. On underflow, the new
- // value is capped at zero and does not wrap around.
- Decrement(key string, delta uint64) (newValue uint64, err error)
- // CompareAndSwap writes the given item that was previously returned by
- // Get, if the value was neither modified or evicted between the Get and
- // the CompareAndSwap calls. The item's Key should not change between calls
- // but all other item fields may differ. ErrCASConflict is returned if the
- // value was modified in between the calls.
- // ErrNotStored is returned if the value was evicted in between the calls.
- CompareAndSwap(item *Item) error
- // Touch updates the expiry for the given key. The seconds parameter is
- // either a Unix timestamp or, if seconds is less than 1 month, the number
- // of seconds into the future at which time the item will expire.
- //ErrCacheMiss is returned if the key is not in the cache. The key must be
- // at most 250 bytes in length.
- Touch(key string, seconds int32) (err error)
- // Scan converts value read from the memcache into the following
- // common Go types and special types:
- //
- // *string
- // *[]byte
- // *interface{}
- //
- Scan(item *Item, v interface{}) (err error)
- // WithContext return a Conn with its context changed to ctx
- // the context controls the entire lifetime of Conn before you change it
- // NOTE: this method is not thread-safe
- WithContext(ctx context.Context) Conn
- }
|