google.golang.org/appengine/memcache(v1.6.8) 패키지

memcache 패키지는 작은 임의의 데이터 청크를 위한 App Engine 분산형 인메모리 키-값 저장소의 클라이언트를 제공합니다.

기본 작업은 항목을 가져오고 설정하며, 문자열로 키가 지정됩니다.

item0, err := memcache.Get(c, "key")
if err != nil && err != memcache.ErrCacheMiss {
    return err
}
if err == nil {
    fmt.Fprintf(w, "memcache hit: Key=%q Val=[% x]\n", item0.Key, item0.Value)
} else {
    fmt.Fprintf(w, "memcache miss\n")
}

item1 := &memcache.Item{
    Key:   "foo",
    Value: []byte("bar"),
}
if err := memcache.Set(c, item1); err != nil {
    return err
}

변수

ErrCacheMiss, ErrCASConflict, ErrNoStats, ErrNotStored, ErrServerError

var (
	// ErrCacheMiss means that an operation failed
	// because the item wasn't present.
	ErrCacheMiss = errors.New("memcache: cache miss")
	// ErrCASConflict means that a CompareAndSwap call failed due to the
	// cached value being modified between the Get and the CompareAndSwap.
	// If the cached value was simply evicted rather than replaced,
	// ErrNotStored will be returned instead.
	ErrCASConflict = errors.New("memcache: compare-and-swap conflict")
	// ErrNoStats means that no statistics were available.
	ErrNoStats = errors.New("memcache: no statistics available")
	// ErrNotStored means that a conditional write operation (i.e. Add or
	// CompareAndSwap) failed because the condition was not satisfied.
	ErrNotStored = errors.New("memcache: item not stored")
	// ErrServerError means that a server error occurred.
	ErrServerError = errors.New("memcache: server error")
)

Gob, JSON

var (
	// Gob is a Codec that uses the gob package.
	Gob = Codec{gobMarshal, gobUnmarshal}
	// JSON is a Codec that uses the json package.
	JSON = Codec{json.Marshal, json.Unmarshal}
)

함수

func Add

func Add(c context.Context, item *Item) error

Add는 해당 키의 값이 아직 없을 경우 지정된 항목을 씁니다. 해당 조건이 충족되지 않으면 ErrNotStored가 반환됩니다.

func AddMulti

func AddMulti(c context.Context, item []*Item) error

AddMulti는 Add의 일괄 버전입니다. appengine.MultiError가 반환될 수 있습니다.

func CompareAndSwap

func CompareAndSwap(c context.Context, item *Item) error

CompareAndSwap은 이전에 Get으로 반환된 주어진 항목을 씁니다. 다만 이 값이 Get 호출과 CompareAndSwap 호출 사이에 수정되거나 삭제되지 않아야 합니다. 항목의 Key는 호출 간에 변경되면 안 되지만 기타 모든 항목 필드는 이와 다를 수 있습니다. 호출 간에 값이 수정된 경우에는 ErrCASConflict가 반환됩니다. 호출 간에 값이 삭제된 경우에는 ErrNotStored가 반환됩니다.

func CompareAndSwapMulti

func CompareAndSwapMulti(c context.Context, item []*Item) error

CompareAndSwapMulti는 CompareAndSwap의 일괄 버전입니다. appengine.MultiError가 반환될 수 있습니다.

func Delete

func Delete(c context.Context, key string) error

Delete는 지정된 키의 항목을 삭제합니다. 지정된 항목을 찾을 수 없으면 ErrCacheMiss가 반환됩니다. 키의 길이는 최대 250바이트여야 합니다.

func DeleteMulti

func DeleteMulti(c context.Context, key []string) error

DeleteMulti는 Delete의 일괄 버전입니다. 키를 찾을 수 없으면 appengine.MultiError가 반환됩니다. 각 키의 길이는 최대 250바이트여야 합니다.

func Flush

func Flush(c context.Context) error

Flush는 모든 항목을 memcache에서 삭제합니다.

func GetMulti

func GetMulti(c context.Context, key []string) (map[string]*Item, error)

GetMulti는 Get의 일괄 버전입니다. memcache 캐시에 없음으로 인해 키에서 항목으로 반환된 맵의 요소 수가 입력 슬라이스보다 적을 수 있습니다. 각 키의 길이는 최대 250바이트여야 합니다.

func Increment

func Increment(c context.Context, key string, delta int64, initialValue uint64) (newValue uint64, err error)

Increment는 지정된 키에 있는 십진수를 델타만큼 원자적으로 증분하며 새 값을 반환합니다. 이 값은 uint64에 맞아야 합니다. 오버플로는 래핑되고 언더플로는 0으로 제한됩니다. 제공된 델타는 음수일 수 있습니다. memcache에 키가 없으면 델타를 적용하기 전에 제공된 초기 값을 사용하여 원자적으로 채웁니다. 키의 길이는 최대 250바이트여야 합니다.

func IncrementExisting

func IncrementExisting(c context.Context, key string, delta int64) (newValue uint64, err error)

IncrementExisting은 Increment와 유사하지만 memcache에 키가 이미 있다고 가정하기 때문에 초기 값을 적용하지 않습니다. IncrementExisting은 초기 값 계산에 많은 비용이 나갈 때 작업을 줄일 수 있습니다. 지정된 항목을 찾을 수 없으면 오류가 반환됩니다.

func PeekMulti

