1. 程式人生 > >java 操作redis 資料庫一:基本操作

java 操作redis 資料庫一:基本操作

redis作為nosql資料庫的佼佼者,作為一名java開發人員,掌握其操作還是很有必要的

下載地址:http://redis.io/download, 

安裝我就不累贅了,自行百度去

在操作前,需要新增操作redis需要的jar包jedis.jar

好,廢話不多說,直接上程式碼

package com.redis;


import java.util.ArrayList;
import java.util.List;


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




public class DemoRedis {
/**
* 獲取jedis物件
* @return
*/
Jedis getJedis(){
JedisPoolConfig config =new JedisPoolConfig();
JedisPool s=new JedisPool(config,"127.0.0.1",6379);
Jedis je=s.getResource();
return je;
}
/**
* 新增
* @param key
* @param value
*/
void add(String key,String value){
Jedis jedis=getJedis();
String str=jedis.set(key, value);
}


/**
* 顯示
* @param key
*/
void show(String key){
Jedis jedis=getJedis();
System.out.println("取出的值是:"+jedis.get(key));

}
/**
模糊查詢


* @param str 
*/
void showCompex(String str){
Jedis jedis=getJedis();
System.out.println("模糊查詢key:"+jedis.keys(str));

}
/**
* 刪除
* @param str
*/
void delete(String[] str){
Jedis jedis=getJedis();
System.out.println("返回值為:"+jedis.del(str));



}

/**
* 新增多個key-value
* @param str

*/
void addManyKey(String[] str){
/*
* 格式:跟json差不多,區別就是把 : 轉成 ,
String str[]=new String[]{"one","name1","two","name2"};
*/
Jedis jedis=getJedis();
jedis.mset(str);
}

/**
* 刪除所有
*/
void deleteAll(){
System.out.println(getJedis().flushDB());
}
/**
* 設定key的超時
* @param key
* @param time
*/
void setTimeOut(String key,int time){

System.out.println(getJedis().expire(key, time));
}
/**
* 查詢key的時間,不存在時返回-2,存在沒有設定時間返回-1,否則返回時間
* @param key
*/
void showTimeOut(String key){
System.out.println(getJedis().pttl(key));
}

}

二。補充,

上面獲取連線的方式適合測試,在實際開發中並不可取,應該使用工廠類來建立,附上程式碼

package com.redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
 * redis工廠類
 * @author Administrator
 *C:\Users\Administrator\.m2\repository\redis\clients\jedis\2.8.0\jedis-2.8.0.jar
 */
public class RedisFactory {
//最大連結數
private int maxTotal=10;
//最大空閒執行緒
private int maxIdle=5;
//最小空閒數
private int minIdle=0;
//最大等待時間
private int maxWaitMillis=1000;
//連線池管理物件
private static JedisPool jedisPool;
//地址
private String url;
//埠
private int port;
//密碼
private String passWold;
//讀取超時時間
private int timeOut=1000;
//
private static RedisFactory obj=new RedisFactory();

private RedisFactory(){

}
public  static RedisFactory CreateRedisFactory(){
return obj;
}
/**
* 建立連結池物件
*/
private  synchronized void createJedsiPool(){
JedisPoolConfig config=new JedisPoolConfig();
//最大連結數
config.setMaxTotal(maxTotal);
//最大空閒執行緒
config.setMaxIdle(maxIdle);
//最大等待時間
config.setMaxWaitMillis(maxWaitMillis);
//最小空閒數
config.setMinIdle(minIdle);
this.jedisPool=new JedisPool(config,url,port,timeOut,passWold);
}
/**
* 獲取連線
* @return
*/
public synchronized  Jedis getJedis(){
if(jedisPool==null){
createJedsiPool();
}
//當執行緒數用完進行等待
if(jedisPool.getNumActive()>=maxTotal){
while(true){
try {
Thread.sleep(500);
if(jedisPool.getNumActive()<maxTotal)
break;
} catch (InterruptedException e) {
break;
}
}
}
return jedisPool.getResource();
}


public String getUrl() {
return url;
}


public void setUrl(String url) {
this.url = url;
}


public void setPort(int port) {
this.port = port;
}


public String getPassWold() {
return passWold;
}


public void setPassWold(String passWold) {
this.passWold = passWold;
}


public void setTimeOut(int timeOut) {
this.timeOut = timeOut;
}


public void setMaxTotal(int maxTotal) {
this.maxTotal = maxTotal;
}

public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}

public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}

public void setMaxWaitMillis(int maxWaitMillis) {
this.maxWaitMillis = maxWaitMillis;
}

}