-Redisのを行きます

繰り返します

基本的な導入をRedisの

Redisのキャッシュに適していない従来のデータベース、高いパフォーマンスは、また、メモリベースのデータベースを実行するために、分散メモリ永続,,完全に無料のオープンソースの高性能を作るのに適している、のNoSQLデータベースであり,,そして,,最も永続的なサポート1つの人気のNoSQLデータベースは、また、データ構造サーバとして知られています。

繰り返します

2つのインストール、圧縮されたパッケージタイプ、およびセットアップファイルの種類、比較的単純な
、それはタイプ圧縮されている場合:redis.serverスタートサービスウィンドウが閉じていない、redis.client、クライアントの操作データを、
わずか

Redisの演算命令リスト

手順[http://redisdoc.com/]

基本的な使用をRedisの:

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

  1. キー・ヴァル[セット]を追加します。
  2. 現在のすべてのRedisのキー[キー*]を見ます
  3. キーに対応する値を取得する。[キーの取得]
  4. Redisのスイッチングデータベース[インデックスを選択]
  5. [DBSIZE]キーを-VALの数の現在のデータベースを表示する方法
  6. 現在のデータベースのキー・ヴァルをクリアし、すべてのデータベースのキー・ヴァルを空にする[flushdb flushall]

CRUD操作のRedisの

ファイブRedisのデータ型:

ファイブRedisのデータ型は、次のとおりです。文字列(String)を、ハッシュ(ハッシュ)、リスト(一覧)、セット(集合)とZSET(ソートセット:順序付きコレクション)

文字列(文字列) - はじめに

文字列は、最も基本的なタイプ、値に対応する鍵であるRedisの。
文字列型はバイナリセーフです。通常の文字列、画像やその他のデータに加えて、Redisの文字列値にもを格納することができる最大512Mであります

举例,存放一个地址信息:
address 北京天安门
说明 :
key : address
value: 北京天安门

String(字符串) -CRUD
举例说明 Redis 的 String 字符串的 CRUD 操作.
set[如果存在就相当于修改,不存在就是添加]/get/del

文字列(文字列) - 使用の詳細・注意事項

SETEX(期限切れで設定)第2のキー値(10秒後に、データが消え)
MSET〔同時に一つ以上のキーと値のペアを提供する]
MGET [同時にキー-VAL複数の取得]

ハッシュ(ハッシュマップで同様golang) - はじめに

基本的な導入
Redisのハッシュは、キーと値のペアのコレクションです。USER1 VAR地図[文字列]文字列
Redisのハッシュ値であり、タイプフィールドマッピングテーブル列、ハッシュは、記憶に特に適しています

例えば、ユーザ情報が格納されている:(USER1)

user1 name "smith" age 30 job "golang coder"
说明 :
key : user1
name 张三 和 age 30 就是两对 field-value

ハッシュ(ハッシュマップで同様golang)-CRUD

Redisのハッシュの基本的なCRUD操作を示している。
HSET / hget / hgetall / HDEL
場合、追加のユーザ提示情報(氏名、年齢)

ハッシュ・使用方法の詳細・注意事項

ステップバイステップであり、hmset hmgetを使用する使い捨て提供することができるユーザ名と年齢が提供される場合、私たちの前に配置された
フィールドの複数の分野の複数の設定値と戻り値。
ハッシュ統計をHLENには、いくつかの要素があります。
hexistsキーフィールドを
指定したドメインフィールドのハッシュテーブルのキー、有無を表示します

一覧(リスト) - はじめに

リストには、文字列、ソート挿入順序の単純なリストです。あなたは、列に要素を追加することができ
、テーブルの先頭(左)または尾(右)。

リストは、リストの要素は、要素の値を繰り返すことができ、注文され、基本的にリンクされたリストです。

举例, 存放多个地址信息:
city 北京 天津 上海
说明 :
key : city
北京 天津 上海 就是三个元素

一覧(リスト)-CRUD(似たパイプライン)

