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]は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) }