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を使用します.下の配置を追加すればいいです.
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);
}
}