Golang、Redisの

Redisの基本的な紹介
  

Redisのインストール

  

Redis操作の基本原理図
  

 

Redisのインストールと基本的な使用
  Redisスタートアップ:
    
  Redisの操作手順一覧
    

 

   Redisの基本的な使用法:

    注:Redisのインストール後、デフォルトでは16個のデータベースがあります。初期のデフォルトではライブラリ0を使用し、番号は0 ... 15です。

    1. key-val [セット]を追加します
    2.現在のredisのすべてのキーを表示します[キー*]
    3.キーに対応する値を取得します。
    4. redisデータベースを切り替えます[インデックスを選択]
    5.現在のデータベース[dbsize]のkey-valの数を確認する方法
    6.現在のデータベースのkey-valとすべてのデータベースのkey-valをクリアします[flushdb flushall]
    

 

Redis Crud操作
 
   Redisの5つのデータタイプ:

    Redisの5つの主要なデータ型は、文字列、ハッシュ、リスト、セット、およびzset(ソート済みセット:ソート済みセット)です。
 
  文字列の紹介

    文字列は最も基本的なタイプのredisであり、1つのキーが1つの値に対応します。
    文字列型はバイナリセーフです。通常の文字列に加えて、写真などのデータも保存できます。
    redisの文字列値の最大値は512Mです

    たとえば、住所情報を格納します:北京天安門の住所
    説明:
      キー:住所
      値:北京天安門広場
            
    文字列-CRUD

    Redis StringのCRUD操作を説明する例を示します。
    セット[存在する場合は変更と同等、存在しない場合は追加] / get / del
      
    ストリング(string)-使用法の詳細と注意事項

    setex(期限付きで設定)キー秒値
      
    mset [1つ以上のキーと値のペアを同時に設定]
    mget [複数のキー値を同時に取得]
      

 

  ハッシュ(ハッシュ、golangのMapに類似)-はじめに
 
    Redisハッシュは、キーと値のペアのコレクションです。var user1 map [string] string
    Redisハッシュは、フィールドと文字列型の値のマッピングテーブルで、オブジェクトの格納に特に適しています。

  たとえば、ユーザー情報を保存します:(user1)
    user1の名前「smith」、30歳の仕事「golang coder」
  説明:

  キー:user1
  名前Zhang Sanと30歳は、フィールドと値の2つのペアです
    
  
  ハッシュ(ハッシュ、golangのMapに似ています)-CRUD
  Redis Hash CRUDの基本的な操作を説明する例を示します。Hset/ hget / hgetall / hdel
  ユーザー情報(名前、年齢)を追加するケースを示す
    

 

   ハッシュ使用の詳細と注意事項

    ユーザーの名前と年齢を設定するときは、段階的に設定します。hmsetとhmgetを使用すると、複数のフィールド値を設定し、一度に複数のフィールド値を返すことができます。

    hlenはハッシュのいくつかの要素を数えます。
    hexistsキーフィールド
    指定されたフィールドフィールドがハッシュテーブルキーに存在するかどうかを確認します
      

 

  リスト紹介
    リストは、挿入順にソートされた文字列の単純なリストです。リストの先頭(左)または末尾(右)に要素を追加できます。
    Listは基本的にリンクリストです。Listの要素は順序付けされており、要素の値を繰り返すことができます。たとえば、複数の住所情報を保存します。
    市北京北京天津上海説明:
    キー:都市
    北京、天津、上海の3つの要素

    はじめに

       

 

    リスト-CRUD

    RedisリストのCRUD操作を示します。
    lpush / rpush / lrange / lpop / rpop / del /

    説明:
    リストの描画は、学生が理解するのに役立ちます(Lはパイプとして想像できます。)
      

 

       デモ

        

 

    リスト使用の詳細と注意事項
      

 

  セット紹介

    Redisのセットは、文字列型の順序付けされていないセットです。

    最下層はHashTableデータ構造です。Setには多くの文字列要素も格納されます。文字列要素は順序付けされておらず、要素の値を繰り返すことはできません。

    たとえば、複数のメーリングリスト情報を保存します。
    メール[email protected] [email protected]
    説明:
    キー:メール

    [email protected] [email protected]は2つの要素です

    redis> sadd email xx xxx
      

 

    セットCRUD

    Redis SetのCRUD操作を示します。
    smembers [すべての値を取得] sismember [値がメンバーかどうかを判断] srem [指定された値を削除]

    複数の電子メールメッセージを追加する例を示す
      

 

 

