1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-25 18:20:55 +00:00

Merge pull request #73 from matrixik/master

Some docs updates
This commit is contained in:
astaxie 2013-06-20 07:28:19 -07:00
commit 67511deea7
3 changed files with 74 additions and 64 deletions

49
cache/README.md vendored
View File

@ -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
View File

@ -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 {

View File

@ -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/