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. Android本地视频播放器开发--简易播放器原型

    在以前的基础上,将音视频进行合并,音频播放采用OpenSL ES,视频播放采用OpenGL ES2.0进行显示,这次的版本其中音频和视频是在同一个线程,会造成音频断断续续,后续会采用音频使用SDL,视 ...

  2. 一致性哈希算法(consistent hashing)样例+測试。

    一个简单的consistent hashing的样例,非常easy理解. 首先有一个设备类,定义了机器名和ip: public class Cache { public String name; pu ...

  3. UVA 10245 The Closest Pair Problem 最近点问题 分治算法

    题意,给出n个点的坐标,找出两点间最近的距离,如果小于10000就输出INFINITY. 纯暴力是会超时的,所以得另辟蹊径,用分治算法. 递归思路将点按坐标排序后,分成两块处理,最近的距离不是在两块中 ...

  4. 欧舒丹 L'Occitane 活力清泉保湿面霜 - 男士护肤 - 香港草莓网StrawberryNET.com

    欧舒丹 L'Occitane 活力清泉保湿面霜 - 男士护肤 - 香港草莓网StrawberryNET.com 欧舒丹 活力清泉保湿面霜 50ml/1.7oz

  5. python+ueditor+七牛云存储整合

    开发环境:python pyramid. 參考网址:http://developer.qiniu.com/docs/v6/sdk/python-sdk.html,http://my.oschina.n ...

  6. hello MemSQL 入门安装演示样例

    一,介绍 MemSQL号称世界上最快的分布式关系型数据库,兼容mysql但快30倍,能实现每秒150万次事务.原理是仅用内存并将SQL预编译为C++. 二,部署 官网下载地址:http://www.m ...

  7. POJ 1088 滑雪 记忆化优化题解

    本题有人写是DP,只是和DP还是有点区别的,应该主要是记忆化 Momoization 算法. 思路就是递归,然后在递归的过程把计算的结果记录起来,以便后面使用. 非常经典的搜索题目,这样的方法非常多题 ...

  8. 开源语法分析器--ANTLR

      序言 有的时候,我还真是怀疑过上本科时候学的那些原理课究竟是不是在浪费时间.比方学完操作系统原理之后我们并不能自己动手实现一个操作系统:学完数据库原理我们也不能弄出个像样的DBMS出来:相同,学完 ...

  9. 关于MySQL与SQLLite的Group By排序原理的差别

    当我们对一个表的记录进行group by的时候,在未明白使用sum.min.max等聚合函数的时候,group by 的排序规则,例如以下对照了MYSQL和SQLLite 大家都知道,group by ...

  10. 关于oracle的备份 导入

    ****假设要保存为bat文件.最好用汉字 导入: imp clsoftoa/clsoftoa@orcl124  --要导入的数据库的 username/password@数据库名 fromuser= ...