Redisの基本的な理解

A、Redisのさんのプロフィール

1. Redisのは何ですか

Redisのは完全に無料のオープンソースであり、BSDは、契約を遵守し、それが高性能であるキーと値のデータベース。

特性2.Redisは何ですか

  • Redisのは、永続的なデータ、AOF RDBログとスナップショットをサポートしています。
  • Redisのは、高速11万回/ Sなどのように読むことができる高性能は、書き込み速度は81000回/秒です。
  • サポートし、複数のデータ・タイプ、Redisのデータ型の8種類があるが、当然のことながら、これらの5つのタイプ主に文字列、ハッシュ、リスト、セット、SortSetを使用し、それらはすべてのデータを整理する主要な方法に基づいています。
  • Redisのバックアップデータ、コピーから、すなわち、主マスタ・スレーブモードをサポートします。
  • 豊富な機能を備えた、プログラマブルキー、有効期限は、キューに基づく単純なパブリッシュ・サブスクライブ・メッセージを可能にします。などなど。

3.該当シーン

  • 読み取りと大量のデータの書き込み
  • 高い同時読み取りおよび書き込みデータ
  • データを展開するデータのための高需要

彼は多くの人々がそのようなサイトは非常に熱く、訪問億回の日として、シーンを言うと述べました。何のRedisのは好きでない場合は、データの特定の部分が、次の日は変更されませんホーム。データベースには100万回のチェック作業が出て崩壊も実行されます。Redisのは、最初のクエリだけをキャッシュするか使用した後、結果は、Redisのに格納されています。我々は戻って訪問する場合は、それを直接それを取ると、大規模な範囲を読み書きするIOデータベースを低減することができます。

オープン16は0-15からの番号、デフォルトのデータベースを4.redis

二、Redisのデータ構造

1、Redisの5つの共通のデータ構造

1.String(字符串类型)
2.Hash(哈希类型)
3.List(列表类型)
4.Set(集合类型)
5.SortSet(有序集合类型)

2、文字列型

キーに関連する文字列値に値。キーは他の値で開催されている場合は、SETは、型を無視して、古い値を上書きします。

2.1キーを作成します
语法:set key value [ex 秒数] / [px 毫秒数]
列子:set username tom ex 10    
注意:ex和px后面跟的是该数据存在的有效时间,写一个就可以了。如果两个都写了,以写在后面的那个为准!
2.3複数のキーを作成します
语法:mset key1 value1 key2 value2 ....
2.4の値とキーの取得に複数の主キーの値を取得します。
1.获取单个key的值:get key
2.获取多个key的值:mget key1 key2 key3
2.5 Deleteキー
语法:del key
2.6すべてのキーを参照してください。
语法:keys *
2.7プラス1のキー値、マイナスキー1の値
将key的值加1:
语法:incr key
作用:将指定key的值加1,并返回加1后的值!

将key的值减1:
语法:decr key
作用:将指定key的值减1,并返回减1后的值!
    
注意:如果key中的值为小数,使用此命令会报错!
2.8キープラス値、マイナス所与のキー値の値を与えられた値
将key的值加上给定的值:
语法:incrby key number
作用:将指定的key的值加上给定的值,并返回增加后的值
注:number:要增加的值
    
将key的值减去给定的值:
语法:decrby key decrement
作用:将指定的key的值减去给定的值,并返回减去后的值
注:decrement:要减去的值
2.9値は指定されたキーに加えて、浮動小数点値
语法:incrbyfloat key floatnumber
作用:将指定的key的值加上给定的浮点值,并返回增加后的值
注:floatnumber是自己准备要增加的浮点值

3、ハッシュタイプ

ハッシュ文字列フィールドの値とのマッピングテーブルのタイプは、ハッシュは、特にオブジェクトを格納するのに適しています。各ハッシュは(400億)のRedis 232--1キー値ペアを格納することができます。

キーの作成3.1
语法:hset key field value
示意: hset key(Hash名称)  field(键的名称)  value(值)
3.2ハッシュは、値を格納します
语法:hget key field 
示意:hget key(Hash名称)  field(键的名称)  
保存されている3.3のGetハッシュすべてのキーと値
语法:hgetall key
示意:hgetall key(Hash名称)
3.4ハッシュキーを削除
语法:hdel key field
示意:hdel key(Hash名称)  field(键的名称)  

4、リストタイプ

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

リストは232--1要素(4,294,967,295以上40億のリストの各要素)まで含むことができます。

4.1リストに要素を追加
添加元素到列表的头部(左边)
语法:lpush key value
示意:lpush List的名称  值
 
添加元素到列表的尾部(右边)
语法:rpush key value
示意:rpush List的名称  值
取得要素の4.2一覧
语法:lrange key start end
示意:lrange  key(list名称)   start(起始下标)   end(结束下标)

補足:エンド= -1は、すべての要素のビューを表します!

要素を削除する4.3
语法:lpop key
示意:lpop key(list名称)
作用:删除列表最左边的元素,并返回元素
    
语法:rpop key
示意:rpop key(list名称)
作用:删除列表最右边的元素,并返回元素

5、セットの種類

リストで繰り返された後の要素が必要とされている値が分からないどのキーが存在しないため、重複要素を保存することが許可されています

セット文字列型は、順不同のコレクションです。これは、重複データの収集が表示されないことを意味し、コレクションの唯一のメンバーです。Redisのは、検索の複雑さはO(1)であるので、追加、削除、ハッシュテーブルのコレクションを実現しています。コレクション232--1(4,294,967,295、各セット40万人を格納することができる)のためのメンバーの最大数。

設定5.1は、コレクションに要素を追加します
语法:sadd key value
示意:sadd key(set集合名称) value(值)
5.2での設定は、要素を取得します
语法:smembers key
示意:smembers key(set集合名称)
作用:获取set集合中的全部元素
5.3コレクション内の指定された要素を削除
语法:srem key value
示意:srem key(set集合的名称) value(要删除的元素)

図6に示すように、ソートのセットタイプ

ソートセットはセットを注文し、そしてセットは文字列型の要素のコレクションと同じであり、重複するメンバーを許可していません。違いは、ダブルスコアは要素の各タイプに関連付けされることです。それは小さなからのメンバーの合格点のコレクションの大きな順にRedisのにあります。順序集合のメンバーは、それを繰り返すことができるユニークですが、スコア(得点)。コレクションは、検索の複雑さはO(1)であるので、追加、削除、ハッシュテーブルによって達成されます。コレクション232--1(4,294,967,295、各セット40万人を格納することができる)のためのメンバーの最大数。

6.1は、ソー​​トセットに要素を追加します
语法:zadd key score value
示意:zadd key(Sorted set集合的名称) score(这个分数可以随便给) value(值)
6.2は、要素を取得します
语法:zrange key start end [withscores]
示意:zrange key(Sorted set集合的名称) start(开始的下标) end(结束的下标)
注意:打印的顺序是根据分数从小到大排列的

追加:増加withscores後ろコレクション内のビュー要素を表明し、スコアを参照してください!

6.3取り外し要素
语法:zrem key value
示意:zrem key(集合的名称) value(要删除的元素)

三、Redisの共通のキーコマンド

1.レビュー全てのキー
语法:keys *
2. [削除]一つ以上のキー
语法:del key //删除一个
语法:del key1 key2 ....//删除多个
これは、キーの名称を変更します。3.
语法:rename key newkey
示意:rename key(被修改key的名称) value(新名称)

注:NEWKEYが既に存在する場合、元の値が上書きさNEWKEYです

適切なキーを確認する4。

在redis里,允许模糊查询key,有3个通配符 *, ? ,[]
    *: 通配任意多个字符
    ?: 通配单个字符
    []: 通配括号内的某1个字符
语法:keys 查询的条件
例子:keys A*   //查询A开头的key
     keys ??? //查询只有3个字符的key
     keys A[bdc] //查询以A开头,以括号内任意一个字符结尾的key
5.リターンランダムキー
语法:randomkey 
6.キーが存在するか否かを判定する
语法:exists key
7.キーのタイプを分析
语法:type key
8.クエリの鍵のライフサイクル
语法:ttl key
作用: 查询key的生命周期
返回: 秒数
注:对于不存在的key或已过期的key/不存在的key,都返回-1。Redis2.8中,对于不存在的key,返回-2
9.他のデータベースにシフト鍵データベースを切り替えて、
9.1スイッチングデータベース
语法:select db
示意:select db(数据库编号)
注意:切换到数据库后,之前保存的数据都没有了(redis默认使用0号数据库)
別のデータベースへ9.2コピーキー1データベース
语法:move  key db
示意:move  key(要复制的key) db(目标数据库)
10.セットの有効なキー(永久デフォルト
语法:expire key num
示意:expire key num(整形值,以秒为单位)
10.1設定キー永久
语法:persist key
キーライフサイクルの設定10.2
语法:pexpire key num
示意:pexpire key num(毫秒数)
10.3ビューの鍵のライフサイクル
语法:pttl  key
11.リフレッシュデータベース
语法:flushdb
作用:执行刷新数据库操作后,redis中保存的数据将会被清空。

四、2つの方法のRedisの持続性

1.RDBの永続性

それはのRDBに動作します:すべてのN分またはN回の書き込み動作は、データがメモリダンプファイルをRDBから形成されます。そして、指定されたディレクトリに置きます。

RDBの永続性を達成するために書いredis.confの設定ファイルを変更します

设置redis.conf配置文件中的RDB快照相关参数:
    save 900 1    #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。
    save 300 10  #必须是300秒之后至少10个关键字发生变化。
    save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
    上面三个参数屏闭后,rdb方式就关闭了
    stop-writes-on-bgsave-error yes    #后台存储错误停止写。
    rdbcompression yes    #使用LZF压缩rdb文件。
    rdbchecksum yes    #存储和加载rdb文件时校验。
    dbfilename dump.rdb    #设置rdb文件名。
    dir ./    #设置工作目录,rdb文件会写入该目录。

注:Linuxでの最初のコピーを設定ファイルを変更して変更します。そのコピーを変更します!

修正redis.conf以来、私たちはRedisのプラス、構成ファイルのパスを起動したとき

启动服务端的语法:
    启动程序所在的路径  配置文件所在的路径       //中间用空格隔开

RDB永続的な欠点は、2行のセーブポイント間で、パワーは1-N分のデータを失われます。

2.AOF持続的なログ

AOFの作品:すべてのログの独立した書き込みコマンド Redisのは、データ復旧の目的を達成するために再起動したときに、再度実行AOF fileコマンドを。

AOFログの永続性を達成するために書き込みredis.confの設定ファイルを変更します

AOF日志相关参数:
    appendonly no # 是否打开 aof日志功能
    appendfsync always   # 每1个命令,都立即同步到aof. 安全,速度慢
                everysec # 折衷方案,每秒写1次
                no  #写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快。

    no-appendfsync-on-rewrite  yes # 正在导出rdb快照的过程中,要不要停止同步aof
AOF書き換え3.ログイン

Redisの永続AOFは長い間のRedisが実行されているとして、実行された書き込みコマンドを節約によって状態を記録することであるため、ファイルAOFの内容は、より多くの、ファイルサイズが成長する場合ではないだろう制御、特大AOFファイルはRedisのも、ホストコンピュータに影響を与える可能性があります。

問題AOFファイルの体積膨張を解決するために、Redisの書き換え(リライト)関数AOFファイルを提供します。この機能を使用すると、Redisのは、既存のファイルを置き換えるために、新しいAOF AOFファイルを作成することができます。同じ古いものと新しいAOFファイルは、Redisの状態を保存したが、新しいボリュームAOFファイルが古いAOFファイルの多くの量よりも、通常ははるかに小さいので、新しいAOFファイルは、任意の無駄なスペースコマンドが含まれていません。これはからさhttps://www.cnblogs.com/remcarpediem/p/11644722.htmlブロガーがのこぎりは、私は必ずしも良く、これよりも、それを記述する必要は感じています。ブロガーをありがとう!より明確に理解を推奨します他のブロガーは、本明細書に、これが唯一の基本的な使い方を示した場合または参照してください!

書き込みredis.confプロファイルを変更します

配置AOF重写的相关参数:
    auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时,重写
    auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,重写

五、Redisの取引で

mysqlのとは対照的Redisの取引

MySQLの Redisの
オープン トランザクションを開始 マルチ
声明 通常のSQL 一般的なコマンド
故障 ロールバックロールバック キャンセル破棄
成功 コミット EXEC

MySQLとRedisのトランザクションの違いexecコマンドは、commitコマンドを

でのRedis:

コマンドは、複数の業務をオンにした後、コマンドとちょうどキューが始まっ参加しませんでした。二つのものがEXECコマンドの後に発生すると、コマンドがすべて実行されません、①、②手術コマンド(実行が唯一正しいコマンド、自動的に間違ったコマンドをスキップ!)

MySQLで:

トランザクションの後に開く、どちらかのすべてのコマンドが正常に実行、またはすべてのコマンドを失敗MySQLの実行されません!

MySQLでの違い廃棄コマンドRedisのトランザクションとロールバックコマンド

でのRedis:

EXECコマンドをコミットした後、廃棄ちょうどトランザクションブロック内のコマンドを実行放棄、このトランザクションの実行をキャンセルします。実装は、コマンドが表示されますの一部のみであり、あなたがキャンセル破棄した場合、トランザクションはロールバックされません、正しいコマンドによって引き起こされる影響は依然として存在します!

MySQLで:

MySQLのロールバックコマンドは、すべての衝撃が消えた後のステートメントを実行し、実行が成功した後にコミットされます!

5.1トランザクションモニタwatchコマンド

キーの値は、他のエンドユーザーが変更されている場合ウォッチコマンド、同様の楽観的ロック、トランザクションのコミット、
このようなリストは、別のクライアントプッシュ/ポップすぎてきた、と全体のトランザクションキューは実行されません

语法:watch key

おすすめ

転載: www.cnblogs.com/whitespaces/p/11831504.html