redis高性能,速度快,效率高的特点,用来做缓存服务器是很不错的选择。(和memcache相似)
redis在客户端的操作步骤:

1.redis单机版操作

1.1通过Jedis对象操作

(1)将安装redis服务的服务器的ip地址和redis的端口号作为构造参数传递给Jedis,用来创建一个Jedis对象

  Jedis jedis  = new Jedis(ip,port);

(2)通过第一步创建的jedis对象,操作redis的5大数据类型(hash类型,string类型,list类型,set类型,zset类型,有序)

  jedis.set(string key,string value);

  jedis.get(string key);

(3)操作完成后关闭jedis连接

  jedis.close();

这种方法需要每次创建连接,关闭连接,比较浪费资源。因此使用下面的jedisPool连接池操作单机版redis

直接上代码:

     // 创建jedis对象
Jedis jedis = new Jedis("ip", 6379);
// 操作string数据类型
jedis.set("username", "helloworld");
// 根据key取出对应的value值
String value = jedis.get("username");
// 值输出
System.out.println(value);
// 关闭连接
jedis.close();

1.2通过jedisPool操作jedis

(1)创建JedisPool连接池

  JedisPool pool = new JedisPool(ip,port);

(2)通过连接池获得jedis对象

  Jedis jedis = pool.getResource();

(3)获得jedis对象后,可以直接对redis数据类型进行操作

(4)操作完成后将jedis对象归还连接池,资源回收

(5)连接池不用的时候关闭

    // 创建连接池
JedisPool pool = new JedisPool("ip地址", 6379);
// 获得连接对象
Jedis jedis = pool.getResource();
// 操作hash类型
Map<String, String> hash = new HashMap<>();
hash.put("name", "tom");
hash.put("age", "23");
hash.put("address", "长江路");
jedis.hmset("student", hash);
Map<String, String> all = jedis.hgetAll("student");
Set<Entry<String, String>> entrySet = all.entrySet();
for (Entry<String, String> entry : entrySet) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + ":" + value);
}// 关闭连接,连接池回收资源
jedis.close();
// 关闭连接池
pool.close();

2.操作集群redis-cluster

(1)创建集合列表,用来存放集群中的每一个redis实例

Set<HostAndPort> nodes = new Hash<HostAndPort>();

nodes.add(new HostAndPort(ip.port));

..以此类推,添加每一个redis实例

(2)第一步获得集合列表之后,创建redis集群实例对象

JedisCluster jedisCluster = new JedisCluster(nodes);//需要将redis的节点列表作为作为构造参数传递,创建集群对象

(3)集群中的每一个redis对象是通过数据槽进行区分的(redis-3.0.0中总共有0--16384个槽位),因此获得集群对象之后,可以对集群进行操作,每一个redis被访问的几率是相00的。

jedisCluster.set(String key,String value);

String value = jedisCluster.get(key);

(4)在系统关闭之前,将jedisCluster对象关闭。

jedisCluster.close();

代码:

@Test
public void testRedis_cluster() {
// 创建set集合
Set<HostAndPort> nodes = new HashSet<>();
// 将每一个节点的ip地址和端口号添加到集合中
nodes.add(new HostAndPort("192.168.xx.xxx", port));
nodes.add(new HostAndPort("192.168.xx.xxx", port));
nodes.add(new HostAndPort("192.168.xx.xxx", port));
nodes.add(new HostAndPort("192.168.xx.xxx", port));
nodes.add(new HostAndPort("192.168.xx.xxx", port));
nodes.add(new HostAndPort("192.168.xx.xxx", port));
// 创建jedisCluster对象,需要将创建的redis集合列表作为参数传递
JedisCluster jedisCluster = new JedisCluster(nodes);
// 通过集群对象操作redis
jedisCluster.set("address", "北京市长安街");
String value = jedisCluster.get("address");
// 打印结果
System.out.println(value);
// 系统关闭前,关闭jedisCluster对象
jedisCluster.close();
}

