`
robbln
  • 浏览: 18132 次
  • 性别: Icon_minigender_1
  • 来自: 四川成都
社区版块
存档分类
最新评论

Redis关于JAVA的驱动-Jedis

 
阅读更多

Redis简介:

redis是一个性能非常优秀的内存数据库,通过key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。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驱动包

    在这个压缩包中,包含了不同平台下的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架包jedis-2.9.0.jar和commons-pool2-2.4.2.jar"提供了高效连接管理和全面的Redis操作功能,是Java开发者与Redis服务器进行通信的强大工具。在实际项目中,结合这两个组件,可以构建出高性能、...

    jedis-jedis-1.5.0-RC1.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于...`jedis-jedis-1.5.0-RC1.zip`是其一个早期版本,虽然标签为空,但通过解压和探索,可以了解到Jedis的设计理念和实现方式,为基于Redis的应用开发打下坚实基础。

    jedis-jedis-3.3.0.tar.gz

    "jedis-jedis-3.3.0.tar.gz"是一个压缩包文件,其中包含了Jedis库的3.3.0版本。这个版本可能包含源代码、编译后的类库、文档以及示例代码等资源,方便开发者在项目中集成和使用Jedis。 1. **Jedis简介**: Jedis是...

    (window)Redis安装包,Redis桌面Manager,Jedis驱动包

    最后,“jedis-2.9.0.jar”是Jedis,一个用Java编写的Redis客户端库。Jedis提供了丰富的API,使得Java开发者能方便地与Redis服务器交互。通过Jedis,你可以执行各种Redis命令,如设置和获取键值、操作列表、集合、...

    jedis-jedis-2.8.2.tar.gz

    在这个压缩包"jedis-jedis-2.8.2.tar.gz"中,包含了Jedis库的源代码、文档和其他相关资源。 首先,让我们深入理解Redis。Redis是一个开源的、基于键值对的数据存储系统,通常用作数据库、缓存和消息中间件。它以其...

    redis的java代码驱动包

    jedis-2.0.0.jar

    jedis-jedis-3.1.0-rc.zip

    标题"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-jedis-3.0.0-m1 (1).zip` 是Jedis的一个版本,这里的`3.0.0-m1`表示的是版本号,`m1`代表 Milestone 1,即这个版本是一个里程碑版本,可能还不是最终的稳定版,但包含了新功能和改进。 Jedis的主要功能包括...

    jedis-jedis-2.8.2.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。版本2.8.2是Jedis的一个稳定版本,它提供了丰富的功能和优化,以确保在处理Redis数据结构和操作时具有高效性和可靠...

    redis 最新驱动包

    Jedis是Java社区中最常用的Redis客户端,提供了丰富的API来操作Redis服务器。在本压缩包中,包含的是Jedis的2.9.0版本,这是一个稳定且功能完善的版本,支持多种Redis命令和数据类型的操作。 Jedis 2.9.0主要知识点...

    jedis-jedis-3.6.1.tar.gz

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。Jedis 3.6.1是这个库的一个稳定版本,提供了对Redis最新特性的支持和性能优化。 Redis是一种开源的、高性能的键值...

    jedis-jedis-2.3.0.zip

    Jedis是Java开发的一款高效、轻量级的Redis客户端库,广泛用于与Redis服务器进行通信。Jedis 2.3.0是这个库的一个稳定版本,提供了丰富的Redis命令支持,适用于多种数据操作场景。在本篇文章中,我们将深入探讨Jedis...

    jedis-jedis-2.9.3.zip

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。版本2.9.3是其稳定的一个发行版,包含了丰富的功能和优化。以下是关于Jedis及其2.9.3版本的一些核心知识点: 1. **...

    jedis-jedis-2.8.1.tar.gz

    以上就是关于Jedis 2.8.1版本的一些关键知识点,它为Java开发者提供了强大的Redis操作工具,有助于高效地利用Redis的特性。在实际开发中,根据具体需求选择合适的方法和策略,可以充分利用Jedis的功能来提升应用的...

    jedis-jedis-2.10.2.tar.gz

    Jedis是Java开发的一款高效的Redis客户端,用于与Redis服务器进行通信。版本2.10.2是该客户端的一个稳定版本,提供了对Redis多种特性的全面支持。本文将深入探讨Jedis的基本概念、主要功能以及2.10.2版本中的关键...

    jedis-jedis-3.5.1.tar.gz

    总的来说,Jedis 3.5.1的发布意味着对Redis操作的更高效、更稳定的支持,为Java开发者提供了更强大、更完善的工具来构建基于Redis的数据驱动应用。通过深入了解这个版本的特性,开发者可以充分利用Jedis的潜力,提升...

    jedis-jedis-1.4.0.zip

    Jedis是Java开发的一款高效、轻量级的Redis客户端库,专为处理Redis数据库而设计。Redis是一款开源的、高性能的键值存储系统,常用于数据缓存、消息队列以及分布式计算等领域。Jedis 1.4.0是这个库的一个版本,它...

    jedis-jedis-2.3.0.tar.gz

    Jedis是Java开发的一款高效的Redis客户端库,广泛用于与Redis服务器进行交互,支持各种Redis命令。版本2.3.0是其历史版本之一,提供了稳定且功能丰富的接口,便于Java开发者在应用程序中集成Redis功能。 在Jedis ...

    oracle+mysql+redis+mqttv3-1.0.2.jar

    Java中的Redis驱动通常使用Jedis或Lettuce库,它们提供了丰富的API来执行命令,如设置和获取键值、操作列表、集合和哈希表等。由于Redis支持网络通信,Java应用可以通过TCP/IP连接到Redis服务器。 MQTT(Message ...

Global site tag (gtag.js) - Google Analytics