storage

package
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrDataNotExist 数据不存在
	ErrDataNotExist = errors.New("data not exist")
)

Functions

This section is empty.

Types

type Storage added in v0.0.20

type Storage[K comparable, D any, W Warehouse[K, D]] struct {
	// contains filtered or unexported fields
}

Storage 用于缓存数据的存储器

func New added in v0.1.1

func New[K comparable, D any, W Warehouse[K, D]](warehouse W) *Storage[K, D, W]

New 创建一个新的存储器

func (*Storage[K, D, W]) Create added in v0.1.1

func (slf *Storage[K, D, W]) Create(key K, data D) error

Create 创建特定 key 的数据

func (*Storage[K, D, W]) Flush added in v0.1.1

func (slf *Storage[K, D, W]) Flush(errHandle func(data []byte, err error) time.Duration)

Flush 将缓存中的数据全部保存到数据库中,如果保存失败,会调用 errHandle 处理错误,如果 errHandle 返回 >= 0 的时长,则继续尝试保存,否则将跳过本条数据

  • 当 errHandle 为 nil 时,将会无限重试保存,间隔为 100ms

func (*Storage[K, D, W]) LoadMigrationData added in v0.1.1

func (slf *Storage[K, D, W]) LoadMigrationData(data []byte) error

LoadMigrationData 加载迁移数据

func (*Storage[K, D, W]) Migrate added in v0.1.1

func (slf *Storage[K, D, W]) Migrate(keys ...K) (data []byte, err error)

Migrate 迁移数据,如果 keys 为空,则迁移全部数据

func (*Storage[Key, D, W]) Query added in v0.1.1

func (slf *Storage[Key, D, W]) Query(key Key) (v D, err error)

Query 查询特定 key 的数据

func (*Storage[K, D, W]) Save added in v0.0.20

func (slf *Storage[K, D, W]) Save(key K, data D) error

Save 保存特定 key 的数据

type Warehouse added in v0.1.1

type Warehouse[K comparable, D any] interface {
	// GenerateZero 生成一个空的数据对象
	GenerateZero() D

	// Init 用于数据初始化,例如启动时从数据库中加载所有玩家的离线数据等情况
	Init() (map[K][]byte, error)

	// Query 查询特定 key 的数据
	//  - 返回的 err 应该排除数据不存在的错误情况,例如:sql.ErrNoRows
	Query(key K) (data []byte, err error)

	// Create 创建特定 key 的数据
	Create(key K, data []byte) error

	// Save 保存特定 key 的数据
	Save(key K, data []byte) error
}

Warehouse 数据仓库接口,用于数据生产及持久化

Jump to

Keyboard shortcuts

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