redis在java客户端的操作的更多相关文章

  1. 【转载】Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍

    转载地址:http://blog.csdn.net/truong/article/details/46711045 关键字:Redis的Java客户端Jedis的八种调用方式(事务.管道.分布式…)介 ...

  2. Redis(九):Redis的Java客户端Jedis

    Redis的Java客户端Jedis导航目录: 安装JDK 安装Eclipse Jedis所需要的Jar包 Jedis常用操作 JedisPool 安装JDK tar -zxvf jdk-7u67-l ...

  3. 9.Redis的Java客户端Jedis

    Redis的Java客户端Jedis Jedis所需jar包   commons-pool-1.6.jar jedis-2.1.0.jar 1.Jedis常用操作(jedis中的api 和 我们在 l ...

  4. Redis解读(2):Redis的Java客户端

    Redis的Java客户端 Redis不仅使用命令客户端来操作,而且可以使用程序客户端操作,其实配置和实现起来也非常容易. 现在基本上主流的语言都有客户端支持,比如Java.C.C#.C++.php. ...

  5. Tedis:淘宝的Redis的Java客户端开发包

    Tedis:淘宝的Redis的Java客户端开发包   http://www.open-open.com/lib/view/open1389880631976.html   Tedis Tedis是另 ...

  6. 使用Redis的Java客户端Jedis

    转载自:http://aofengblog.blog.163.com/blog/static/631702120147298317919/ 前一篇文章<Redis命令指南>讲解了通过命令行 ...

  7. [转载] 使用Redis的Java客户端Jedis

    转载自http://aofengblog.blog.163.com/blog/static/631702120147298317919/ 在实际的项目开发中,各种语言是使用Redis的客户端库来与Re ...

  8. Redis之Java客户端Jedis

    导读 Redis不仅使用命令客户端来操作,而且可以使用程序客户端操作. 现在基本上主流的语言都有客户端支持,比如Java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Java ...

  9. Zookeeper学习笔记(三)——java客户端代码操作

    Zookeeper客户端java代码操作 上篇博客记录了shell命令操作zookeeper集群的方式,这次尝试采用java代码来操作.通过查阅API,发现并不困难. 1. 首先获得客户端与服务器的连 ...

随机推荐

  1. SpringMVC(一):搭建一个SpringMVC helloword项目

    操作步骤: 1)下载spring framework开发包,给eclipse安装spring开发插件,如何安装开发插件&下载开发包请参考我的博文:<Spring(一):eclipse上安 ...

  2. Java-NIO(七):阻塞IO与非阻塞IO

    阻塞IO 传统的 IO 流都是阻塞式的. 也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务. 因此,在完成网络通信 ...

  3. javascript 作用域链与执行环境

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 作用域.作用域链.执行环境.执行环境栈以及this的概念在javascript中非常重要,本人经常弄混淆, ...

  4. linux系统命令学习系列8-文件相关操作touch,rm,mv,cat,head,tail命令

    上节内容: 系统和目录管理 Pwd命令 .和..目录 相对路径和绝对路径 作业:进入opt路径,分别使用相对路径方法和绝对路径方法进入到其实任意一个子目录 cd /opt 相对路径 cd rh 绝对路 ...

  5. 使Asp.net Core同时支持输出Json/Xml

    我们知道Asp.net Core是支持输出为Json格式的.同时也支持输出为xml格式.只要我们正确的配置.并在Request时指定正确的Accept,即可根据不同的Header来输出不同的格式. 前 ...

  6. MyBatis基础学习笔记--摘录

    1.MyBatis是什么? MyBatis源自于IBatis,是一个持久层框架,封装了jdbc操作数据库的过程,使得开发者只用关心sql语句,无需关心驱动加载.连接,创建statement,手动设置参 ...

  7. 前端之旅HTML与CSS篇之a便签中放入其他块元素会撑大高度的原因

    原因:a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从 ...

  8. [LeetCode] Optimal Division 最优分隔

    Given a list of positive integers, the adjacent integers will perform the float division. For exampl ...

  9. 运维技巧-Nginx日志格式

    1.说一说 当你安装完nginx,输出的格式是比较乱的,这样我们就需要自己去定义一下,自己看着舒服的格式. 2.Nginx日志字段 $remote_addr 记录客户端IP,但她的值不是客户端提供的, ...

  10. NOIP2014-5-17模拟赛

    Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233 "来来来,学 ...