Redisスタンドアロン版と擬似クラスタのインストールおよびjedisの使用

12450 ワード

一、据付
ダウンロード
ダウンロード:http://download.redis.io/releases/redis-3.0.0.tar.gz
GCCのインストール(Ubuntu 16.0.4環境)
        sudo apt-get install gcc-4.8                                   
参照先:download.redis.io/releases/redis-3.0.0.tar.gz
3、インストール私は/usr/local/ではなく/optディレクトリの下にソフトウェアをインストールするのが好きです.redisディレクトリの作成:cd/opt sudo mkdir redisこのsudo cp~/ダウンロード/redis-3.0にredisインストールパッケージをコピーする.0.tar.gz/opt/redis解凍:lxj@Lenovo:/opt/redis$ sudo tar -zxvf redis-3.0.0.tar.gzコンパイル:
redisディレクトリにインストール:
Redis单机版和伪集群的安装以及jedis的使用_第1张图片
Redis单机版和伪集群的安装以及jedis的使用_第2张图片
Redis单机版和伪集群的安装以及jedis的使用_第3张图片
バックエンド起動:
ファイルの下にあるredisを解凍します.confをbinディレクトリにコピー
        lxj@Lenovo:/opt/redis/redis-3.0.0$ sudo cp redis.conf/opt/redis/bin/
redisを変更します.confの権限lxj@Lenovo:/opt/redis/bin$ chmod 777 redis.conf編集daemonize yesをyesに設定すると、バックエンド起動バックエンド起動をサポートします.lxj@Lenovo:/opt/redis/bin$ ./redis-server redis.conf redisプロセスの表示:ps-aux|grep redis

閉じる:./bin/redis-cli shutdown
redisでよく使用されるコマンド:
データ型:String、Hash、List、set、treeset用のStringが一番多い!Set str 1234 get str incr stこれなしでデフォルトの値は1で、使用するたびに1が加算されます
decr stマイナス1
Redis单机版和伪集群的安装以及jedis的使用_第4张图片
keyの有効期間の設定:expire str 100 ttl keyの有効期間を表示-1永続保存-2は存在しません
keys*redisに何個のkeyがあるかを確認します.
二、Jedisクライアント使用
maven依存の追加

		
			redis.clients
			jedis
			2.7.2
		
        
	@Test
	public void JedisTest() {
//		    Jedis  ,     IP    
		Jedis  jedis = new Jedis("127.0.0.1", 6379);
//		       
		jedis.set("lier", "boolean");
		System.out.println(jedis.get("lier"));
		jedis.close();
	}
	
	public void JedisPoolTest() {
//		jedis   :
		/*
		 * 1、          
		 * 2、        
		 * 3、    
		 * 4、    
		 *           。=
		 */
		JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
		Jedis jedis = jedisPool.getResource();
		System.out.println(jedis.get("lier"));
		jedis.close();
		jedisPool.close();
	}

三、redis擬似クラスタ構築
ビルド
1、クラスタディレクトリsudo mkdir clusterを作成し、状況によって権限を変更するかどうかを確認する
2、binディレクトリの下のファイルをコピーする
Redis单机版和伪集群的安装以及jedis的使用_第5张图片
3、ポートの変更、クラスタモードポートの設定7001-7006 cluster-enabled yes 4から、6つのredisインスタンスvim start-allを起動する.sh    cd redis_01    ./redis-server redis.conf    cd ..    cd redis_02    ./redis-server redis.conf    cd ..    cd redis_03    ./redis-server redis.conf    cd ..    cd redis_04    ./redis-server redis.conf    cd ..    cd redis_05    ./redis-server redis.conf    cd ..    cd redis_06    ./redis-server redis.次にchmod+x start-all.sh実行権限の追加ruby実行環境sudo apt-get rubyインストール最新版rubyインストールRubygemsインストールhttps://rubygems.org/pages/download解凍、sudo ruby setup.rbはredisとrubyをインストールする口実Gem install redis--version 3.0.0注意:gem install redis--version 3.0.0失敗したら、gemのソースgem sources--removeを修正する必要があります.https://rubygems.org/gem sources -a https://ruby.taobao.org/しかし、私はredis-3.0を直接ダウンロードすることに成功しませんでした.0.gem    sudo gem install redis-3.0.0.gem-rwxrwxr-x 1 root root 48141 4月1 2015 redis-trib.rb*スクリプトコマンドを実行する./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006とは、ノードごとにバックアップマシンUsing 3 masters:127.0があることを意味する.0.1:7001127.0.0.1:7002127.0.0.1:7003Adding replica 127.0.0.1:7004 to 127.0.0.1:7001Adding replica 127.0.0.1:7005 to 127.0.0.1:7002Adding replica 127.0.0.1:7006 to 127.0.0.1:7003M: 738265181aa908d53c2ffc3bbd3d47a7c6e1f418 127.0.0.1:7001   slots:0-5460 (5461 slots) masterM: ba6818a1ff315336fb3d87b8cd9c13b0fbe9768b 127.0.0.1:7002   slots:5461-10922 (5462 slots) masterM: 614cc5f5ba6eaef636f3e8a5bd2f507ef33487ba 127.0.0.1:7003   slots:10923-16383 (5461 slots) masterS: 70cbd4ec3a02f744a1fa347e0e5ca4e2e65ca64b 127.0.0.1:7004   replicates 738265181aa908d53c2ffc3bbd3d47a7c6e1f418S: 94ab07591b4e9741e71252187cb352cfd7dc6c99 127.0.0.1:7005   replicates ba6818a1ff315336fb3d87b8cd9c13b0fbe9768bS: 02f4525afb8dd6bf821de59b8c44327d91a9238b 127.0.0.1:7006   replicates 614cc5f5ba6eaef636f3e8a5bd2f507ef33487ba
ノードスロットから12が見えるかどうか
使用(スタンドアロン、接続プール、クラスタモード)
        
  +       :               
	package com.taotao.content.jedis;