func PeekMulti(c context.Context, key []string) (map[string]*Item, error)

PeekMulti는 Peek의 일괄 버전입니다. GetMulti와 비슷하지만 Item.Timestamps를 추가로 채웁니다.

func Set

func Set(c context.Context, item *Item) error

Set은 지정된 항목을 조건없이 씁니다.

func SetMulti

func SetMulti(c context.Context, item []*Item) error

SetMulti는 Set의 일괄 버전입니다. appengine.MultiError가 반환될 수 있습니다.

코덱

type Codec struct {
	Marshal   func(interface{}) ([]byte, error)
	Unmarshal func([]byte, interface{}) error
}

Codec은 코덱을 구현하는 대칭 함수 쌍을 나타냅니다. Codec을 사용하여 memcache에서 저장하거나 검색한 항목은 결합된 값일 수도 있고 결합되지 않은 값일 수도 있습니다.

Codec를 위해 제공된 모든 메소드는 같은 이름의 패키지 수준 함수와 비슷하게 작동합니다.

func (Codec) Add

func (cd Codec) Add(c context.Context, item *Item) error

Add는 해당 키의 값이 아직 없을 경우 지정된 항목을 씁니다. 해당 조건이 충족되지 않으면 ErrNotStored가 반환됩니다.

func (Codec) AddMulti

func (cd Codec) AddMulti(c context.Context, items []*Item) error

AddMulti는 Add의 일괄 버전입니다. appengine.MultiError가 반환될 수 있습니다.

func (Codec) CompareAndSwap

func (cd Codec) CompareAndSwap(c context.Context, item *Item) error

CompareAndSwap은 이전에 Get으로 반환된 주어진 항목을 씁니다. 다만 이 값이 Get 호출과 CompareAndSwap 호출 사이에 수정되거나 삭제되지 않아야 합니다. 항목의 Key는 호출 간에 변경되면 안 되지만 기타 모든 항목 필드는 이와 다를 수 있습니다. 호출 간에 값이 수정된 경우에는 ErrCASConflict가 반환됩니다. 호출 간에 값이 삭제된 경우에는 ErrNotStored가 반환됩니다.

func (Codec) CompareAndSwapMulti

func (cd Codec) CompareAndSwapMulti(c context.Context, items []*Item) error

CompareAndSwapMulti는 CompareAndSwap의 일괄 버전입니다. appengine.MultiError가 반환될 수 있습니다.

func (Codec) Get

func (cd Codec) Get(c context.Context, key string, v interface{}) (*Item, error)

Get은 지정된 키의 항목을 가져오고, 획득한 값을 v로 디코딩합니다. Memcache 캐시 부적중의 경우 ErrCacheMiss가 반환됩니다. 키의 길이는 최대 250바이트여야 합니다.

func (Codec) Set

func (cd Codec) Set(c context.Context, item *Item) error

Set은 지정된 항목을 조건없이 씁니다.

func (Codec) SetMulti

func (cd Codec) SetMulti(c context.Context, items []*Item) error

SetMulti는 Set의 일괄 버전입니다. appengine.MultiError가 반환될 수 있습니다.

항목

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 value for use with a Codec.
	Object interface{}
	// Flags are server-opaque flags whose semantics are entirely up to the
	// App Engine app.
	Flags uint32
	// Expiration is the maximum duration that the item will stay
	// in the cache.
	// The zero value means the Item has no expiration time.
	// Subsecond precision is ignored.
	// This is not set when getting items.
	Expiration time.Duration

	// ItemTimestamps are server values only returned when calling Peek and PeekMulti.
	// The timestamps are nil when calling Get and GetMulti.
	Timestamps ItemTimestamps
	// contains filtered or unexported fields
}

Item은 memcache 가져오기 및 설정의 단위입니다.

func Get

func Get(c context.Context, key string) (*Item, error)

Get은 지정된 키의 항목을 가져옵니다. memcache 캐시 부적중의 경우 ErrCacheMiss가 반환됩니다. 키의 길이는 최대 250바이트여야 합니다.

func Peek

func Peek(c context.Context, key string) (*Item, error)

Peek는 지정된 키의 항목을 가져오고 Item.Timestamps를 추가로 채웁니다. memcache 캐시 부적중의 경우 ErrCacheMiss가 반환됩니다. 키의 길이는 최대 250바이트여야 합니다.

ItemTimestamps

type ItemTimestamps struct {
	// Expiration is related to Item.Expiration but it is a Time (not a Duration),
	// provided by the server. It is not meant to be set by the user.
	Expiration *time.Time
	// LastAccess is the last time the Item was accessed.
	LastAccess *time.Time
}

ItemTimestamps는 서버에서 선택적으로 제공하는 타임스탬프입니다. Peek 및 PeekMulti를 참조하세요.

통계

type Statistics struct {
	Hits     uint64 // Counter of cache hits
	Misses   uint64 // Counter of cache misses
	ByteHits uint64 // Counter of bytes transferred for gets

	Items uint64 // Items currently in the cache
	Bytes uint64 // Size of all items currently in the cache

	Oldest int64 // Age of access of the oldest item, in seconds
}

Statistics는 memcache 캐시에 대한 통계 집합을 나타냅니다. 만료되었지만 아직 캐시에서 삭제되지 않은 항목이 여기에 포함될 수 있습니다.

func Stats

func Stats(c context.Context) (*Statistics, error)

Stats는 현재 memcache 통계를 검색합니다.