Redisキャッシュコントロール

5101 ワード

大型プロジェクトでは通常キャッシュを使いますが、プロジェクトがクラスタを使って配備されたら、どのようにキャッシュ内容を共有しますか?
Redisを使用すると、複数のマシンまたは複数のアプリケーション間でキャッシュを共有することができます.
インストール
まず、サーバーのインストール機能Redisサービスが必要です.http://redis.io/
サーバーにダウンロードした後、ストレス解消redis-2.6..14.tar.gz
tar-zxvf  redis-2.6.1.tar.gz
その後redis-2.64.14のディレクトリに入り、先にmakeコマンドでコンパイルして、cdはsrcディレクトリに入ります.
sudo./redis-serverオープンサービス
出力が見えたら: 15 Aug 13:38:05.98*The server is now ready to accept connections on 6379  サービスがオープンしました.標準ポートは6379です.
クライアントを開く場合は、Srcディレクトリの下でsudo./redis-cliを開くことができます.
 データ構造
普通のキーの値を入れてput keyname value操作List RPUSH listname valueに新しい値を入れてListの最後のLPUSH listname valueに参加します.Listの先頭LRANGE listname startIndex endIndex接収Listに新しい値を加えます.endIndex LLEN_listnameを含め、Listを制定する長さLPOP_listnameを取得し、Listを除去する最初の要素RPOP_listname除去Listの最後の要素操作Set SADD setname value付加元素SREM setname削除要素SISMEM BER setname value判断要素はset内のSMEMBER setnight 2つの要素をすべて統合するために使用されます.そして、2つのセットの重複要素を統合して、新しいSetの使い方を得ました.SUNION setname 1 setname 2は、並べ替え機能があるSetを操作し、scoreに従ってZRANGE 0-1を使用して、set内のすべての要素の保存対象を取得することができます.(Hashesデータ構造を使用します.)使用方法は、元素を追加します.  HMSET student:01 username zhoufeng age 20 sex男性取得要素  HGETALL student:01はこのオブジェクトを取得できます.javaクライアントで呼び出します.
Redisはほとんどの開発言語をサポートするクライアントです.
javaクライアントを使用する例は以下の通りです.
まずjedis.x.x.jarとcommons-pool-x.x.jarをダウンロードして、住所をダウンロードします.https://github.com/xetorthio/jedis
またはmavenを使用します.下の配置を追加すればいいです.
   
    <dependency>
	    <groupId>redis.clients</groupId>
	    <artifactId>jedis</artifactId>
	    <version>2.0.0</version>
	    <type>jar</type>
	    <scope>compile</scope>
	</dependency>
    
クライアントテストを開発することができます.
package com.zf.redis;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;

public class TestRedis {

	private static final String SERVER_ADDRESS = "127.0.0.1";	//     
	private static final Integer SERVER_PORT = 6379 ;	//  
	
	private Jedis jedis ;
	
	@Before
	public void init(){
		jedis = new Jedis(SERVER_ADDRESS, SERVER_PORT); 
	}
	
	
	
	/**
	 *        
	 */
	@Test
	public void test01(){
		jedis.set("name", "zhoufeng");//  1 key=name value=zhoufeng    
		String value = jedis.get("name");  	//  key=name  
		System.out.println(value);
	}
	
	/**
	 *   List
	 */
	@Test
	public void test02(){
		
		// zhoufeng   students     ,           ,       students  
		jedis.rpush("students", "zhoufeng");	
		
		// zhangsan   students   
		jedis.lpush("students", "zhangsan");
		
		//  students      
		jedis.lpop("students");
		
		//  students       
		jedis.rpop("students");
		
		//       ,             ,  list           
		jedis.lrem("student", 1, "zhangsan") ;
		//  students       
		List <String> students = jedis.lrange("students", 0, -1) ;
		
		System.out.println(students);
	}
	
	/**
	 *   Set
	 */
	@Test
	public void test03(){
		//    
		jedis.sadd("teachers", "zhangsan");
		jedis.sadd("teachers", "lisi");
		jedis.sadd("teachers", "wangwu");
		
		//  Set        
		Boolean b1 = jedis.sismember("teachers", "wangwu");
		Boolean b2 = jedis.sismember("teachers", "xxxxx");
		System.out.println(b1 + "   " + b2);  
		
		//  Set      
		Set<String> members =  jedis.smembers("teachers");
		Iterator<String> it = members.iterator() ;
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
	//	jedis.sunion(keys...)      Set   1        Set
		
	}
	
	/**
	 *         Set
	 */
	@Test
	public void test04(){
		//    ,          
		jedis.zadd("emps", 5 , "aaa") ;
		jedis.zadd("emps", 1 , "bbbb") ;
		jedis.zadd("emps", 3 , "ccc") ;
		jedis.zadd("emps", 2 , "ddd") ;
		
		//      
		Set<String> emps = jedis.zrange("emps", 0, -1) ;
		Iterator<String> it = emps.iterator() ;
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
	
	/**
	 *     ,  Map    
	 */
	@Test
	public void test05(){
		Map<String , String > car = new HashMap<String , String >() ;
		car.put("COLOR", "red") ;
		car.put("SIZE", "2T");
		car.put("NO", " 8888");
		//    ,  car:01  key,        car  。  car:02
		jedis.hmset("car:01", car);
		
		//      
		Map<String, String> result = jedis.hgetAll("car:01");	
		Iterator<Entry<String, String>>  it = result.entrySet().iterator();
		while(it.hasNext()){
			Entry<String, String> entry = it.next() ;  
			System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
		}
		
		//          
		String no = jedis.hget("car:01", "NO") ;
		System.out.println("NO:" + no);
	}
	
}