public interface JedisClient {

	String set(String key, String value);
	String get(String key);
	Boolean exists(String key);
	Long expire(String key, int seconds);
	Long ttl(String key);
	Long incr(String key);
	Long hset(String key, String field, String value);
	String hget(String key, String field);
	Long hdel(String key, String... field);
}
package com.taotao.content.jedis;

import org.springframework.beans.factory.annotation.Autowired;

import redis.clients.jedis.JedisCluster;
//    
public class JedisClientCluster implements JedisClient {
	
	@Autowired
	private JedisCluster jedisCluster;

	@Override
	public String set(String key, String value) {
		return jedisCluster.set(key, value);
	}

	@Override
	public String get(String key) {
		return jedisCluster.get(key);
	}

	@Override
	public Boolean exists(String key) {
		return jedisCluster.exists(key);
	}

	@Override
	public Long expire(String key, int seconds) {
		return jedisCluster.expire(key, seconds);
	}

	@Override
	public Long ttl(String key) {
		return jedisCluster.ttl(key);
	}

	@Override
	public Long incr(String key) {
		return jedisCluster.incr(key);
	}

	@Override
	public Long hset(String key, String field, String value) {
		return jedisCluster.hset(key, field, value);
	}

	@Override
	public String hget(String key, String field) {
		return jedisCluster.hget(key, field);
	}

	@Override
	public Long hdel(String key, String... field) {
		return jedisCluster.hdel(key, field);
	}

}
package com.taotao.content.jedis;

import org.springframework.beans.factory.annotation.Autowired;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
//     
public class JedisClientPool implements JedisClient {
	
	@Autowired
	private JedisPool jedisPool;

	@Override
	public String set(String key, String value) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.set(key, value);
		jedis.close();
		return result;
	}

	@Override
	public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.get(key);
		jedis.close();
		return result;
	}

	@Override
	public Boolean exists(String key) {
		Jedis jedis = jedisPool.getResource();
		Boolean result = jedis.exists(key);
		jedis.close();
		return result;
	}

	@Override
	public Long expire(String key, int seconds) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.expire(key, seconds);
		jedis.close();
		return result;
	}

	@Override
	public Long ttl(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.ttl(key);
		jedis.close();
		return result;
	}

	@Override
	public Long incr(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.incr(key);
		jedis.close();
		return result;
	}

	@Override
	public Long hset(String key, String field, String value) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hset(key, field, value);
		jedis.close();
		return result;
	}

	@Override
	public String hget(String key, String field) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.hget(key, field);
		jedis.close();
		return result;
	}

	@Override
	public Long hdel(String key, String... field) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hdel(key, field);
		jedis.close();
		return result;
	}
}

Spring関連構成(両方を1つ開ければよい)

   
	
	
	
	
	
		
			
				
					
					
				
				
					
					
				
				
					
					
				
				
					
					
				
				
					
					
				
				
					
					
				
			
		
	
	

テスト
  :
	@Test
	public void JedisClientTest() {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:Spring/ApplicationConfig-redis.xml");
		JedisClient clent=(JedisClient) ctx.getBean(JedisClient.class);
		System.out.println(clent.get("name"));
	}
トラフィックコードのキャッシュへの追加
@Override
	public List getTbContentsByContentCategory(Long contentCategoryId) {
		//            ,      ,      ,               
		//                   
		List contents = null;
		String ad1 = null;
		try {
			ad1 = jedisClient.hget(INDEX_CONTENT, contentCategoryId + "");
			if (StringUtils.isNotEmpty(ad1)) {
				contents = JsonUtils.jsonToList(ad1, TbContent.class);
				return contents;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		TbContentExample contentExample = new TbContentExample();
		Criteria criteria = contentExample.createCriteria();
		criteria.andCategoryIdEqualTo(contentCategoryId);
		contents = contentMapper.selectByExample(contentExample);
		try {
			jedisClient.hset(INDEX_CONTENT, contentCategoryId + "", JsonUtils.objectToJson(contents));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return contents;
	}

       ,         ,