cache

package
v0.4.15 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2024 License: Apache-2.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Measurements are sorted set of measurements.
	// 	Measurements - measurements/{name}
	Measurements = "measurements"

	// IgnoreItems is sorted set of ignored items for each user
	//  Ignored items      - ignore_items/{user_id}
	IgnoreItems = "ignore_items"

	// HiddenItemsV2 is sorted set of hidden items.
	//  Global hidden items 	- hidden_items_v2
	//  Category hidden items   - hidden_items_v2/{category}
	HiddenItemsV2 = "hidden_items_v2"

	// ItemNeighbors is sorted set of neighbors for each item.
	//  Global item neighbors      - item_neighbors/{item_id}
	//  Categorized item neighbors - item_neighbors/{item_id}/{category}
	ItemNeighbors = "item_neighbors"

	// ItemNeighborsDigest is digest of item neighbors configuration
	//	Item neighbors digest      - item_neighbors_digest/{item_id}
	ItemNeighborsDigest = "item_neighbors_digest"

	// UserNeighbors is sorted set of neighbors for each user.
	//  User neighbors      - user_neighbors/{user_id}
	UserNeighbors = "user_neighbors"

	// UserNeighborsDigest is digest of user neighbors configuration
	//  User neighbors digest      - user_neighbors_digest/{user_id}
	UserNeighborsDigest = "user_neighbors_digest"

	// CollaborativeRecommend is sorted set of collaborative filtering recommendations for each user.
	//  Global recommendation      - collaborative_recommend/{user_id}
	//  Categorized recommendation - collaborative_recommend/{user_id}/{category}
	CollaborativeRecommend = "collaborative_recommend" // collaborative filtering recommendation for each user

	// OfflineRecommend is sorted set of offline recommendation for each user.
	//  Global recommendation      - offline_recommend/{user_id}
	//  Categorized recommendation - offline_recommend/{user_id}/{category}
	OfflineRecommend = "offline_recommend"

	// OfflineRecommendDigest is digest of offline recommendation configuration.
	//	Recommendation digest      - offline_recommend_digest/{user_id}
	OfflineRecommendDigest = "offline_recommend_digest"

	// PopularItems is sorted set of popular items. The format of key:
	//  Global popular items      - latest_items
	//  Categorized popular items - latest_items/{category}
	PopularItems = "popular_items"

	// LatestItems is sorted set of the latest items. The format of key:
	//  Global latest items      - latest_items
	//  Categorized the latest items - latest_items/{category}
	LatestItems = "latest_items"

	// ItemCategories is the set of item categories. The format of key:
	//	Global item categories - item_categories
	ItemCategories = "item_categories"

	LastModifyItemTime          = "last_modify_item_time"           // the latest timestamp that a user related data was modified
	LastModifyUserTime          = "last_modify_user_time"           // the latest timestamp that an item related data was modified
	LastUpdateUserRecommendTime = "last_update_user_recommend_time" // the latest timestamp that a user's recommendation was updated
	LastUpdateUserNeighborsTime = "last_update_user_neighbors_time" // the latest timestamp that a user's neighbors item was updated
	LastUpdateItemNeighborsTime = "last_update_item_neighbors_time" // the latest timestamp that an item's neighbors was updated

	// GlobalMeta is global meta information
	GlobalMeta                 = "global_meta"
	DataImported               = "data_imported"
	NumUsers                   = "num_users"
	NumItems                   = "num_items"
	NumUserLabels              = "num_user_labels"
	NumItemLabels              = "num_item_labels"
	NumTotalPosFeedbacks       = "num_total_pos_feedbacks"
	NumValidPosFeedbacks       = "num_valid_pos_feedbacks"
	NumValidNegFeedbacks       = "num_valid_neg_feedbacks"
	LastFitMatchingModelTime   = "last_fit_matching_model_time"
	LastFitRankingModelTime    = "last_fit_ranking_model_time"
	LastUpdateLatestItemsTime  = "last_update_latest_items_time"  // the latest timestamp that latest items were updated
	LastUpdatePopularItemsTime = "last_update_popular_items_time" // the latest timestamp that popular items were updated
	UserNeighborIndexRecall    = "user_neighbor_index_recall"
	ItemNeighborIndexRecall    = "item_neighbor_index_recall"
	MatchingIndexRecall        = "matching_index_recall"
)

Variables

View Source
var (
	ErrObjectNotExist = errors.NotFoundf("object")
	ErrNoDatabase     = errors.NotAssignedf("database")
)

Functions

func BatchKey added in v0.4.0

func BatchKey(prefix string, keys ...string) []string

func GetScores added in v0.3.4