Red Gol Redis
  サードパーティのオープンソースRedisライブラリをインストールする
  1)サードパーティのオープンソースredisライブラリを使用します:github.com/garyburd/redigo/redis
 
   2)Redisを使用する前に、まずサードパーティのRedisライブラリをインストールし、GOPATHパスでインストール手順を実行します。D:\ goproject> go get github.com/garyburd/redigo/redis
 
  3)インストールが成功すると、次のパッケージが表示されます
    
    特記事項:Redisライブラリをインストールする前に、Gitがインストールおよび構成されていることを確認してください。Redisライブラリはgithubからダウンロードしてインストールされるため、Gitを使用する必要があります。Gitをインストールして構成していない場合は、次を参照してください。Gitをインストールして構成する方法
 
インターフェースの設定/取得
 
  説明:Golangを介してKey-Valueを追加および取得します(name-tom〜など)
package main 
import(
	"fmt" 
	"github.com/garyburd/redigo/redis" // Introduce redis package 
	
	
func main(){ 
	// goを介してredisへのデータの書き込みと読み取り
	/ 1/1。redis 
	conn へのリンク、err:= redis.Dial( "tcp"、 "127.0.0.1:6379")if 
	err!= nil { 
		fmt.Println( "redis.Dial err ="、err)
          return } defer conn.Close()//閉じる.. // 2. go文字列を介してredisにデータを書き込む[key-val] _、err = conn.Do( "Set"、 "name"、 "tomjerry cat") if err!= Nil {     fmt。 Println( "set err ="、err)
         return } // 3. go文字列[key-val] rを介してredisからデータを読み取るr、err:= redis。String(conn.Do( "Get"、 "name")) if err!= nil { fmt.Println( "set err ="、err)
          return } // return rがインターフェイスである ため{} // nameに対応する値が文字列であるため、変換する必要があります // nameString:= r。(string) fmt.Println ( "Operation ok"、r) }

  

操作ハッシュ
    説明:Golangを使用してRedisでハッシュデータ型を操作します

    ハッシュデータ構造の場合、field-valは書き込みと読み取りを行うコードです。
