redis – Java操作 用redisson 和 jedis 操作redis数据库

  • Post author:
  • Post category:java


上一篇搭建好的服务器一直开着要。

Java连接Redis的使用示例

     Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。

     Redisserver目前最稳定的版本是2.8.9,可以到官网http://redis.io/download下载。根据机器的类型及位数下载对应的版本安装即可,reids支持Linux和windows操作系统。

     Redisclient支持多种语言,包括:c、C++、C#、PHP、java、Python、Go等语言,根据自己的开发语言,选择合适的redis client版本类型即可。我是使用java语言开发的,针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。

     Redisson的源码工程所在位置:https://github.com/mrniko/redisson。这里有使用示例及一些介绍,这里不再详细的介绍。
  1. 新建maven工程
  2. 在pom.xml文件的dependencies节点下增加如下内容:
<dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version>1.7.7</version>
     </dependency>
  1. 保存pom.xml后,等eclispe工程构建完成后即可进行开发了
**1- redisson操作redis**
package com.baobaotao.utils;

import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;

import org.redisson.Config;
import org.redisson.Redisson;

public class RedisExample {

    public static void main(String[] args) {
        Config config=new Config();
        config.setConnectionPoolSize(10);
        config.addAddress("127.0.0.1:6379");
        Redisson redisson=Redisson.create(config);
        System.out.println("连接redis");
        ConcurrentMap<String, Object> map=redisson.getMap("FirstMap");
        map.put("czy", "男");
        map.put("yinan", "男");
        map.put("pengfei", "女");

        ConcurrentMap resultmap=redisson.getMap("FirstMap");
        System.out.println("resultmap="+resultmap.keySet());

        Set myset=redisson.getSet("MySet");
        myset.add("czy");
        myset.add("pengfei");

        Set resultSet=redisson.getSet("MySet");
        System.out.println("resultset="+resultSet.size());

         //3.测试Queue队列  
        Queue myQueue = redisson.getQueue("FirstQueue");  
        myQueue.add("wuguowei");  
        myQueue.add("lili");  
        myQueue.add("zhangsan");  
        System.out.println(myQueue.peek());
        System.out.println(myQueue.poll());

        Queue resultQueue=redisson.getQueue("FirstQueue");  
        System.out.println("resultQueue==="+resultQueue); 
        // 关闭连接  
        redisson.shutdown();  
    }
}

2-jedis 操作redis

<dependencies>  
  <dependency>  
    <groupId>redis.clients</groupId>  
    <artifactId>jedis</artifactId>  
    <version>2.1.0</version>  
  </dependency>  

  <dependency>  
    <groupId>junit</groupId>  
    <artifactId>junit</artifactId>  
    <version>4.8.2</version>  
    <scope>test</scope>  
  </dependency>  
</dependencies>  
package com.baobaotao.test;

import java.util.ResourceBundle;

import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolTest {

    private static JedisPool jedisPool;  

    /** 
     * initPoolConfig 
     * <br>------------------------------<br> 
     * @return 
     */  
    private static JedisPoolConfig initPoolConfig() {  
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();  
        // 控制一个pool最多有多少个状态为idle的jedis实例  
        jedisPoolConfig.setMaxActive(1000);   
        // 最大能够保持空闲状态的对象数  
        jedisPoolConfig.setMaxIdle(300);  
        // 超时时间  
        jedisPoolConfig.setMaxWait(1000);  
        // 在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的;  
        jedisPoolConfig.setTestOnBorrow(true);   
        // 在还会给pool时,是否提前进行validate操作  
        jedisPoolConfig.setTestOnReturn(true);  
        return jedisPoolConfig;  
    }    
    /** 
     * 初始化jedis连接池 
     * <br>------------------------------<br> 
     */  
    @BeforeClass  
    public static void before() {  
        JedisPoolConfig jedisPoolConfig = initPoolConfig();    
        // 属性文件读取参数信息  
        ResourceBundle bundle = ResourceBundle.getBundle("redis");  
        String host = bundle.getString("redis.host");  
        int port = Integer.valueOf(bundle.getString("redis.port"));  
        // 构造连接池  
        jedisPool=new JedisPool(jedisPoolConfig, host, port);
    }  

    @Test  
    public void testSet() {  
        Jedis jedis = null;   
        // 从池中获取一个jedis实例  
        try {  
            jedis = jedisPool.getResource();  
            jedis.set("blog_pool", "java2000_wl");  
        } catch (Exception e) {  
            // 销毁对象  
            jedisPool.returnBrokenResource(jedis);  
            Assert.fail(e.getMessage());  
        } finally {  
            // 还会到连接池  
            jedisPool.returnResource(jedis);  
        }  
    }         
    @Test  
    public void testGet() {  
        Jedis jedis = null;   
        try {  
            // 从池中获取一个jedis实例  
            jedis = jedisPool.getResource();  
            System.out.println(jedis.get("blog_pool"));  
        } catch (Exception e) {  
            // 销毁对象  
            jedisPool.returnBrokenResource(jedis);  
            Assert.fail(e.getMessage());  
        } finally {  
            // 还会到连接池  
            jedisPool.returnResource(jedis);  
        }  
    }
}

上面是两种使用方法,接下来会讲解在spring中使用redis。


java.util.ResourceBundle使用详解

一、认识国际化资源文件

这个类提供软件国际化的捷径。通过此类,可以使您所编写的程序可以:

轻松地本地化或翻译成不同的语言

一次处理多个语言环境

以后可以轻松地进行修改,支持更多的语言环境

说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。

使用这个类,要注意的一点是,这个properties文件的名字是有规范的:一般的命名规范是: 自定义名

语言代码

国别代码.properties,

如果是默认的,直接写为:自定义名.properties

比如:

myres_en_US.properties

myres_zh_CN.properties

myres.properties

当在中文操作系统下,如果myres_zh_CN.properties、myres.properties两个文件都存在,则优先会使用myres_zh_CN.properties,当myres_zh_CN.properties不存在时候,会使用默认的myres.properties。

没有提供语言和地区的资源文件是系统默认的资源文件。

资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii.



版权声明:本文为chenaini119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。