func GetScores(s []Scored) []float64

GetScores resolve scores for a slice of Scored.

func Key added in v0.3.1

func Key(keys ...string) string

Key creates key for cache. Empty field will be ignored.

func ParseRedisClusterURL added in v0.4.8

func ParseRedisClusterURL(redisURL string) (*redis.ClusterOptions, error)

func RemoveScores

func RemoveScores(items []Scored) []string

RemoveScores resolve items for a slice of ScoredItems.

func SortScores added in v0.3.1

func SortScores(scores []Scored)

SortScores sorts scores from high score to low score.

Types

type Database

type Database interface {
	Close() error
	Ping() error
	Init() error
	Scan(work func(string) error) error
	Purge() error

	Set(ctx context.Context, values ...Value) error
	Get(ctx context.Context, name string) *ReturnValue
	Delete(ctx context.Context, name string) error

	GetSet(ctx context.Context, key string) ([]string, error)
	SetSet(ctx context.Context, key string, members ...string) error
	AddSet(ctx context.Context, key string, members ...string) error
	RemSet(ctx context.Context, key string, members ...string) error

	AddSorted(ctx context.Context, sortedSets ...SortedSet) error
	GetSorted(ctx context.Context, key string, begin, end int) ([]Scored, error)
	GetSortedByScore(ctx context.Context, key string, begin, end float64) ([]Scored, error)
	RemSortedByScore(ctx context.Context, key string, begin, end float64) error
	SetSorted(ctx context.Context, key string, scores []Scored) error
	RemSorted(ctx context.Context, members ...SetMember) error
}

Database is the common interface for cache store.

func Open

func Open(path, tablePrefix string) (Database, error)

Open a connection to a database.

type MongoDB added in v0.4.0

type MongoDB struct {
	storage.TablePrefix
	// contains filtered or unexported fields
}

func (MongoDB) AddSet added in v0.4.0

func (m MongoDB) AddSet(ctx context.Context, name string, members ...string) error

func (MongoDB) AddSorted added in v0.4.0

func (m MongoDB) AddSorted(ctx context.Context, sortedSets ...SortedSet) error

func (MongoDB) Close added in v0.4.0

func (m MongoDB) Close() error

func (MongoDB) Delete added in v0.4.0

func (m MongoDB) Delete(ctx context.Context, name string) error

func (MongoDB) Get added in v0.4.0

func (m MongoDB) Get(ctx context.Context, name string) *ReturnValue

func (MongoDB) GetSet added in v0.4.0

func (m MongoDB) GetSet(ctx context.Context, name string) ([]string, error)

func (MongoDB) GetSorted added in v0.4.0

func (m MongoDB) GetSorted(ctx context.Context, name string, begin, end int) ([]Scored, error)

func (MongoDB) GetSortedByScore added in v0.4.0

func (m MongoDB) GetSortedByScore(ctx context.Context, name string, begin, end float64) ([]Scored, error)

func (MongoDB) Init added in v0.4.0

func (m MongoDB) Init() error

func (MongoDB) Ping added in v0.4.10

func (m MongoDB) Ping() error

func (MongoDB) Purge added in v0.4.7

func (m MongoDB) Purge() error

func (MongoDB) RemSet added in v0.4.0

func (m MongoDB) RemSet(ctx context.Context, name string, members ...string) error

func (MongoDB) RemSorted added in v0.4.0

func (m MongoDB) RemSorted(ctx context.Context, members ...SetMember) error

func (MongoDB) RemSortedByScore added in v0.4.0

func (m MongoDB) RemSortedByScore(ctx context.Context, name string, begin, end float64) error

func (MongoDB) Scan added in v0.4.1

func (m MongoDB) Scan(work func(string) error) error

func (MongoDB) Set added in v0.4.0

func (m MongoDB) Set(ctx context.Context, values ...Value) error

func (MongoDB) SetSet added in v0.4.0

func (m MongoDB) SetSet(ctx context.Context, name string, members ...string) error

func (MongoDB) SetSorted added in v0.4.0

func (m MongoDB) SetSorted(ctx context.Context, name string, scores []Scored) error

type NoDatabase

type NoDatabase struct{}

NoDatabase means no database used for cache.

func (NoDatabase) AddSet added in v0.3.1

func (NoDatabase) AddSet(_ context.Context, _ string, _ ...string) error

AddSet method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) AddSorted added in v0.3.2

func (NoDatabase) AddSorted(_ context.Context, _ ...SortedSet) error

AddSorted method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Close

func (NoDatabase) Close() error

Close method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Delete added in v0.3.1

