1
0
mirror of https://github.com/astaxie/beego.git synced 2024-06-26 03:44:14 +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 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
##how many adapter support
Now this cache support memory/redis/memcache
## how to use it
first you must import it
## What adapters are supported?
As of now this cache support memory, Memcache and Redis.
## How to use it?
First you must import it
import (
"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}`)
use it like this:
Use it like this:
bm.Put("astaxie", 1, 10)
bm.Get("astaxie")
bm.IsExist("astaxie")
bm.Delete("astaxie")
## memory adapter
memory adapter config like this:
## Memory adapter
Configure memory adapter like this:
{"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"}
## redis adapter
redis adapter use the [redigo](github.com/garyburd/redigo/redis) client.
## Redis adapter
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
}
//config is json {"interval":360}
// config need to be correct JSON as string: {"interval":360}
func NewCache(adapterName, config string) (Cache, error) {
adapter, ok := adapters[adapterName]
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
##how many providers support
Now this sessionmanager support memory/file/redis/mysql
## What providers are supported?
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 (
"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
use memory as providers:
* Use **memory** as provider:
func init() {
globalSessions, _ = session.NewManager("memory", "gosessionid", 3600,"")
go globalSessions.GC()
}
func init() {
globalSessions, _ = session.NewManager("memory", "gosessionid", 3600,"")
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() {
globalSessions, _ = session.NewManager("mysql", "gosessionid", 3600,"username:password@protocol(address)/dbname?param=value")
go globalSessions.GC()
}
func init() {
globalSessions, _ = session.NewManager("file", "gosessionid", 3600, "./tmp")
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() {
globalSessions, _ = session.NewManager("file", "gosessionid", 3600,"./tmp")
go globalSessions.GC()
}
func init() {
globalSessions, _ = session.NewManager("redis", "gosessionid", 3600, "127.0.0.1:6379")
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() {
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
Finally in the handlerfunc you can use it like this
func login(w http.ResponseWriter, r *http.Request) {
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"])
}
}
##How to write own provider
When we develop a web app, maybe you want to write a provider because you must meet the requirements.
## How to write own provider?
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 {
Set(key, value interface{}) error //set session value
Get(key interface{}) interface{} //get session value
Delete(key interface{}) error //delete session value
SessionID() string //back current sessionID
Set(key, value interface{}) error // set session value
Get(key interface{}) interface{} // get session value
Delete(key interface{}) error // delete session value
SessionID() string // return current sessionID
SessionRelease() // release the resource
}
@ -93,6 +95,7 @@ Write a provider is so easy. You only define two struct type(Session and Provide
SessionGC()
}
##LICENSE
BSD License http://creativecommons.org/licenses/BSD/
## LICENSE
BSD License http://creativecommons.org/licenses/BSD/