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;
}
}