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
配置文件 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調用工具類)