package main 
import(
	"fmt" 
	"github.com/garyburd/redigo/redis" // Introduce redis package 
	
	
func main(){ 
	// goを介してredisへのデータの書き込みと読み取り
	/ 1/1。redis 
	conn へのリンク、err:= redis.Dial( "tcp"、 "127.0.0.1:6379")if 
	err!= nil { 
		fmt.Println( "redis.Dial err ="、err)
		return 
	} 
	defer conn.Close()//閉じる.. 
	
	// 2. go文字列を介してredisにデータを書き込む[key-val] 
	_、err = conn.Do( "HSet"、 "user01"、 "name"、 "john")
	if err!= Nil { 
		fmt.Println( "hset err ="、err)
		return 
	} 
	_、err = conn.Do( "HSet"、 "user01"、 "age"、18) 
	if err!= nil { 
		fmt.Println( "hset err ="、err) 
		return
	} 
		
		// 3. go 
		
	r1 を介してredisからデータを読み取り、err:= redis.String(conn.Do( "HGet"、 "user01"、 "name"))
	if err!= Nil { 
		fmt.Println( "hget err = "、err)
		 return 
	} 
		
		
	r2、err:= redis.Int(conn.Do(" HGet "、" user01 "、" age "))
	if err!= nil { 
		fmt.Println(" hget err = "、 err)
		return 
	} 
	
	// return rはインターフェイスである
	ため{} // nameに対応する値は文字列なので、変換する必要があります
	// nameString:= r。(string)
	
	fmt.Printf( "Operation ok r1 =%v r2 = %v \ n "、r1、r2)
}

 

ハッシュデータ構造の場合、field-valはバッチで書き込みと読み取りを行います
package main 
import(
	"fmt" 
	"github.com/garyburd/redigo/redis" // Introduce redis package 
	
	
func main(){ 
	// goを介してredisへのデータの書き込みと読み取り
	/ 1/1。redis 
	conn へのリンク、err:= redis.Dial( "tcp"、 "127.0.0.1:6379")if 
	err!= nil { 
		fmt.Println( "redis.Dial err ="、err)
		return 
	} 
	defer conn.Close()//閉じる.. 
	
	// 2. goを介してredisにデータを書き込む[key-val] 
	_、err = conn.Do( "HMSet"、 "user02"、 "name"、 "john"、 "age"、19)
	if err!= nil { 
		fmt.Println( "HMSet err ="、err)
		return 
	} 
	// 3. goを介してredisからデータを読み取る

	、err:= redis。Strings(conn.Do( "HMGet"、 "user02"、 "name"、 "age"))
	if err!= nil {= nil { 
		fmt.Println( "hget err ="、err)
		return
	} 
	for i、v:= range r { 
		fmt.Printf( "r [%d] =%s \ n"、i、v)
	} 
		
}

  

バッチ設定/データの取得
  注:RedisのGolangオペレーションを通じて、1つのオペレーションで複数のkey-valデータコアコードを設定/取得できます。

  _、err = c.Do( "MSet"、 "name"、 "Silicon Valley"、 "address"、 "Beijing Changping〜")
  r、err:= redis.Strings(c.Do( "MGet"、 "name"、 "address"))


  for _、v:= range r {fmt.Println(v)



  }
 
データの有効時間を設定する
  説明:Golangを使用してRedisを操作し、Key-Valueコアコードの有効時間を設定します。

  //名前データの有効時間を10秒に設定します
  _、err = c.Do( "expire"、 "name"、10)
 
操作リスト
  説明:Golangを通じてRedisリストデータ型を操作するためのコアコード:

  _、err = c.Do( "lpush"、 "heroList"、 "no1:宋江"、30、 "no2:卢俊义"、28)r、err:= redis.String(c.Do( "rpop"、 " heroList "))

Redisリンクプール
  注:Golangを介したRedisの操作は、Redisリンクプールを介して行うこともできます。プロセスは次のとおりです。
  1)事前に特定の数のリンクを初期化し、それらをリンクプールに入れる
  2)GoがRedisを操作する必要がある場合は、Redisリンクプールから直接リンクを取得します。
  3)これにより、Redisリンクを一時的に取得する時間を節約でき、効率が向上します。
  4)概略図
    

 

主パッケージ
インポート(
	「FMT」は
	「」github.com/garyburd/redigo/redis 

//グローバルプールを定義
するvar redis.Poolプール* 

//プログラムが起動は、それが接続プールの初期化
)(FUNCにINITを{ 
	
	=プール&redis.Pool { 
		MaxIdle:8、//アイドルリンクの最大数
		MaxActive:0、//データベースへのリンクの最大数を示し、0は制限
		なしを意味しますIdleTimeout:100、//最大アイドル時間
		Dial:func()(redis.Conn 、エラー){//リンクを初期化するコード、redis 
			return redis.Dial( "tcp"、 "localhost:6379")
		}、
	} 
} 
func main(){ 
	//プールからリンクを取得
	conn: = pool.Get()
	defer conn.Close()
	
	_、err:= conn.Do( "Set"、 "name"、 "Tomcat ~~")
	エラーの場合!= nil { 
		fmt。Println( "conn.Do err ="、err)
		return 
	} 
	
	// 
	rを削除、err:= redis.String(conn.Do( "Get"、 "name"))
	if err!= nil { 
		fmt.Println( "conn.Do err ="、err)
		return 
	} 

	fmt .Println( "R ="、R)

	//私たちは、プールからのリンクを削除すると、プールはリンクが閉じていないことを確認する必要があります
	()//pool.Closeを
	conn2:= pool.Get()

	_、ERR = conn2.Do( "Set"、 "name2"、 " 
		Tomcat ~~ 2")
	if err!= Nil { fmt.Println( "conn.Do err ~~~~ ="、err)
		return 
	} 

	// Remove 
	r2、err:= redis.String(conn2.Do( "Get"、 "name2"))
	if err!= nil { 
		fmt.Println( "conn.Do err ="、err)
		return 
	} 

	fmt。

	//fmt.Println("conn2= "、conn2)
}

  

おすすめ

転載: www.cnblogs.com/Essaycode/p/12748932.html