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

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

  1. Redis02 Redis客户端之Java、连接远程Redis服务器失败

    1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repos ...

  2. Elasticsearch Java Client连接池

    按照Elasticsearch API,在Java端使用是ES服务需要创建Java Client,但是每一次连接都实例化一个client,对系统的消耗很大,即使在使用完毕之后将client close ...

  3. 047 大数据下的java client连接JDBC

    1.前提 启动hiveserver2服务 url,username,password. 2.官网 3.程序 4.结果 emp的第一列与第二列 5.源程序 package com.cj.it.hiveU ...

  4. 大数据下的java client连接JDBC

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

  5. JAVA HDFS API Client 连接HA

    如果Hadoop开启HA,那么用Java Client连接Hive的时候,需要指定一些额外的参数 package cn.itacst.hadoop.hdfs; import java.io.FileI ...

  6. 3、redis之java client环境搭建

    JAVA Client环境搭建 POM: <dependency> <groupId>redis.clients</groupId> <artifactId& ...

  7. Redis java client ==> Jedis

    https://github.com/xetorthio/jedis Jedis is a blazingly small and sane Redis java client. Jedis was ...

  8. 虚拟机centos 安装 redis 环境 linux 使用 java 远程连接 redis

    redis官网地址:http://www.redis.io/ 最新版本:2.8.3 在Linux下安装Redis非常简单,具体步骤如下(官网有说明): 1.下载源码,解压缩后编译源码. $ wget ...

  9. Java链接Redis时出现 “ERR Client sent AUTH, but no password is set” 异常的原因及解决办法

    Java链接Redis时出现 "ERR Client sent AUTH, but no password is set" 异常的原因及解决办法 [错误提示] redis.clie ...

随机推荐

  1. firebug使用

    查看网页的header是优化web应用的关键一环,从header中,可以检查到非常 多的信息:网页在squid中的缓存时间(age).客户端缓存时间(expires).是否有最后修改时间(last-m ...

  2. freemarker自己定义标签(二)

    freemarker自己定义标签 1.自己定义标签 通过自己定义标签,写一个反复指定字符串 2.实现源代码 <html> <head> <meta http-equiv= ...

  3. spring Annotation 组分注塑

    spring 注意分类 启动spring自己主动扫描功能 <context:component-scan/> 1.@Repository: 它用于将数据訪问层 (DAO 层 ) 的类标识为 ...

  4. Android拖动和缩放图片

    Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...

  5. mysql增量ID 启动值更改方法

    在mysql很多朋友感到场AUTO_INCREMENT增量型ID值它不能被改变,其实这种认识是错误的,这里mysql增量ID开始值更改和设置. 设置自动递增字段的通常的方法: 格时加入: create ...

  6. tomcat实现多端口、多域名访问

    tomcat实现多端口访问 tomcat可以实现:多个端口访问同一个web应用.不同的应用通过不同的域名进行访问. 本文介绍的都是只启动一个tomcat服务的情况下,当然,实现这些功能也可以通过启动多 ...

  7. 二、第一个ExtJS程序:helloExtJS

    开发前的准备 下载并解压ExtJS包后,能够得到下图的文件文件夹结构: 在实际开发过程中并不须要全部的文件和文件夹,所需的包括例如以下文件夹就可以: 若使用eclipse进行开发,仅仅需将上述文件拷贝 ...

  8. oracle varchar2 和varchar 区别

    今天,往ORACLE一个表的VACHAR2(20)字段中插入七个汉字,提示错误:插入的值太大. 改成插入六个汉字,又可以. 一直以来,都以为一个汉字占两个字节.觉得非常奇怪. 用length().le ...

  9. asp.net操作word的表格

    近日开发中用户要求实现导出数据为Word,本来想使用html保存为word的实现,但因用户要求样式很高,使用html不好控制,并且导出中包括图片,使用页面导出时图片还是一个路径,不能把图片包括在wor ...

  10. MySQL的一些基本操作

    近期開始学习MySQL,主要是通过书籍,和看燕十八老师的视频,然后通过博客记录自己的学习过程. 登入数据库 zhiniaobu@telunsu-K55VD:~$ mysql -uroot -p Ent ...