mirror of
https://github.com/astaxie/beego.git
synced 2024-11-25 18:20:55 +00:00
commit
67511deea7
49
cache/README.md
vendored
49
cache/README.md
vendored
@ -1,52 +1,59 @@
|
|||||||
## cache
|
## cache
|
||||||
cache is a golang cache manager. It can use cache for many adapters. The repo is inspired by `database/sql` .
|
cache is a Go cache manager. It can use many cache adapters. The repo is inspired by `database/sql` .
|
||||||
|
|
||||||
##How to install
|
|
||||||
|
## How to install?
|
||||||
|
|
||||||
go get github.com/astaxie/beego/cache
|
go get github.com/astaxie/beego/cache
|
||||||
|
|
||||||
|
|
||||||
##how many adapter support
|
|
||||||
|
|
||||||
Now this cache support memory/redis/memcache
|
## What adapters are supported?
|
||||||
|
|
||||||
## how to use it
|
|
||||||
first you must import it
|
|
||||||
|
|
||||||
|
As of now this cache support memory, Memcache and Redis.
|
||||||
|
|
||||||
|
|
||||||
|
## How to use it?
|
||||||
|
|
||||||
|
First you must import it
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/astaxie/beego/cache"
|
"github.com/astaxie/beego/cache"
|
||||||
)
|
)
|
||||||
|
|
||||||
then init an Cache(memory adapter)
|
Then init a Cache (example with memory adapter)
|
||||||
|
|
||||||
bm, err := NewCache("memory", `{"interval":60}`)
|
bm, err := NewCache("memory", `{"interval":60}`)
|
||||||
|
|
||||||
use it like this:
|
Use it like this:
|
||||||
|
|
||||||
bm.Put("astaxie", 1, 10)
|
bm.Put("astaxie", 1, 10)
|
||||||
bm.Get("astaxie")
|
bm.Get("astaxie")
|
||||||
bm.IsExist("astaxie")
|
bm.IsExist("astaxie")
|
||||||
bm.Delete("astaxie")
|
bm.Delete("astaxie")
|
||||||
|
|
||||||
## memory adapter
|
|
||||||
memory adapter config like this:
|
## Memory adapter
|
||||||
|
|
||||||
|
Configure memory adapter like this:
|
||||||
|
|
||||||
{"interval":60}
|
{"interval":60}
|
||||||
|
|
||||||
interval means the gc time. The cache will every interval time to check wheather have item expired.
|
interval means the gc time. The cache will check at each time interval, whether item has expired.
|
||||||
|
|
||||||
## memcache adapter
|
|
||||||
memory adapter use the vitess's [memcache](code.google.com/p/vitess/go/memcache) client.
|
|
||||||
|
|
||||||
the config like this:
|
## Memcache adapter
|
||||||
|
|
||||||
|
memory adapter use the vitess's [Memcache](http://code.google.com/p/vitess/go/memcache) client.
|
||||||
|
|
||||||
|
Configure like this:
|
||||||
|
|
||||||
{"conn":"127.0.0.1:11211"}
|
{"conn":"127.0.0.1:11211"}
|
||||||
|
|
||||||
|
|
||||||
## redis adapter
|
## Redis adapter
|
||||||
redis adapter use the [redigo](github.com/garyburd/redigo/redis) client.
|
|
||||||
|
|
||||||
the config like this:
|
Redis adapter use the [redigo](http://github.com/garyburd/redigo/redis) client.
|
||||||
|
|
||||||
{"conn":":6039"}
|
Configure like this:
|
||||||
|
|
||||||
|
{"conn":":6039"}
|
||||||
|
2
cache/cache.go
vendored
2
cache/cache.go
vendored
@ -28,7 +28,7 @@ func Register(name string, adapter Cache) {
|
|||||||
adapters[name] = adapter
|
adapters[name] = adapter
|
||||||
}
|
}
|
||||||
|
|
||||||
//config is json {"interval":360}
|
// config need to be correct JSON as string: {"interval":360}
|
||||||
func NewCache(adapterName, config string) (Cache, error) {
|
func NewCache(adapterName, config string) (Cache, error) {
|
||||||
adapter, ok := adapters[adapterName]
|
adapter, ok := adapters[adapterName]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
@ -1,60 +1,60 @@
|
|||||||
sessionmanager
|
session
|
||||||
==============
|
==============
|
||||||
|
|
||||||
sessionmanager is a golang session manager. It can use session for many providers.Just like the `database/sql` and `database/sql/driver`.
|
session is a Go session manager. It can use many session providers. Just like the `database/sql` and `database/sql/driver`.
|
||||||
|
|
||||||
##How to install
|
## How to install?
|
||||||
|
|
||||||
go get github.com/astaxie/beego/session
|
go get github.com/astaxie/beego/session
|
||||||
|
|
||||||
|
|
||||||
##how many providers support
|
## What providers are supported?
|
||||||
Now this sessionmanager support memory/file/redis/mysql
|
|
||||||
|
As of now this session manager support memory, file, Redis and MySQL.
|
||||||
|
|
||||||
|
|
||||||
|
## How to use it?
|
||||||
|
|
||||||
##How do we use it?
|
First you must import it
|
||||||
|
|
||||||
first you must import it
|
|
||||||
|
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/astaxie/beego/session"
|
"github.com/astaxie/beego/session"
|
||||||
)
|
)
|
||||||
|
|
||||||
then in you web app init the globalsession manager
|
Then in you web app init the global session manager
|
||||||
|
|
||||||
var globalSessions *session.Manager
|
var globalSessions *session.Manager
|
||||||
|
|
||||||
use memory as providers:
|
* Use **memory** as provider:
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
globalSessions, _ = session.NewManager("memory", "gosessionid", 3600,"")
|
globalSessions, _ = session.NewManager("memory", "gosessionid", 3600,"")
|
||||||
go globalSessions.GC()
|
go globalSessions.GC()
|
||||||
}
|
}
|
||||||
|
|
||||||
use mysql as providers,the last param is the DNS, learn more from [mysql](https://github.com/Go-SQL-Driver/MySQL#dsn-data-source-name):
|
* Use **file** as provider, the last param is the path where you want file to be stored:
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
globalSessions, _ = session.NewManager("mysql", "gosessionid", 3600,"username:password@protocol(address)/dbname?param=value")
|
globalSessions, _ = session.NewManager("file", "gosessionid", 3600, "./tmp")
|
||||||
go globalSessions.GC()
|
go globalSessions.GC()
|
||||||
}
|
}
|
||||||
|
|
||||||
use file as providers,the last param is the path where to store the file:
|
* Use **Redis** as provider, the last param is the Redis conn address:
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
globalSessions, _ = session.NewManager("file", "gosessionid", 3600,"./tmp")
|
globalSessions, _ = session.NewManager("redis", "gosessionid", 3600, "127.0.0.1:6379")
|
||||||
go globalSessions.GC()
|
go globalSessions.GC()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
* Use **MySQL** as provider, the last param is the DSN, learn more from [mysql](https://github.com/Go-SQL-Driver/MySQL#dsn-data-source-name):
|
||||||
|
|
||||||
use redis as providers,the last param is the redis's conn address:
|
func init() {
|
||||||
|
globalSessions, _ = session.NewManager(
|
||||||
|
"mysql", "gosessionid", 3600, "username:password@protocol(address)/dbname?param=value")
|
||||||
|
go globalSessions.GC()
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
Finally in the handlerfunc you can use it like this
|
||||||
globalSessions, _ = session.NewManager("redis", "gosessionid", 3600,"127.0.0.1:6379")
|
|
||||||
go globalSessions.GC()
|
|
||||||
}
|
|
||||||
|
|
||||||
at last in the handlerfunc you can use it like this
|
|
||||||
|
|
||||||
func login(w http.ResponseWriter, r *http.Request) {
|
func login(w http.ResponseWriter, r *http.Request) {
|
||||||
sess := globalSessions.SessionStart(w, r)
|
sess := globalSessions.SessionStart(w, r)
|
||||||
@ -70,19 +70,21 @@ at last in the handlerfunc you can use it like this
|
|||||||
fmt.Println("password:", r.Form["password"])
|
fmt.Println("password:", r.Form["password"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##How to write own provider
|
## How to write own provider?
|
||||||
When we develop a web app, maybe you want to write a provider because you must meet the requirements.
|
|
||||||
|
|
||||||
Write a provider is so easy. You only define two struct type(Session and Provider),which satisfy the interface definition.Maybe The memory provider is a good example for you.
|
When you develop a web app, maybe you want to write own provider because you must meet the requirements.
|
||||||
|
|
||||||
|
Writing a provider is easy. You only need to define two struct types
|
||||||
|
(Session and Provider), which satisfy the interface definition.
|
||||||
|
Maybe you will find the **memory** provider as good example.
|
||||||
|
|
||||||
type SessionStore interface {
|
type SessionStore interface {
|
||||||
Set(key, value interface{}) error //set session value
|
Set(key, value interface{}) error // set session value
|
||||||
Get(key interface{}) interface{} //get session value
|
Get(key interface{}) interface{} // get session value
|
||||||
Delete(key interface{}) error //delete session value
|
Delete(key interface{}) error // delete session value
|
||||||
SessionID() string //back current sessionID
|
SessionID() string // return current sessionID
|
||||||
SessionRelease() // release the resource
|
SessionRelease() // release the resource
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,6 +95,7 @@ Write a provider is so easy. You only define two struct type(Session and Provide
|
|||||||
SessionGC()
|
SessionGC()
|
||||||
}
|
}
|
||||||
|
|
||||||
##LICENSE
|
|
||||||
|
|
||||||
BSD License http://creativecommons.org/licenses/BSD/
|
## LICENSE
|
||||||
|
|
||||||
|
BSD License http://creativecommons.org/licenses/BSD/
|
||||||
|
Loading…
Reference in New Issue
Block a user