关于 Goravel

Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。 作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。

欢迎 star 与 issues :)

缓存模块

介绍

facades.Cache

配置

config/cache.phpredis

可用的缓存驱动

rediscustom

缓存使用

从缓存中获取数据

value := facades.Cache.Get("goravel", func() interface{} {
	return "default"
})
funcfuncfunc() interface{}
value := facades.Cache.Get("goravel", func() interface{} {
	return "default"
})

检查缓存项是否存在

value := facades.Cache.Has("goravel")

获取和存储

有时你可能想从缓存中获取一个数据,而当请求的缓存项不存在时,程序能为你存储一个默认值。

value, err := facades.Cache.Remember("goravel", 5 * time.Second, func() interface{} {
	return "goravel"
})
Remember
RememberForever
value, err := facades.Cache.RememberForever("goravel", func() interface{} {
	return "default"
})

获取和删除

value := facades.Cache.Pull("goravel", "default")

在缓存中存储数据

err := facades.Cache.Put("goravel", "value", 5 * time.Second)

如果缓存的过期时间设置为 0, 则缓存将永久有效:

err := facades.Cache.Put("goravel", "value", 0)

只存储没有的数据

Addtruefalse
res := facades.Cache.Add("goravel", "value", 5 * time.Second)

数据永久存储

ForeverForget
res := facades.Cache.Forever("goravel", "value")

从缓存中删除数据

res := facades.Cache.Forget("goravel")
Flush
res := facades.Cache.Flush()

添加自定义缓存驱动

配置

config/cache.phpcustom
viaframeworkcontractscacheStore
//config/cache.php
"stores": map[string]interface{}{
	"redis": map[string]interface{}{
		"driver": "redis",
		"connection": "default",
	},
	"custom": map[string]interface{}{
		"driver": "custom",
		"via": Logger{},//自定义驱动
	},
},

编写驱动

frameworkcontractscacheStoreconfig/cache.goapp/extensions
//frameworkcontractscacheStore
package cache

import "time"

type Store interface {
	//Get Retrieve an item from the cache by key.
	Get(key string, defaults interface{}) interface{}

	//Has Determine if an item exists in the cache.
	Has(key string) bool

	//Put Store an item in the cache for a given number of seconds.
	Put(key string, value interface{}, seconds time.Duration) error

	//Pull Retrieve an item from the cache and delete it.
	Pull(key string, defaults interface{}) interface{}

	//Add Store an item in the cache if the key does not exist.
	Add(key string, value interface{}, seconds time.Duration) bool

	//Remember Get an item from the cache, or execute the given Closure and store the result.
	Remember(key string, ttl time.Duration, callback func() interface{}) (interface{}, error)

	//RememberForever Get an item from the cache, or execute the given Closure and store the result forever.
	RememberForever(key string, callback func() interface{}) (interface{}, error)

	//Forever Store an item in the cache indefinitely.
	Forever(key string, value interface{}) bool

	//Forget Remove an item from the cache.
	Forget(key string) bool

	//Flush Remove all items from the cache.
	Flush() bool
}