Redis c/c++, java client连接

Redis 介绍

下载可运行文件包commons-pool2-2.2-bin.zip,解压并把commons-pool2-2.2.jar等依赖包 通过 build path 中的Add External Jars 添?

到当前的project中,最后export jar包,命名为: jedis-2.4.2.jar,能够到这里下载  http://download.csdn.net/detail/gfsfg8545/7357837

3,使用Jedis訪问 Redis

新建project, 在引入相关jar包后,仅仅要new一个Jedis对象,就能做redis相关操作了。来个简单的jedis实例:

package cn.daniel.test;
/**
 * 
 * @author Daniel
 * redis java client test.
 * time 2014-05-16 
 */

import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import redis.clients.jedis.Jedis;
public class JredisTest {
	
	public void redisTest() {
		Jedis redis = new Jedis("172.16.0.126", 6379);// connect server: ip port
		// redis.auth("user");
		// string operator
		// set key-value
		redis.set("key1", "1");
		redis.set("key2", "2");
		// mset key-value
		redis.mset("key3", "3", "key4", "4");
		// get key-value
		System.out.println("key:key1 value:"+redis.get("key1"));
		// MGET key [key ...] 
		List<String> list = redis.mget("key1", "key2", "key3", "key4");
		for(String s:list) {
			System.out.println(s);
		}
		// hset key field value
		redis.hset("website", "CSDN", "http://csdn.net/");
		redis.hset("website", "Daniel", "http://blog.csdn.net/daniel_ustc");
		// hgetAll, Get all the fields and values in the hash 
		Map<String, String> map = redis.hgetAll("website");
		for(Entry<String, String> entry:map.entrySet()) {
			System.out.println("key: " + entry.getKey()+ " value: " + entry.getValue());
		}
		// quit
		redis.quit();
	}// redisTest
	
	public static void main(String[] args) {
		JredisTest test = new JredisTest();
		test.redisTest();
	}
}

执行上面的程序就可以訪问Redis。也能够用maven管理jar包依赖,据说比較好用。

在实际使用中,通常会採用连接池的方式,不会整个项目都使用一个Connection。jedis pool 是基于apache common pool 实现的,因此主要project中导入对应的commons-pool2包,代码例如以下:

package cn.ustc.daniel.test;
/**
 * @author Daniel
 * redis java client test.
 * JredisPool
 * time 2014-05-18 
 */
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolTest {
	private static JedisPool pool=null;
	
	/**
	 * create pool
	 */
	private static JedisPool createJedisPool() {
		if(pool == null) {
			// 建立连接池配置參数
			JedisPoolConfig config = new JedisPoolConfig();
			//设置jedis最多连接数 
			config.setMaxTotal(100);
			// 设置最大堵塞时间,毫秒数
			config.setMaxWaitMillis(1000);
			// 设置最多空暇连接个数
			config.setMaxIdle(10);
			 // 创建连接池  ip port
	        pool = new JedisPool(config, "172.16.0.11", 6379);
		}
		return pool;
	}
	
	 /**
     * 在多线程环境同步初始化
     */
    private static synchronized void poolInit() {
        if (pool == null)
            pool=createJedisPool();
    }

    /**
     * 获取一个jedis 对象
     * 
     * @return
     */
    public static Jedis getJedis() {
        if (pool == null)
            poolInit();
        return pool.getResource();
    }
    /**
     * 返还一个连接
     */
    public static void returnRes(Jedis jedis) {
    	pool.returnResource(jedis);
    }
    
    // main 
    public static void main(String[] args) {
        Jedis jedis = JedisPoolTest.getJedis();
        jedis.set("name","JedisPool");
        
        String value = jedis.get("name");
        JedisPoolTest.returnRes(jedis);
        System.out.println(value);
   }
}




參考资料:

http://www.cnitblog.com/yunshichen/archive/2009/08/28/61065.html

http://flyingsnail.blog.51cto.com/5341669/1371650

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。