func (NoDatabase) Delete(_ context.Context, _ string) error

Delete method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Get added in v0.4.0

Get method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetSet added in v0.3.1

func (NoDatabase) GetSet(_ context.Context, _ string) ([]string, error)

GetSet method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetSorted added in v0.3.1

func (NoDatabase) GetSorted(_ context.Context, _ string, _, _ int) ([]Scored, error)

GetSorted method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetSortedByScore added in v0.3.3

func (NoDatabase) GetSortedByScore(_ context.Context, _ string, _, _ float64) ([]Scored, error)

GetSortedByScore method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Init added in v0.4.0

func (NoDatabase) Init() error

Init method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Ping added in v0.4.10

func (NoDatabase) Ping() error

func (NoDatabase) Purge added in v0.4.7

func (NoDatabase) Purge() error

func (NoDatabase) RemSet added in v0.3.1

func (NoDatabase) RemSet(_ context.Context, _ string, _ ...string) error

RemSet method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) RemSorted added in v0.3.1

func (NoDatabase) RemSorted(_ context.Context, _ ...SetMember) error

RemSorted method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) RemSortedByScore added in v0.3.4

func (NoDatabase) RemSortedByScore(_ context.Context, _ string, _, _ float64) error

RemSortedByScore method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Scan added in v0.4.1

func (NoDatabase) Scan(_ func(string) error) error

func (NoDatabase) Set added in v0.4.0

func (NoDatabase) Set(_ context.Context, _ ...Value) error

func (NoDatabase) SetSet added in v0.3.1

func (NoDatabase) SetSet(_ context.Context, _ string, _ ...string) error

SetSet method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) SetSorted added in v0.3.1

func (NoDatabase) SetSorted(_ context.Context, _ string, _ []Scored) error

SetSorted method of NoDatabase returns ErrNoDatabase.

type Redis

type Redis struct {
	storage.TablePrefix
	// contains filtered or unexported fields
}

Redis cache storage.

func (*Redis) AddSet added in v0.3.1

func (r *Redis) AddSet(ctx context.Context, key string, members ...string) error

AddSet adds members to a set in Redis.

func (*Redis) AddSorted added in v0.3.2

func (r *Redis) AddSorted(ctx context.Context, sortedSets ...SortedSet) error

AddSorted add scores to sorted set.

func (*Redis) Close

func (r *Redis) Close() error

Close redis connection.

func (*Redis) Delete added in v0.3.1

func (r *Redis) Delete(ctx context.Context, key string) error

Delete object from Redis.

func (*Redis) Get added in v0.4.0

func (r *Redis) Get(ctx context.Context, key string) *ReturnValue

Get returns a value from Redis.

func (*Redis) GetSet added in v0.3.1

func (r *Redis) GetSet(ctx context.Context, key string) ([]string, error)

GetSet returns members of a set from Redis.

func (*Redis) GetSorted added in v0.3.1

func (r *Redis) GetSorted(ctx context.Context, key string, begin, end int) ([]Scored, error)

GetSorted get scores from sorted set.

func (*Redis) GetSortedByScore added in v0.3.3

func (r *Redis) GetSortedByScore(ctx context.Context, key string, begin, end float64) ([]Scored, error)

func (*Redis) Init added in v0.4.0

func (r *Redis) Init() error

Init nothing.

func (*Redis) Ping added in v0.4.10

func (r *Redis) Ping() error

func (*Redis) Purge added in v0.4.7

func (r *Redis) Purge() error

func (*Redis) RemSet added in v0.3.1

func (r *Redis) RemSet(ctx context.Context, key string, members ...string) error

RemSet removes members from a set in Redis.

func (*Redis) RemSorted added in v0.3.1

func (r *Redis) RemSorted(ctx context.Context, members ...SetMember) error

RemSorted method of NoDatabase returns ErrNoDatabase.

func (*Redis) RemSortedByScore added in v0.3.4

func (r *Redis) RemSortedByScore(ctx context.Context, key string, begin, end float64) error

func (*Redis) Scan added in v0.4.1

func (r *Redis) Scan(work func(string) error) error

func (*Redis) Set added in v0.4.0

func (r *Redis) Set(ctx context.Context, values ...Value) error

func (*Redis) SetSet added in v0.3.1

func (r *Redis) SetSet(ctx context.Context, key string, members ...string) error

SetSet overrides a set with members in Redis.

func (*Redis) SetSorted added in v0.3.1

func (r *Redis) SetSorted(ctx context.Context, key string, scores []Scored) error

SetSorted set scores in sorted set and clear previous scores.

type ReturnValue added in v0.4.0

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

func (*ReturnValue) Integer added in v0.4.0

