redis(單機版)安裝部署以及java調用工具類

安裝部署步驟

1. 準備工做java

  將下載好的redis-3.2.2.tar.gz上傳到linux服務器 /lamp,進行解壓解壓linux

    tar -zxvf redis-3.2.2.tar.gzredis

  網址:http://download.redis.io/releases/redis-3.2.2.tar.gzspring

 

2. 進行編譯服務器

    cd redis-3.2.2session

    makeapp

  make這一步可能會報錯,若是報錯,能夠嘗試使用以下命令來編譯:工具

    make MALLOC=libc測試

  ( 注意:make指令是須要linux下安裝gcc的 若是沒有gcc能夠嘗試安裝ui

yum -y install gcc )

編譯好的二進制文件會放到src/目錄下,能夠看到有redis-server和redis-cli,這是redis的服務端和客戶端,咱們到時候能夠直接運行這兩個文件便可啓動服務端和客戶端

 

3. 建立目錄移動文件、便於管理:

    mkdir –p /usr/local/redis/bin 放命令

    mkdir –p /usr/local/redis/etc放配置文件

而後將上面src目錄下的命令和配置文件分別移動到對應的目錄

     mv /lamp/redis-3.2.2/redis.conf /usr/local/redis/etc

     cd /lamp/redis-3.2.2/src

     mv mkreleasdhdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli  redis-server /usr/local/redis/bin

 

4. 啓動redis服務:

進入到/usr/local/redis/bin目錄下,執行

     ./redis-server /usr/local/redis/etc/redis.conf

  這是根據配置文件redis.conf來啓動redis服務,可是默認是前臺啓動的,會佔用個人session,若是想要後臺啓動redis,還須要修改一下redis.conf的配置,打開該配置文件:

      vi /usr/local/redis/etc/redis.conf

而後將daemonize no改成yes,而後再啓動一下redis服務就能夠後臺啓動了,而後咱們能夠查看一下是否啓動成功:

      ps -ef | grep redis 查看是否啓動成功

      netstat -tunpl | grep 6379 查看該端口有沒有佔用

 

 5. 啓動redis客戶端:(在redis.conf 中增長 requirepass = ylx (密碼))

redis客戶端命令也在bin目錄下,是redis-cli文件,運行一下便可啓動redis客戶端:

      ./redis-cli -a ylx

隨便往裏面插入一個name爲test測試一下,能夠正常獲取,說明客戶端沒有問題。

      set name test

      get name

退出客戶端的話直接quit便可。

 

6. 關閉redis服務:

        關閉redis服務的話直接使用以下命令便可:

            pkill redis-server

 

 

 

java調用工具類

 

   配置文件   application.properties

#redis
redis.ip=192.168.203.13
redis.auth=ylx
redis.port=6379
redis.timeout=10000
redis.MaxTotal=200
redis.MaxIdle=200
redis.MinIdle=0
redis.MaxWaitMillis=-1
redis_list_len=100000


1. 加載redis配置文件

package com.eversec.pierce.redis;

import com.eversec.pierce.util.PropertiesLoader;

public class RedisConfig {

/**
* 加載redis配置文件
*/
private static PropertiesLoader propertiesLoader = null;
static{
propertiesLoader = new PropertiesLoader("application.properties");
String active=propertiesLoader.getProperty("spring.profiles.active");
propertiesLoader = new PropertiesLoader("application-"+active+".properties");
}

public static String getRedisConfig(String key){
return propertiesLoader.getProperty(key);
}
}

2. 維護redis鏈接池資源

package com.eversec.pierce.redis;

