欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:Golang操作Redis

柚子快報激活碼778899分享:Golang操作Redis

http://yzkb.51969.com/

一. Redis介紹

? ? ? ? 1.1 簡介

? ? ? ? Redis是完全開源免費的,遵循BSD協(xié)議,是一個高性能的key-value數(shù)據(jù)庫。

? ? ? ? Redis與其它的key-value緩存產(chǎn)品有以下三個特點:

Redis支持數(shù)據(jù)持久化,可以見內(nèi)存中的數(shù)據(jù)報錯在磁盤中,重啟的時候可以再次加載進行使用。Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供string,list(鏈表),set(集合),hash表等數(shù)據(jù)結(jié)構(gòu)的存儲。Redis支持數(shù)據(jù)備份,即master-slave模式的數(shù)據(jù)備份。

? ? ? ? 1.2 Redis優(yōu)勢

性能極高——Redis能讀的速度是110000次/秒,寫的速度是81000次/秒,單機可以達到15w qps,通常適合做緩存。豐富的數(shù)據(jù)類型——Redis支持二進制案例的strings,lists,hashes,sets及ordered sets數(shù)據(jù)類型操作。原子——Redis的所有操作都是原子的,意思就是要么成功執(zhí)行,要么失敗完全不執(zhí)行。單個操作是原子的。多操作也支持事務(wù),即原子性,通過MULTI和EXEC指令包起來。豐富的特性——Redis還支持publish/subscribe,通知,key過期等特性。

? ? ? ? Redis與其它的key-value存儲有什么不同?

? ? ? ? Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對他們的原子操作,這是一個不同于其它數(shù)據(jù)庫的進化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時對程序員透明,無需進行額外的抽象。

? ? ? ? Redis運行在內(nèi)存中但是可以持久化到磁盤,所以對不同數(shù)據(jù)集進行高速讀寫時需要權(quán)衡內(nèi)存,因為數(shù)據(jù)量不能大于內(nèi)存大小。在內(nèi)存數(shù)據(jù)庫方面的另一個優(yōu)點是,相比在磁盤上相同的復(fù)雜數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來簡單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生,因為他們不需要進行隨機訪問。

? ? ? ? 1.3 redis的使用

? ? ? ? 使用第三方開源的redis庫:github.com/garyburd/redigo/redis

? ? ? ? 命令行輸入:

go get github.com/garyburd/redigo/redis

二. 鏈接Redis

package main

import (

"fmt"

"github.com/garyburd/redigo/redis"

)

func main() {

c, err := redis.Dial("tcp", "127.0.0.1:6379")

if err != nil {

fmt.Println("conn redis fail ", err)

return

}

defer c.Close()

fmt.Println("conn redis succ")

}

三. String類型的Set,Get操作

package main

import (

"fmt"

"github.com/garyburd/redigo/redis"

)

func main() {

c, err := redis.Dial("tcp", "127.0.0.1:6379")

if err != nil {

fmt.Println("conn redis fail ", err)

return

}

defer c.Close()

_, err = c.Do("Set", "abc", 100)

if err != nil {

fmt.Println("set fail", err)

return

}

//將返回結(jié)果轉(zhuǎn)為int類型

r, err := redis.Int(c.Do("Get", "abc"))

if err != nil {

fmt.Println("get fail", err)

return

}

fmt.Println(r)

}

? ? ? ? ?輸出結(jié)果:

? ? ? ? 命令行輸出:

?四. String批量操作

?五. 設(shè)置過期時間

package main

import (

"fmt"

"time"

"github.com/garyburd/redigo/redis"

)

func main() {

c, err := redis.Dial("tcp", "127.0.0.1:6379")

if err != nil {

fmt.Println("conn redis fail ", err)

return

}

defer c.Close()

_, err = c.Do("set", "k1", 1)

if err != nil {

fmt.Println("set fail ", err)

return

}

//設(shè)置過期時間10秒

_, err = c.Do("expire", "k1", 10)

if err != nil {

fmt.Println("expire fail", err)

return

}

r, err := redis.Int(c.Do("get", "k1"))

if err != nil {

fmt.Println("get fail ", err)

return

}

fmt.Printf("k1=%d\n", r)

time.Sleep(10 * time.Second)

//過10秒已經(jīng)過期 再獲得失敗

r, err = redis.Int(c.Do("get", "k1"))

if err != nil {

fmt.Println("get fail ", err)

return

}

fmt.Printf("k1=%d\n", r)

}

? ? ? ? 輸出:

?六. List隊列操作

????????七.? Hash表

? ? ? ? 八. Redis連接池?

package main

import (

"fmt"

"github.com/garyburd/redigo/redis"

)

var pool *redis.Pool

func init() {

pool = &redis.Pool{

MaxIdle: 16, //最初的連接數(shù)量

//MaxActive: 1000000, //最大連接數(shù)量

MaxActive: 0, //連接池最大連接數(shù)量,不確定可以使用0(0表示自動定義),按需分配

IdleTimeout: 300, //連接關(guān)閉時間300秒,(300秒內(nèi)不使用自動關(guān)閉)

Dial: func() (redis.Conn, error) { //要連接的數(shù)據(jù)庫

return redis.Dial("tcp", "127.0.0.1:6379")

},

}

}

func main() {

c := pool.Get() //從連接池中取一個連接

_, err := c.Do("set", "k1", "v1")

if err != nil {

fmt.Println("set fail ", err)

return

}

v, err := redis.String(c.Do("get", "k1"))

if err != nil {

fmt.Println("get fail ", err)

return

}

fmt.Println(v)

pool.Close() //關(guān)閉連接池

}

柚子快報激活碼778899分享:Golang操作Redis

http://yzkb.51969.com/

精彩文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19108811.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