Skip to content

RexCoding-Yu/tang-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TangCache

一个Gorm的缓存插件,当前缓存颗粒度较大,后面会维护小颗粒度的版本。
项目初衷是给New-Api提供一个不错的缓存插件。
使用方法:

func TestSecondLevelCache(t *testing.T) {
	dsn := "name:pwd@tcp(url)/test_tang_cache?charset=utf8mb4&parseTime=True"
	db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})

	redisOption := &redis.Options{
		Addr: "localhost:6379",
		DB:   0,
	}
	redisConfig := &config.RedisConfig{
		Options: redisOption,
	}
	cache, _ := NewTangCache(&config.CacheConfig{
		CacheLevel:           config.CacheLevelAll,
		CacheStorage:         config.CacheStorageRedis,
		RedisConfig:          redisConfig,
		InvalidateWhenUpdate: true,
		CacheTTL:             60 * 60, // 60*60 s
		CacheMaxItemCnt:      0,
	})

	err := db.Use(cache)
	if err != nil {
		return
	}

	type User struct {
		gorm.Model
		UserName string `json:"user_name"`
	}

	err = db.AutoMigrate(&User{})
	if err != nil {
		return
	}
	var users []User
	// 不会命中缓存
	db.Where("user_name = ?", "tangchongjie").Find(&users)
	fmt.Print(users)
	// 命中缓存
	db.Where("user_name = ?", "tangchongjie").Find(&users)
	fmt.Print(users)
}

下载方式

go get github.com/RexCoding-Yu/tang-cache

项目名是为了纪念我的好友兼恩师-阿里架构师唐崇杰

About

TangCache

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages