Redis入門紹介

3138 ワード

Redisの紹介
Redisとは?
l RedisはC言語で開発されたオープンソースの高性能キー値対(key-value)メモリデータベースである.
l文字列タイプ、ハッシュタイプ、リストタイプ、集合タイプ、秩序化集合タイプの5つのデータ型を提供します.
lこれはNoSQLデータベースです.
NoSQLとは?
l NoSQL、すなわちNot-Only SQL(SQLだけではない)は、一般的に非関係型のデータベースを指す.
lリレーショナル・データベースとは?データ構造は、行と列のあるデータベースです.
l NoSQLデータベースは、高同時性、高可用性、高拡張性、ビッグデータストレージの問題を解決するために作成されたデータベースソリューションです.
NoSQLは、リレーショナル・データベースの補完として使用できますが、リレーショナル・データベースの代わりに使用することはできません.
NoSQLデータベース分類
キー値(Key-Value)ストレージ・データベース
関連製品:Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
一般的なアプリケーション:コンテンツキャッシュ.主に大量のデータを処理する高アクセス負荷に使用されます.
データモデル:一連のキー値ペア
利点:クイッククエリー
劣勢:格納されたデータが構造化されていない
 
カラムストレージデータベース
関連製品:Cassandra,HBAse,Riak
典型的な応用:分散型ファイルシステム
≪データ・モデル|Data Model|oem_src≫:同じ列のデータを列クラスタで格納します.
利点:検索速度が速く、拡張性が高く、分散型拡張が容易
劣勢:機能が相対的に限られている
 
ドキュメント型データベース
関連製品:CouchDB、MongoDB
一般的なアプリケーション:Webアプリケーション(Key-Valueと同様、Valueは構造化されています)
データモデル:一連のキー値ペア
利点:データ構造の要件が厳格でない
劣勢:
 
グラフィックデータベース
関連データベース:Neo 4 J、InfoGrid、Infinite Graph
典型的な応用:ソーシャルネットワーク
データモデルデータモデル:図面構造ずめんこうぞう
利点:図構造関連アルゴリズムを利用する.
劣勢:図全体を計算しなければ結果が得られず、分布式のクラスタスキームを容易に行うことができない.
Redisの歴史的発展
l 2008年、イタリアのある創業会社MerziaはMySQLベースのウェブサイトのリアルタイム統計システムLLOOGGを発売したが、間もなく同社の創始者Salvatore SanfilippoはMySQLの性能に失望し、LLOOGGのために自分でデータベースを注文し、2009年に開発した.このデータベースはRedisである.
lただしSalvatore Sanfilippoは、LLOOGGという製品にRedisを使用するだけではなく、より多くの人がそれを使用することを望んでいるため、同じ年にSalvatore SanfilippoがRedisをオープンソースでリリースする
lはRedisのもう一人の主要なコード貢献者Pieter Noordhuisと一緒にRedisの開発を今日まで続けてきた.
l Salvatore Sanfilippo自身も、わずか数年でRedisが膨大なユーザー層を持っているとは思わなかった.Hacker Newsは2012年にデータベースの使用状況調査を発表し、12%近くの会社がRedisを使用していることを示した.国内は新浪微博、街頭網、知乎網のように、国外はGitHub、Stack Overflow、FlickrなどがRedisのユーザーである.
l VMware社は2010年からRedisの開発を支援し、Salvatore SanfilippoとPieter Noordhuisもそれぞれ3月と5月にVMwareに加入し、Redisをフルタイムで開発している.
Redisの適用シーン
lメモリデータベース(登録情報、カート情報、ユーザー閲覧記録等)
lキャッシュサーバ(商品データ、広告データなど).(最大使用)
l分散クラスタアーキテクチャにおけるsession分離問題(session共有)を解決する.
lタスクキュー.(秒殺、買い占め、12306など)
lサブスクリプションの発行をサポートするメッセージモード
lランキングを適用する.
lウェブサイトアクセス統計.
lデータの期限切れ処理(ミリ秒まで正確)
Redisデータ型
Redisに格納されるデータはkey-value形式で格納されます.ここでvalueは5つのデータ型を定義できます.
  • String(文字タイプ)
  • Hash(ハッシュタイプ)
  • List(リストタイプ)
  • Set(集合タイプ)
  • SortedSet(整列集合タイプ、略称zset)
  •  
    注意:redisのコマンド文では、コマンドは大文字と小文字を無視し、keyは大文字と小文字を無視しません.
    に値を付ける
    SET key value

    値をとる
    GET key

    値を取り、値を割り当てる
    GETSET key value

    数値の増減
    アテンションの実装:
    1.valueが整数データの場合、次のコマンドを使用して数値の増減を操作できます.
    2.数値の増加はすべて原子操作です.
    int i = 1;
        i++;
        System.out.println(i)

    増分数
    INCR key

    指定した整数を増やす
    INCRBY key increment

    減算値
    DECR key

    指定した整数を減らす
    DECRBY key decrement

    存在しない場合のみ付与
    このコマンドを使用すると、分散ロックの機能を実現できます.
    setnx key value