Go DB6. 使用Redis數(shù)據(jù)庫(kù)

NoSQL(Not Only SQL)驻龟,指的是非關(guān)系型的數(shù)據(jù)庫(kù)蝶桶。目前流行的NOSQL主要有redis、mongoDB阅爽、Cassandra和Membase等。這些數(shù)據(jù)庫(kù)都有高性能逼争、高并發(fā)讀寫等特點(diǎn)优床,目前已經(jīng)廣泛應(yīng)用于各種應(yīng)用中。

Redis

redis是一個(gè)key-value存儲(chǔ)系統(tǒng)誓焦。和Memcached類似胆敞,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)杂伟、list(鏈表)移层、set(集合)和zset(有序集合)。

Go目前支持redis的驅(qū)動(dòng)有如下

https://github.com/garyburd/redigo(推薦)

https://github.com/go-redis/redis

https://github.com/hoisie/redis

https://github.com/alphazero/Go-Redis

https://github.com/simonz05/godis

示例代碼

1赫粥、以redigo驅(qū)動(dòng)為例來演示如何進(jìn)行數(shù)據(jù)的操作:

package main

import (

????"fmt"

????"os"

????"os/signal"

????"syscall"

????"time"

????"github.com/garyburd/redigo/redis"

)

var (

????Pool *redis.Pool

)

func init() {

????redisHost := ":6379"

????Pool = newPool(redisHost)

????close()

}

func newPool(server string) *redis.Pool {

????return &redis.Pool{

????????MaxIdle:? ? 3,

????????IdleTimeout: 240 * time.Second,

????????Dial: func() (redis.Conn, error) {

????????????c, err := redis.Dial("tcp", server)

????????????if err != nil {

????????????????return nil, err

????????????}

????????????return c, err

????????},

????????TestOnBorrow: func(c redis.Conn, t time.Time) error {

????????????_, err := c.Do("PING")

????????????return err

????????},

????}

}

func close() {

????c := make(chan os.Signal, 1)

????signal.Notify(c, os.Interrupt)

????signal.Notify(c, syscall.SIGALRM)

????signal.Notify(c, syscall.SIGKILL)

????go func() {

????????<-c

????????Pool.Close()

????????os.Exit(0)

????}()

}

func Get(key string) ([]byte, error) {

????conn := Pool.Get()

????defer conn.Close()

????var data []byte

????data, err := redis.Bytes(conn.Do("GET", key))

????if err != nil {

????????return data, fmt.Errorf("error get key %s: %v", key, err)

????}

????return data, err

}

func main() {

????test, err := Get("test")

????fmt.Println(test, err)

}

2观话、以goredis驅(qū)動(dòng)為例來演示如何進(jìn)行數(shù)據(jù)的操作:

package main

import (

????"fmt"

????"github.com/astaxie/goredis"

)

func main() {

????var client goredis.Client

????// 設(shè)置端口為redis默認(rèn)端口

????client.Addr = "127.0.0.1:6379"????

????// 字符串操作

????client.Set("a", []byte("hello"))

????val, _ := client.Get("a")

????fmt.Println(string(val))

????client.Del("a")

????// list操作

????vals := []string{"a", "b", "c", "d", "e"}

????for _, v := range vals {

????????client.Rpush("l", []byte(v))

????}

????dbvals, _ := client.Lrange("l", 0, 4)

????for i, v := range dbvals {

????????println(i, ":", string(v))

????}

????client.Del("l")

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市越平,隨后出現(xiàn)的幾起案子频蛔,更是在濱河造成了極大的恐慌,老刑警劉巖秦叛,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晦溪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡挣跋,警方通過查閱死者的電腦和手機(jī)三圆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來避咆,“玉大人舟肉,你說我怎么就攤上這事〔榭猓” “怎么了路媚?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)樊销。 經(jīng)常有香客問我磷籍,道長(zhǎng),這世上最難降的妖魔是什么现柠? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任院领,我火速辦了婚禮,結(jié)果婚禮上够吩,老公的妹妹穿的比我還像新娘比然。我一直安慰自己,他們只是感情好周循,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布强法。 她就那樣靜靜地躺著万俗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饮怯。 梳的紋絲不亂的頭發(fā)上闰歪,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音蓖墅,去河邊找鬼库倘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛论矾,可吹牛的內(nèi)容都是我干的教翩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼贪壳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼饱亿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闰靴,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤彪笼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蚂且,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體配猫,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年膘掰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了章姓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佳遣。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡识埋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出零渐,到底是詐尸還是另有隱情窒舟,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布诵盼,位于F島的核電站惠豺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏风宁。R本人自食惡果不足惜洁墙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戒财。 院中可真熱鬧热监,春花似錦、人聲如沸饮寞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至苦始,卻和暖如春寞钥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陌选。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工理郑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柠贤。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓香浩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親臼勉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邻吭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容