1. 程式人生 > >Redis入門:下載安裝篇(安裝版)

Redis入門:下載安裝篇(安裝版)

由於筆者是初學者,並且辦公電腦是公司的windows,所以筆者花了大量的時間去搜索redis的windows版本。

Redis官方原版只支援linux,筆者花時間從GitHub上找到了微軟提供的windows版,結果由於網路問題,一直提示下載失敗。經歷了惆悵的百度時間,發現Redis資源基本被壟斷成了獲利工具。這種行為是讓筆者不能容忍的。明明只是個搬運工,非得把自己打造成物流公司。

於是筆者繼續努力,翻山越嶺地下載到了兩篇資源:

兩篇資源同時也免費共享到了百度雲盤裡:

連結: https://pan.baidu.com/s/1jPnOgs91jLiD7FxNwqOx-g 密碼: qrdq

下面就是繼續Redis的安裝學習

筆者先發安裝版的使用方法,解壓版的有空再發。

首先是選擇安裝路徑和勾選把redis新增到環境變數中

第二部選擇我們的安裝埠,勾選是將埠新增到防火牆規則中,一般個人開發可以不勾選。

第三步設定最大記憶體限制,筆者由於公司電腦記憶體太低,所以就配置了個500兆。

隨後安裝完成進入使用階段。

  1. 配置配置檔案:安裝目錄下的redis.windows.conf,在修改配置檔案的時候,屬性一定要頂格,不能留有空白。否則會報錯:Invalid argument during startup: unknown conf file parameter :

    1. 
      bind 127.0.0.1
      port 6369
      requirepass redispassword
  2. 啟動服務:redis-server redis.windows.conf

筆者建立的是Marven專案,所以在呼叫外部依賴jar包的時候直接呼叫的pom.xml的dependency

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
<dependency>
  <groupId>commons-pool</groupId>
  <artifactId>commons-pool</artifactId>
  <version>1.6</version>
</dependency>

如果讀者沒有使用maven做包管理,可以直接訪問上方的連結,下載最新的jar包。

兩個jar包

      jedis.jar用於管理和連結Redis

     commons-pool.jar使用者管理Redis的執行緒池

使用雙驗證單例模式實現Jedis的管理 - 由於埠衝突,Redis的埠被調整為6369。

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
 * redis的連結工具
 * @author yz
 *
 */
public class RedisUtil {
	private static JedisPool pool = null;
	
	/**
	 * 單例模式的雙鎖實現
	 * @return
	 */
	private static final JedisPool getPoll() {
		if(pool==null) {
			synchronized(RedisUtil.class){
				if(pool==null) {
					JedisPoolConfig config = new JedisPoolConfig();
		            //最大活動物件數
		            config.setMaxTotal(500);
		            //最大能夠保持idel狀態的物件數
		            config.setMaxIdle(100);
		            //最小能夠保持idel狀態的物件數
		            config.setMinIdle(10);
		            //表示當borrow(引入)一個jedis例項時,最大的等待時間,如果超過等待時間,則直接丟擲JedisConnectionException;
		            config.setMaxWaitMillis(1000 * 1);
		            //在borrow一個jedis例項時,是否提前進行validate操作;如果為true,則得到的jedis例項均是可用的;
		            config.setTestOnBorrow(true);
		            //“空閒連結”檢測執行緒,檢測的週期,毫秒數。如果為負值,表示不執行“檢測執行緒”。預設為-1.
		            config.setTimeBetweenEvictionRunsMillis(1000*60);
		            //對於“空閒連結”檢測執行緒而言,每次檢測的連結資源的個數。預設為3.
		            config.setNumTestsPerEvictionRun(50);
		            pool = new JedisPool(config, "127.0.0.1", 6369,0,"redispassword");
				}
			}
		}
		return pool;
	}
	/**
	 * 獲取redis的操作器Jedis
	 * @return
	 */
	public static final Jedis getInstance() {
		if(pool==null)getPoll();
		return pool.getResource();
	}
	/**
	 * 釋放資源
	 * @param jedis
	 */
	public static final void release(Jedis jedis) {
		jedis.close();
	}
	
}

程式碼呼叫:

Jedis jedis=RedisUtil.getInstance();
jedis.set("testdemo", "張三是個老實人");
LOG.info(jedis.get("testdemo"));