図示のRedisのCRUD操作のリスト。
lpush / rpush / LRANGE / LPOP / RPOP /デル/

リスト - 使用方法の詳細・注意事項

1)インデックスで要素プレゼント
キーが存在しない場合は、取得した鍵長llen 2)、キーが空のリストとして解釈され、0を返す
。3)一覧が左右プラグ接続できる
全て削除した場合)4を、対応するキーが消え

セット(コレクション) - はじめに

Redisのは、順序付けられていないコレクションの種類を設定した文字列です。
基礎となるデータ構造はハッシュテーブル、セット番号列要素が格納され、ランダムな文字列要素であり
、要素の値が重複することはできません

举例,存放多个邮件列表信息:
email [email protected] [email protected]
说明 :
key : [email protected] [email protected] 就是二个元素
redis>sadd email xx xxx

セット(コレクション) - CRUD

CRUD操作のセットは、Redisのを説明します。

sadd
smembers[取出所有值]
sismember[判断值是否是成员]
srem [删除指定值]

上記の基本的な操作コマンド

127.0.0.1:6379> dbsize
(integer) 4
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> setx name 10 hello,go
(error) ERR unknown command 'setx'
127.0.0.1:6379> setex name 10 hello,go
OK
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> setex name 10 hello,go
OK
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
"hello,go"
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> mset name a name2 b
OK
127.0.0.1:6379> get name
"a"
127.0.0.1:6379> get name2
"b"
127.0.0.1:6379> dbsize
(integer) 4
127.0.0.1:6379> get user01
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hget user01
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hset use1 name "ygj"
(integer) 1
127.0.0.1:6379> hset use1 age 20
(integer) 1
127.0.0.1:6379> hget user1
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget user1 name
(nil)
127.0.0.1:6379> hget use1 name
"ygj"
127.0.0.1:6379> hget use1 age
"20"
127.0.0.1:6379> hgetall use1
1) "name"
2) "ygj"
3) "age"
4) "20"
127.0.0.1:6379> hget user01 name
"john"
127.0.0.1:6379> desize
(error) ERR unknown command 'desize'
127.0.0.1:6379> dbsize
(integer) 5
127.0.0.1:6379> hlen user01
(integer) 2
127.0.0.1:6379> hlen usel1
(integer) 0
127.0.0.1:6379> hlen use1
(integer) 2
127.0.0.1:6379> lpush city a b c d
(integer) 4
127.0.0.1:6379> lrange city 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrange city 0 2
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> rpush e f g
(integer) 2
127.0.0.1:6379> lrange city 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> rpush city e f g
(integer) 7
127.0.0.1:6379> lrange city 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
6) "f"
7) "g"
127.0.0.1:6379> del e
(integer) 1
127.0.0.1:6379> lrang e 0 -1
(error) ERR unknown command 'lrang'
127.0.0.1:6379> rrange city 0 -1
(error) ERR unknown command 'rrange'
127.0.0.1:6379> lrange city 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "e"
6) "f"
7) "g"
127.0.0.1:6379> desize
(error) ERR unknown command 'desize'
127.0.0.1:6379> dbsize
(integer) 6
127.0.0.1:6379> sadd emals [email protected]
(integer) 1
127.0.0.1:6379> sadd emals [email protected]
(integer) 1
127.0.0.1:6379> smembers emals
1) "[email protected]"
2) "[email protected]"
127.0.0.1:6379> sismember emals [email protected]
(integer) 1
127.0.0.1:6379> sismember emals [email protected]
(integer) 0
127.0.0.1:6379> srem emals [email protected]
(integer) 1
127.0.0.1:6379> smembers emals
1) "[email protected]"

Golang操作のRedis

サードパーティ製のオープンソースライブラリのRedisのをインストールします。

