Redis简介:
在多线程下使用Jedis
在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解决那些问题并且会实现高效的性能.
初始化JedisPool
JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
可以以静态的方式处理以上代码,它是线程安全的.
static { pool = new JedisPool(new Config(), "host", 6379); }
JedisPoolConfig包含了许多有用的redis指定的连接池的默认参数。比如,如果一个连接300秒内没有任何的返回Jedis将关闭这个连接.
可以这样使用:
Jedis jedis = pool.getResource(); try { //随便做一些对于redis的操作 jedis.set("foo", "bar"); String foobar = jedis.get("foo"); jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike"); Set<String> sose = jedis.zrange("sose", 0, -1); } finally { //这里很重要,一旦拿到的jedis实例使用完毕,必须要返还给池中 pool.returnResource(jedis); } //程序关闭时,需要调用关闭方法 pool.destroy();
设置主/从分布
启用同步复制
Redis主要为了主/从分布而构建。这意味着"write"请求必须要指向"master", "master"会同步复制改变的内容到"slave". "read"请求可以(不是必须的)被指向"slave",缓解"master"的读写压力.
可以按以下的步骤使用"master". 为了启用同步复制,有两个方式去告诉"slave"将"slaveOf"到一个给定的"master": 1.在redis server的config文件(redis.conf)指明 2.在拿到的jedis实例中调用"slaveOf"方法并指定IP和端口
jedis.slaveOf("192.168.1.35", 6379);
注意:"slave"也是一个redis server,也可以接收"write"请求并不会报错,但是改变不会被同步复制,所以如果弄反了jedis的实例则一些操作会被覆盖.
禁用同步复制/master失败后,提升slave
如果"master"down掉,可以提升"slave"成为新的"master".首先试着禁用同步复制离线的"master",如果有几个"slave",启用同步复制其余的"slave"到新的"master".
slave1jedis.slaveofNoOne();
slave2jedis.slaveOf("192.168.1.36", 6379);
因为自己在使用Hadoop做join的时候,小表也很大,导致内存爆满,所以打算用Redis来看看。把数据加入Redis的代码如下:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; public class RedisInutAccount { private static String parseRaw(String str) { if (str==null) { return ""; } str = str.trim(); if (str.startsWith("\"")) { str = str.substring(1); } if (str.endsWith("\"")) { str = str.substring(0, str.length() - 1); } return str; } public static void main(String[] args) throws IOException { JedisPool pool = new JedisPool("192.168.2.101", 6379); Jedis jedis = pool.getResource(); jedis.flushAll(); File file = new File("sample_account.del"); FileReader is = new FileReader(file); BufferedReader br = new BufferedReader(is); String tmp = null; while ((tmp = br.readLine()) != null) { System.out.println(tmp); jedis.set(parseRaw(tmp), "1"); } br.close(); pool.returnResource(jedis); pool.destroy(); } }
相关推荐
在这个压缩包中,包含了不同平台下的Redis安装包,以及Jedis驱动,这使得在Windows和Linux环境下都能轻松地使用Redis。 首先,让我们详细了解Redis的不同版本: 1. **Redis Windows 32位与64位安装包**:Redis原本...
总结起来,"最新redis架包jedis-2.9.0.jar和commons-pool2-2.4.2.jar"提供了高效连接管理和全面的Redis操作功能,是Java开发者与Redis服务器进行通信的强大工具。在实际项目中,结合这两个组件,可以构建出高性能、...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于...`jedis-jedis-1.5.0-RC1.zip`是其一个早期版本,虽然标签为空,但通过解压和探索,可以了解到Jedis的设计理念和实现方式,为基于Redis的应用开发打下坚实基础。
Jedis是Java社区中最常用的Redis客户端,提供了丰富的API来操作Redis服务器。在本压缩包中,包含的是Jedis的2.9.0版本,这是一个稳定且功能完善的版本,支持多种Redis命令和数据类型的操作。 Jedis 2.9.0主要知识点...
"jedis-jedis-3.3.0.tar.gz"是一个压缩包文件,其中包含了Jedis库的3.3.0版本。这个版本可能包含源代码、编译后的类库、文档以及示例代码等资源,方便开发者在项目中集成和使用Jedis。 1. **Jedis简介**: Jedis是...
最后,“jedis-2.9.0.jar”是Jedis,一个用Java编写的Redis客户端库。Jedis提供了丰富的API,使得Java开发者能方便地与Redis服务器交互。通过Jedis,你可以执行各种Redis命令,如设置和获取键值、操作列表、集合、...
在这个压缩包"jedis-jedis-2.8.2.tar.gz"中,包含了Jedis库的源代码、文档和其他相关资源。 首先,让我们深入理解Redis。Redis是一个开源的、基于键值对的数据存储系统,通常用作数据库、缓存和消息中间件。它以其...
jedis-2.0.0.jar
标题"jedis-jedis-3.1.0-rc.zip"表明这是一个关于Jedis的3.1.0 release candidate版本的压缩包,通常在正式版本发布前,release candidate(RC)是最后测试阶段的版本,意味着它可能包含了所有计划的新功能和改进,...
`jedis-jedis-3.0.0-m1 (1).zip` 是Jedis的一个版本,这里的`3.0.0-m1`表示的是版本号,`m1`代表 Milestone 1,即这个版本是一个里程碑版本,可能还不是最终的稳定版,但包含了新功能和改进。 Jedis的主要功能包括...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。版本2.8.2是Jedis的一个稳定版本,它提供了丰富的功能和优化,以确保在处理Redis数据结构和操作时具有高效性和可靠...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。Jedis 3.6.1是这个库的一个稳定版本,提供了对Redis最新特性的支持和性能优化。 Redis是一种开源的、高性能的键值...
Jedis是Java开发的一款高效、轻量级的Redis客户端库,广泛用于与Redis服务器进行通信。Jedis 2.3.0是这个库的一个稳定版本,提供了丰富的Redis命令支持,适用于多种数据操作场景。在本篇文章中,我们将深入探讨Jedis...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。版本2.9.3是其稳定的一个发行版,包含了丰富的功能和优化。以下是关于Jedis及其2.9.3版本的一些核心知识点: 1. **...
以上就是关于Jedis 2.8.1版本的一些关键知识点,它为Java开发者提供了强大的Redis操作工具,有助于高效地利用Redis的特性。在实际开发中,根据具体需求选择合适的方法和策略,可以充分利用Jedis的功能来提升应用的...
Jedis是Java开发的一款高效的Redis客户端,用于与Redis服务器进行通信。版本2.10.2是该客户端的一个稳定版本,提供了对Redis多种特性的全面支持。本文将深入探讨Jedis的基本概念、主要功能以及2.10.2版本中的关键...
常见的依赖包括Nutz本身的库,以及与Redis通信的驱动,如`redis.clients:jedis`或`io.lettuce:lettuce-core`。 5. **坑点与解决方案**:集成过程中可能出现的依赖问题可能包括版本不兼容、缺少特定依赖、依赖冲突等...
总的来说,Jedis 3.5.1的发布意味着对Redis操作的更高效、更稳定的支持,为Java开发者提供了更强大、更完善的工具来构建基于Redis的数据驱动应用。通过深入了解这个版本的特性,开发者可以充分利用Jedis的潜力,提升...
Jedis是Java开发的一款高效、轻量级的Redis客户端库,专为处理Redis数据库而设计。Redis是一款开源的、高性能的键值存储系统,常用于数据缓存、消息队列以及分布式计算等领域。Jedis 1.4.0是这个库的一个版本,它...
Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。版本2.3.0是其历史版本之一,提供了稳定且功能丰富的接口,便于Java开发者在应用程序中集成Redis功能。 在Jedis ...