import java.io.Serializable;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
* 維護redis鏈接池資源
* @author root
*
*/
public class RedisResources {
private static final Logger logger = LoggerFactory.getLogger(RedisResources.class);
private static String IP = RedisConfig.getRedisConfig("redis.ip");// 鏈接地址
private static String AUTH = RedisConfig.getRedisConfig("redis.auth");// 認證信息
private static int PORT = Integer.parseInt(RedisConfig.getRedisConfig("redis.port"));
private static int TIMEOUT = Integer.parseInt(RedisConfig.getRedisConfig("redis.timeout"));// 超時時間
private static int MaxTotal = Integer.parseInt(RedisConfig.getRedisConfig("redis.MaxTotal"));
private static int MaxIdle = Integer.parseInt(RedisConfig.getRedisConfig("redis.MaxIdle"));
private static int MinIdle = Integer.parseInt(RedisConfig.getRedisConfig("redis.MinIdle"));
private static int MaxWaitMillis = Integer.parseInt(RedisConfig.getRedisConfig("redis.MaxWaitMillis"));

private static JedisPool jedisPool = null;
/**
* 加載redis鏈接池
*/
static {
init();
}
private static void init(){
JedisPoolConfig config = new JedisPoolConfig();
//config.setMaxWaitMillis(MAX_WAIT);
//config.setMaxTotal(MAX_ACTIVE);
//config.setMinIdle(MIN_IDLE);
//config.setTestOnBorrow(TEST_ON_BORROW);
//-------------------------------------------------

config.setMaxTotal(MaxTotal);
config.setMaxIdle(MaxIdle);
config.setMinIdle(MinIdle);//設置最小空閒數
config.setMaxWaitMillis(MaxWaitMillis);
//config.setTestOnBorrow(TestOnBorrow);
//config.setTestOnReturn(TestOnReturn);
//Idle時進行鏈接掃描
//config.setTestWhileIdle(TestWhileIdle);
//表示idle object evitor兩次掃描之間要sleep的毫秒數
//config.setTimeBetweenEvictionRunsMillis(TimeBetweenEvictionRunsMillis);
//表示idle object evitor每次掃描的最多的對象數
//config.setNumTestsPerEvictionRun(NumTestsPerEvictionRun);
//表示一個對象至少停留在idle狀態的最短期,而後才能被idle object evitor掃描並驅逐;這一項只有在timeBetweenEvictionRunsMillis大於0時纔有意義
//config.setMinEvictableIdleTimeMillis(MinEvictableIdleTimeMillis);

jedisPool = new JedisPool(config,IP,PORT,TIMEOUT,AUTH);
}

/**
* 從鏈接池裏獲取redis鏈接
* @return
*/
public static Jedis getResources(){
int i=0;
Jedis jedis=null;
while(true){
try{
jedis=jedisPool.getResource();
}catch(Exception e){
init();
jedis=jedisPool.getResource();
logger.error("Redis鏈接失敗,第"+i+"次鏈接");
}
if(jedis != null){
return jedis;
}
}
}
}


3. redis使用工具類

package com.eversec.pierce.redis;import java.io.Serializable;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.eversec.pierce.config.Global;import redis.clients.jedis.Jedis;/** * redis使用工具類 * @author root * */public class RedisTemplate<T extends Serializable> {   private static final Logger logger = LoggerFactory.getLogger(RedisTemplate.class);      /**    * 保存字符串     * @param key     * @param value    */   public void setStr(String key,String value)throws Exception{      Jedis jedis = null;      try{         jedis = RedisResources.getResources();         jedis.set(key, value);      }catch(Exception e){         logger.error("Redis工具類異常",e);         throw new Exception(e);      }finally{         if (jedis != null) {                  jedis.close();              }      }       }      /**    * 獲取字符串值    * @param key    * @return    */   public String getStr(String key) throws Exception{      Jedis jedis = null;      String value=null;      try{         jedis = RedisResources.getResources();         value = jedis.get(key);      }catch(Exception e){         logger.error("Redis工具類異常",e);         throw new Exception(e);      }finally{         if (jedis != null) {                  jedis.close();              }      }      return value;   }      /**    * 保存List    * @param key    * @param t    */   public <T extends Serializable > long setList(String key,String value) throws Exception{      Jedis jedis = null;      try {         jedis = RedisResources.getResources();         long lag=jedis.rpush(key, value);         return lag;      } catch (Exception e) {         logger.error("Redis工具類異常",e);         throw new Exception(e);      }finally{         if (jedis != null) {                  jedis.close();              }      }   }      /**    * 獲取List    */      public <T extends Serializable> List<T> getList(String key)throws Exception{      Jedis jedis = null;      List<T> t = null;      try{         jedis = RedisResources.getResources();         int len_end = Integer.parseInt(Global.getConfig("redis_list_len"));         t=(List<T>) jedis.lrange(key,0,len_end);//返回List集合      }catch(Exception e){         logger.error("Redis工具類異常",e);         throw new Exception(e);      }finally{         if (jedis != null) {                  jedis.close();              }      }      return t;   }               /**    * 清空List    */      public <T extends Serializable> void delList(String key)throws Exception{      Jedis jedis = null;      try{         jedis = RedisResources.getResources();         jedis.del(key);        }catch(Exception e){         logger.error("Redis工具類異常",e);         throw new Exception(e);      }finally{         if (jedis != null) {                  jedis.close();              }      }   }   /**    * 移除List中的元素    */      public <T extends Serializable> void removeList(String key,Long index) throws Exception{      Jedis jedis = null;      try{         jedis = RedisResources.getResources();         //ltrim: ltrim mylist 1 -1     //保留mylist中 1到末尾的值,即刪除第一個值。         jedis.ltrim(key, index, -1);        }catch(Exception e){         logger.error("Redis工具類異常",e);         throw new Exception(e);      }finally{         if (jedis != null) {                  jedis.close();              }        }   }   }以上是本人本身總結,而且在項目總實際運用操做的。新手一枚,不喜勿噴!(接下來的文章中會有 redis集羣版的安裝部署以及java調用工具類)
相關文章
相關標籤/搜索