Redis c/c++, java client连接

Redis 介绍

redis这个想必大家都了解,关于redis的安装參考这里,redis使用文档參见这里,英文文档

Redis Cclient的用法

Redis的cclient Hiredis使用比較广泛,以下主要介绍下它。

1,Hiredis的安装,配置

Hiredisclient 在redis解压后的deps/hiredis下有对应的文件。假设你的安装包没有对应的文件能够到这里下载

cd deps/hiredis (下载hiredis的话 自行解压进入 解压后的文件夹)。

make

最后 把对应的文件添?到 系统文件夹下,这样系统可以搜索到。

mkdir /usr/lib/hiredis

cp libhiredis.so /usr/lib/hiredis #将动态连接库libhiredis.so至/usr/lib/hiredis

mkdir /usr/include/hiredis

cp hiredis.h /usr/include/hiredis

最后注意:

须要更新一下库的cache,运行命令:sudo ldconfig /usr/lib/

由于程序启动时,会去/etc/ld.so.cache来查找所要用的库,不然会出现例如以下错误:error while loading shared libraries: libhiredis.so.0.10: cannot open shared object file: No such file or directory。 关于这些知识參考这里

2,Cclient訪问Redis

上面的工作完毕后,就能够进行连接hiredisserver。代码例如以下(编译环境为ubuntu系统上gcc)

// redis_test.c
#include <stdio.h>
#include <string.h>
#include <hiredis.h>

int main()
{
	redisContext *c = redisConnect("127.0.0.1", 6379);// ip port
   if(c->err)
   {
	   printf("connect error.%s", c->errstr);
   }
   else
   {
	   printf("connected\n");
   }
   char *value="It‘s a test";
   redisReply *reply1 = redisCommand(c, "set key %s", value);
   freeReplyObject(reply1);
   redisReply *reply2 = redisCommand(c, "get key");
   printf("key:1 value:%s\n", reply2->str);
   freeReplyObject(reply2);
   redisFree(c);
   return 0;
}

在linux系统下 .o 就相当于windows里的obj文件  .a 是好多个.o合在一起,用于静态连接 .so 是shared object,用于动态连接的,和dll差点儿相同 。

因此说明两中编译方法:

一,採用静态链接方法

把 hiredis编译后的 libredis.a 复制到当前程序 文件夹下,运行例如以下命令:

gcc  -o test redis_test.c   libredis.a

执行程序: ./test , 能够看到成功了。

二,动态链接

运行例如以下命令:gcc  -o test redis_test.c   libredis.so (注意 使用共享库前要sudo ldconfig /usr/lib/)

执行程序: ./test , 能够看到成功了。

Redis Javaclient的用法

1,Jedis下载

Jedis 是Redis 的Javaclient,Redis中Javaclient使用的相对照较广泛,以下就介绍Java怎么链接和实验Redis.

Jedis下载地址在 这里  通过网址 https://github.com/xetorthio/jedis 下载jedis源代码。

2,编译Jedis jar 包

通过步骤1 下载下来的源代码发现没有 jar包,对于编程直接使用源代码比較麻烦,如今把源代码打包为jar文件下次用的时候能够直接使用了。

用eclipse新建一个Jedisproject把 解压后的 redis文件放在新建project的src文件夹下,发现缺失对应的Commons Pool 2.2 包,须要到这里

下载可运行文件包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

时间: 2024-08-02 18:40:31

Redis c/c++, java client连接的相关文章

大数据下的java client连接JDBC

1.前提 启动hiveserver2服务 url,username,password 2.程序 3.结果 emp的第一列与第二列

JAVA HDFS API Client 连接HA

如果Hadoop开启HA,那么用Java Client连接Hive的时候,需要指定一些额外的参数 package cn.itacst.hadoop.hdfs; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apac

Java链接Redis时出现 “ERR Client sent AUTH, but no password is set”

Java链接Redis时出现 “ERR Client sent AUTH, but no password is set” 异常的原因及解决办法 [错误提示] redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the poolat redis.clients.util.Pool.getResource(Pool.java:53) at redis.clients.jedis

Redis c/c++, java 客户端连接

Redis 介绍 redis这个想必大家都了解,关于redis的安装参考这里,redis使用文档参见这里. Redis C客户端的使用方法 Redis的c客户端 Hiredis使用比较广泛,下面主要介绍下它. 1,Hiredis的安装,配置 Hiredis客户端 在redis解压后的deps/hiredis下有相应的文件.如果你的安装包没有相应的文件可以到这里下载. cd deps/hiredis (下载hiredis的话 自行解压进入 解压后的目录). make 最后 把相应的文件加入到 系统

Redis02 Redis客户端之Java

1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repository官网下载jar包 jedis <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> &

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConver

Kafka 0.9+Zookeeper3.4.6集群搭建、配置,新版Java Client的使用要点,高可用性测试,以及各种坑(二)

上一节中(点此传送),我们完成了Kafka集群的搭建,本节中我们将介绍0.9版本中的新API,以及Kafka集群高可用性的测试 1. 使用Kafka的Producer API来完成消息的推送 1) Kafka 0.9.0.1的java client依赖: <dependency>     <groupId>org.apache.kafka</groupId>     <artifactId>kafka-clients</artifactId>  

mongodb3.0分片及java代码连接操作测试(开启用户验证)

最近抽时间搭建了一下mongodb简单的分片,整个过程还算是蛮顺利,只不过在用户验证这一块遇到了一些问题,好在最后终于搞定. 一.服务器搭建过程: 1.安装四个mongodb:一个作为config.一个作为mongos.另外两个作为主要数据存储的服务器(机器ip192.168.0.201),如图: 分别对应图中被红框框起来的mongoconf.mongos.mongo1.mongo2(解压安装,安装过程省略). 2.分别建立data.conf.logs文件夹,并在logs文件夹下建立mongod

JAVA长连接demo

http://blog.csdn.net/caomiao2006/article/details/38830475 JAVA长连接demo 2014-08-25 23:20 4767人阅读 评论(2) 收藏 举报  分类: JAVA(161)  [java] view plain copy package houlei.csdn.keepalive; import java.io.Serializable; import java.text.SimpleDateFormat; import ja