サードパーティのオープンソースライブラリはRedisのの1)使用:github.com/garyburd/redigo/redis
2)使用のRedis、Redisの前に、サードパーティのライブラリをインストールするには、GOPATHパスでインストール手順を実行します:
D:\ goproject>ゴーGET GitHubの。 COM / garyburd / redigo / Redisの

特記事項:Redisのデータベースをインストールする前に、RedisのライブラリがインストールGitHubのからダウンロードされるので、あなたは、Gitリポジトリをインストールして構成していることを確認する
にGitを使用する必要があります。あなたがGitのためのconfigureをしない場合は、以下を参照してください:Gitの設定をインストールする方法

設定/取得インタフェース

説明:Golangキーと値の取得と、そのような名前-タム〜を追加することにより、[]

package main
import (
    "fmt"
    "github.com/garyburd/redigo/redis" //引入redis包
)

func main() {
    //通过go 向redis 写入数据和读取数据
    //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写入数据 string [key-val]
    _, err = conn.Do("Set", "name", "tomjerry猫猫")
    if err != nil {
        fmt.Println("set  err=", err)
        return 
    }

    //3. 通过go 向redis读取数据 string [key-val]

    r, err := redis.String(conn.Do("Get", "name"))
    if err != nil {
        fmt.Println("set  err=", err)
        return 
    }

    //因为返回 r是 interface{}
    //因为 name 对应的值是string ,因此我们需要转换
    //nameString := r.(string)

    fmt.Println("操作ok ", r)
}

ハッシュ操作

package main
import (
    "fmt"
    "github.com/garyburd/redigo/redis" //引入redis包
)

func main() {
    //通过go 向redis 写入数据和读取数据
    //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写入数据 string [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 向redis读取数据 

    r1, 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 
    }

    //因为返回 r是 interface{}
    //因为 name 对应的值是string ,因此我们需要转换
    //nameString := r.(string)

    fmt.Printf("操作ok r1=%v r2=%v \n", r1, r2)
}

データ操作の複数

package main
import (
    "fmt"
    "github.com/garyburd/redigo/redis" //引入redis包
)

func main() {
    //通过go 向redis 写入数据和读取数据
    //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写入数据 string [key-val]
    _, err = conn.Do("HMSet", "user02", "name", "john", "age", 19)
    if err != nil {
        fmt.Println("HMSet  err=", err)
        return 
    }



    //3. 通过go 向redis读取数据 

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

}

これと同様の動作を設定することができます

データ有効時間を設定します。

説明:操作のGolang Redisの、有効時間にキー値によって
コアコード:

//给 name 数据设置有效时间为 10s
_, 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)Redisの移動を動作させるために必要な、Redisのプーリングリンク接続から直接採取。
3)これは、効率を改善するために、一時的なリンクのRedisの取得時間を節約できます。

サンプルコード

package main
import (
    "fmt"
    "github.com/garyburd/redigo/redis"
)

//定义一个全局的pool
var pool *redis.Pool

//当启动程序时,就初始化连接池
func init() {

    pool = &redis.Pool{
        MaxIdle: 8, //最大空闲链接数
        MaxActive: 0, // 表示和数据库的最大链接数, 0 表示没有限制
        IdleTimeout: 100, // 最大空闲时间
        Dial: func() (redis.Conn, error) { // 初始化链接的代码, 链接哪个ip的redis
        return redis.Dial("tcp", "localhost:6379")
        },
    }   

}

func main() {
    //先从pool 取出一个链接
    conn := pool.Get()
    defer conn.Close()

    _, err := conn.Do("Set", "name", "汤姆猫~~")
    if err != 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 取出链接,一定保证链接池是没有关闭
    // pool.Close()
    conn2 := pool.Get()

    _, err = conn2.Do("Set", "name2", "汤姆猫~~2")
    if err != nil {
        fmt.Println("conn.Do err~~~~=", err)
        return
    }

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

    fmt.Println("r=", r2)

    //fmt.Println("conn2=", conn2)


}

おすすめ

転載: www.cnblogs.com/ygjzs/p/11913848.html
おすすめ