func (r *ReturnValue) Integer() (int, error)

func (*ReturnValue) String added in v0.4.0

func (r *ReturnValue) String() (string, error)

func (*ReturnValue) Time added in v0.4.0

func (r *ReturnValue) Time() (time.Time, error)

type SQLDatabase added in v0.4.0

type SQLDatabase struct {
	storage.TablePrefix
	// contains filtered or unexported fields
}

func (*SQLDatabase) AddSet added in v0.4.0

func (db *SQLDatabase) AddSet(ctx context.Context, key string, members ...string) error

func (*SQLDatabase) AddSorted added in v0.4.0

func (db *SQLDatabase) AddSorted(ctx context.Context, sortedSets ...SortedSet) error

func (*SQLDatabase) Close added in v0.4.0

func (db *SQLDatabase) Close() error

func (*SQLDatabase) Delete added in v0.4.0

func (db *SQLDatabase) Delete(ctx context.Context, name string) error

func (*SQLDatabase) Get added in v0.4.0

func (db *SQLDatabase) Get(ctx context.Context, name string) *ReturnValue

func (*SQLDatabase) GetSet added in v0.4.0

func (db *SQLDatabase) GetSet(ctx context.Context, key string) ([]string, error)

func (*SQLDatabase) GetSorted added in v0.4.0

func (db *SQLDatabase) GetSorted(ctx context.Context, key string, begin, end int) ([]Scored, error)

func (*SQLDatabase) GetSortedByScore added in v0.4.0

func (db *SQLDatabase) GetSortedByScore(ctx context.Context, key string, begin, end float64) ([]Scored, error)

func (*SQLDatabase) Init added in v0.4.0

func (db *SQLDatabase) Init() error

func (*SQLDatabase) Ping added in v0.4.10

func (db *SQLDatabase) Ping() error

func (*SQLDatabase) Purge added in v0.4.7

func (db *SQLDatabase) Purge() error

func (*SQLDatabase) RemSet added in v0.4.0

func (db *SQLDatabase) RemSet(ctx context.Context, key string, members ...string) error

func (*SQLDatabase) RemSorted added in v0.4.0

func (db *SQLDatabase) RemSorted(ctx context.Context, members ...SetMember) error

func (*SQLDatabase) RemSortedByScore added in v0.4.0

func (db *SQLDatabase) RemSortedByScore(ctx context.Context, key string, begin, end float64) error

func (*SQLDatabase) Scan added in v0.4.1

func (db *SQLDatabase) Scan(work func(string) error) error

func (*SQLDatabase) Set added in v0.4.0

func (db *SQLDatabase) Set(ctx context.Context, values ...Value) error

func (*SQLDatabase) SetSet added in v0.4.0

func (db *SQLDatabase) SetSet(ctx context.Context, key string, members ...string) error

func (*SQLDatabase) SetSorted added in v0.4.0

func (db *SQLDatabase) SetSorted(ctx context.Context, key string, scores []Scored) error

type SQLDriver added in v0.4.0

type SQLDriver int
const (
	MySQL SQLDriver = iota
	Postgres
	SQLite
	Oracle
)

type SQLSet added in v0.4.4

type SQLSet struct {
	Name   string `gorm:"type:varchar(256);primaryKey"`
	Member string `gorm:"type:varchar(256);primaryKey"`
}

type SQLSortedSet added in v0.4.4

type SQLSortedSet struct {
	Name   string  `gorm:"type:varchar(256);primaryKey;index:name"`
	Member string  `gorm:"type:varchar(256);primaryKey"`
	Score  float64 `gorm:"type:double precision;not null;index:name"`
}

type SQLValue added in v0.4.4

type SQLValue struct {
	Name  string `gorm:"type:varchar(256);primaryKey"`
	Value string `gorm:"type:varchar(256);not null"`
}

type Scored added in v0.2.5

type Scored struct {
	Id    string
	Score float64
}

Scored associate a id with a score.

func CreateScoredItems

func CreateScoredItems[T float64 | float32](itemIds []string, scores []T) []Scored

CreateScoredItems from items and scores.

type SetMember added in v0.4.0

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

func Member added in v0.4.0

func Member(name, member string) SetMember

type SortedSet added in v0.4.0

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

func Sorted added in v0.4.0

func Sorted(name string, scores []Scored) SortedSet

type Value added in v0.4.0

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

func Integer added in v0.4.0

func Integer(name string, value int) Value

func String added in v0.4.0

func String(name, value string) Value

func Time added in v0.4.0

func Time(name string, value time.Time) Value

Jump to

Keyboard shortcuts

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