Redis-Base-1

43285 ワード

:わかりやすく紹介されているような気がするのでおすすめです
What is Redis?
RedisはSalvatore Sanfilippoが開発した、オープンソース、効率的なメモリベースのキー値キャッシュサービス、いわゆるNoSQLデータベースです.strings,hashes,lists,sets,sorted setsなどの構造のデータを格納できます.
キー値格納の本質は、データを格納することができ、その後、特定のキー名を呼び出し、前に挿入されたデータを取得することができる.
Usage of Redis
Salvatore Sanfilippo(creator of Redis)は、RedisがRDBMSデータベースの代わりに使用できると述べたが、今考えると、不可能なことは何もないが、それは依然として不適切な考えだ.Redisは,データのトランザクション操作や,プライマリ・スレーブ・サービスのデータ同期においてまだ十分ではないためである.
以下はRedisが使用できる場所ですが、まだ多くの場所で使用できます.
  • にはmemcachedと同様のキャッシュ機能があり、様々なデータ構造をサポートしています.豊富なストレージ方式により、多くのArrayの接続が省け、パフォーマンスが向上します.
  • Leaderboards or related problems.
  • Counting stuff.
  • Real time analysis.
  • Deletion and filtering.
  • あなたのトップページに最新のプロジェクト
  • が表示されます.
    Aim of this Article
    文章はあなたにRedisの文法の知識を展示するのではありませんて、PHPの中でどのようにRedisを使います
    Install Redis
    RedisはWindowsやLinuxなど簡単にインストールできます
    Install Redis on Linux
    Redisのインストール:
    $ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
    $ tar xzf redis-2.8.19.tar.gz
    $ cd redis-2.8.19
    $ make
    

    Note:2.8.19最新バージョンに置き換えてください
    Redisのサービス起動は、Redisのクライアント操作のためのredis-cliを含むインストールディレクトリの下にあり、次はRedisサービスの起動である.
    $ src/redis-server
    

    Install on Windows
    紹介を見合わせる
    Install Predis a Redis Client for PHP
    PredisはRedisのクライアントです.それはコミュニティに支持されて、GitHubの上で直接ダウンロードすることができて、下図はGitHubクライアントあるいはGitソフトウェアをインストールして、ダウンロードを行います
    $ git clone git://github.com/nrk/predis.git
    

    Connecting to Redis
    まず、require Redisの自動ロード関数です.その後try文ブロックを使用してラップします.以下に、ローカルおよびリモートサービスに接続するアドレスを示します.仮想マシンにインストールされているサービスは、リモートの構成に従ってください.hostはifconfigを使用して表示され、デフォルトのポートは6379です.
    
    require "predis/autoload.php";
    Predis\Autoloader::register();
    
    try {
    	$redis = new PredisClient();
    
    	// This connection is for a remote server
    	/*
    		$redis = new PredisClient(array(
    		    "scheme" => "tcp",
    		    "host" => "153.202.124.2",
    		    "port" => 6379
    		));
    	*/
    }
    catch (Exception $e) {
    	die($e->getMessage());
    }
    

    Redisサーバへの接続に成功しました.すぐに勉強を始めます.
    Redis Datatypes
    Redisは豊富なデータ型を使用しており、開発者がより意味のあるデータ構造を格納したり、実際のデータに近づいたりして、検索をより効率的にすることができます.以下に、Redisがサポートするデータ型を示します.
  • String:memcache
  • に類似する文字列
  • List:1次元配列に似ています.push,pop,shift and unshiftなどの方法
  • を用いることができる.
  • Hash:Mapは、複数のキー値ペアを格納するために使用される.
  • Set:無秩序、重複しない
  • Sorted Set:秩序正しく、重複しない.どのように秩序正しく保存できるかを知りたいに違いありません.保存するときにscore値を指定して、最小から最大まで、等しくすることができます.

  • Getters and Setters
    Redisにおいて最も重要な命令はSET,GET and EXISTSである可能性がある.これらのコマンドは、Redisサーバから格納、取得、チェックするために使用されます.Redisの操作は命令が表す字面の意味と同じである.
    
    // sets message to contian "Hello world"
    $redis->set(';message';, ';Hello world';);
    
    // gets the value of message
    $value = $redis->get('message');
    
    // Hello world
    print($value); 
    
    echo ($redis->exists('message')) ? "Oui" : "please populate the message key";
    

    Increments and Decrements INCR and DECRコマンドは、値を増加または減少させるために使用される
    
    $redis->set("counter", 0);
    
    $redis->incr("counter"); // 1
    $redis->incr("counter"); // 2
    
    $redis->decr("counter"); // 1
    

    もちろん、INCRBY and DECRBYコマンドを使用して、追加された具体的な値を指定することもできます.
    
    $redis->set("counter", 0);
    
    $redis->incrby("counter", 15); // 15
    $redis->incrby("counter", 5);  // 20
    
    $redis->decrby("counter", 10); // 10
    

    Working with Lists
    ここには基本的な命令があります
  • LPUSH:リストの先頭
  • にデータを挿入
  • RPUSH:リストの末尾
  • にデータを挿入
  • LPOP:リストの先頭の要素を除去し、その要素
  • を返す.
  • RPOP:リスト末尾の要素を除去し、その要素
  • を返す.
  • LLEN:listの長さを得る
  • LRANGE:リスト内のすべての要素
  • を取得
    Simple List Usage:
    
    $redis->rpush("languages", "french"); // [french]
    $redis->rpush("languages", "arabic"); // [french, arabic]
    
    $redis->lpush("languages", "english"); // [english, french, arabic]
    $redis->lpush("languages", "swedish"); // [swedish, english, french, arabic]
    
    $redis->lpop("languages"); // [english, french, arabic]
    $redis->rpop("languages"); // [english, french]
    
    $redis->llen("languages"); // 2
    
    $redis->lrange("languages", 0, -1); // returns all elements
    $redis->lrange("languages", 0, 1); // [english, french]
    

    Working with Hashes
    hashはキー値対の集合であり、一対多の関係に類似する.一般的なコマンドは次のとおりです.
  • HSET:key-value値
  • を設定
  • HGET:hash中のkeyの値
  • を取得する.
  • HGETALL:hashのすべての値
  • を返します.
  • HMSET:hash複数の値を設定
  • HDEL:hashから値を削除
  • HINCRBY:hashの要素に指定値
  • を追加します.
    
    $key = 'linus torvalds';;
    $redis->hset($key, 'age';, 44);
    $redis->hset($key, 'country';, ';finland';);
    $redis->hset($key, 'occupation', 'software engineer');
    $redis->hset($key, 'reknown', 'linux kernel');
    $redis->hset($key, 'to delete', 'i will be deleted');
    
    $redis->hget($key, 'age'); // 44
    $redis->hget($key, 'country')); // Finland
    
    $redis->del($key, 'to delete');
    
    $redis->hincrby($key, 'age', 20); // 64
    
    $redis->hmset($key, [
        'age' => 44,
        'country' => 'finland',
        'occupation' => 'software engineer',
        'reknown' => 'linux kernel',
    ]);
    
    // finally
    $data = $redis->hgetall($key);
    print_r($data); // returns all key-value that belongs to the hash
    /*
        [
            'age' => 44,
            'country' => 'finland',
            'occupation' => 'software engineer',
            'reknown' => 'linux kernel',
        ]
    */
    

    Working with Sets
    set関連コマンド:
    SADD:setにN個のメンバー、配列または単一要素を追加する
    SREM:配列から単一または1つのメンバーを除去する
    SISMEMBER:メンバーが存在するか否かを判断する
    SMEMBERS:setのすべてのメンバーを取得する
    
    $key = "countries";
    $redis->sadd($key, ';china';);
    $redis->sadd($key, ['england', 'france', 'germany']);
    $redis->sadd($key, 'china'); // this entry is ignored
    
    $redis->srem($key, ['england', 'china']);
    
    $redis->sismember($key, 'england'); // false
    
    $redis->smembers($key); // ['france', 'germany']
    

    Set Expiry and Persistence
    Resiaはメモリに格納されているため、私が前に説明したノードがセッションを作成した文章のように、永続的に格納されていない可能性があります.ここで有効期限を設定できる方法は、EXPIREEXPIREATTTLPERSISTです.
    EXPIRE:秒単位で有効期限を設定
    EXPIREAT:どれくらい後に削除され、秒単位
    TTL:期限切れまであとどのくらい残っていますか
    PERSIST:キーを永続的に保存
    $key = "expire in 1 hour";
    $redis->expire($key, 3600); // expires in 1 hour
    $redis->expireat($key, time() + 3600); // expires in 1 hour
    
    sleep(600); // don't try this, just an illustration for time spent
    
    $redis->ttl($key); // 3000, ergo expires in 50 minutes
    
    $redis->persist($key); // this will never expire.
    

    CONCLUSION
    後悔の中で・・・30分もかかって、こんなレベルのない文章を翻訳しても、自分がどう思っているのか分からない.考えれば考えるほど間違っていますが、翻訳した以上、翻訳が終わってしまいます.中には翻訳が間違っているところや、コードが間違っているところがあるかもしれません.それは問題ではありません.かすめてください.
    Future of Redis
    Redis is a better replacement for memcached, as it is faster, scales better (supports master-slave replication), supports datatypes that many (Facebook, Twitter, Instagram) have dropped memcached for Redis. Redis is open source and many brilliant programmers from the open-source community have contributed patches.