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
}