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

Redis 介绍

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

Redis C客户端的使用方法

Redis的c客户端 Hiredis使用比较广泛,下面主要介绍下它。

1,Hiredis的安装,配置

Hiredis客户端 在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,C客户端访问Redis

上面的工作完成后,就可以进行连接hiredis服务器。代码如下(编译环境为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 Java客户端的使用方法

1,Jedis下载

Jedis 是Redis 的Java客户端,Redis中Java客户端使用的相对比较广泛,下面就介绍Java怎么链接和实验Redis.

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

2,编译Jedis jar 包

通过步骤1 下载下来的源码发现没有 jar包,对于编程直接使用源码比较麻烦,现在把源码打包为jar文件下次用的时候可以直接使用了。

用eclipse新建一个Jedis工程把 解压后的 redis文件放在新建工程的src目录下,发现缺失相应的Commons Pool 2.2 包,需要到这里

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

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

3,使用Jedis访问 Redis

新建工程, 在引入相关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包依赖,据说比较好用。

参考资料:

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

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

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

时间: 2025-01-02 16:21:53

Redis c/c++, java 客户端连接的相关文章

Elasticsearch - java客户端连接

写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 最简单的在java客户端连接es服务器 (仅作为快速简单使用demo) 1 package com.es.util.elasticsearch; 2 3 import lombok.Data; 4 import org.apache.log4j.Logger; 5 import org.elasticsearch.actio

java客户端连接MongoDB数据库的简单使用

1.下载mongoDB的jar包,并引入到工程的CLASSPATH中下载:mongodb2.5驱动包下载 如果使用maven项目,最新的依赖如下: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.2.0</version> </dependency> 需要特别注意的是如果

Java客户端连接kafka集群报错

往kafka集群发送消息时,报错如下: page_visits-1: 30005 ms has passed since batch creation plus linger time 加入log4j.properties,设置为DEBUG级别,错误如下: 2017-06-03 17:33:31,417 DEBUG [org.apache.kafka.clients.NetworkClient] - Error connecting to node 2 at kafka-cluster-64bi

Redis:十一、客户端连接

Redis:相关内容 Redis连接命令主要是链接redis服务 1.auth password//验证密码是否正确//返回值:密码匹配时返回OK,否则返回一个错误 2.echo message//打印字符串,不能打印key的内容//返回值:返回字符串本身 3.ping//查看服务是否运行//返回值:如果连接正常就返回一个PONG,否则返回一个连接错误 4.quit//用于关闭当前客户端与redis服务的连接,一旦所有等待中的回复顺利写入到客户端,连接就会被关闭.//返回值:OK 5.selec

Mysql Redis PostgreSQL数据库查看客户端连接

Redis数据库查看连接的客户端 [root@VM_8_24_centos ~]# redis-cli -h 10.0.4.6 -a yourpassword 10.0.4.6:6379> client list addr=100.120.205.19:1024 fd=9 cmd=client age=3 idle=0 proxy=33c6e51a9cc4771fb5836880f86a860f 10.0.4.6:6379> exit [root@VM_8_24_centos ~]# Mysl

Redis基础知识之————如何处理客户端连接

redis 连接建立 Redis Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型. 然后为这个socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个 readable 的文件事件用于监听这个客户端 socket 的数据发送 当客户端连接被初始化后,

Redis如何处理客户端连接

本文主要介绍了 Redis 处理客户端连接的一些内部实现机制,包括连接处理.超时.缓冲区等一系列内容. 注:本文所述内容基于 Redis2.6 及以上版本. 连接的建立 Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型. 然后为这个socket 设置 TCP_NODELAY 属性,禁

Redis 客户端连接

Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作: 首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型. 然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法 然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送 最大连接数 在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的

JAVA SOCKET网络编程,服务端接收多个客户端连接的实现

这是基于前面一篇文章的一个简单扩展,当然这不是最好的实现 服务端如果要想接收多个客户端连接,必须死循环去接收新的客户端的连接请求,一个完整的客户端服务端socket连接通过一个线程来维护 package com.tree.demo.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.n