上一篇搭建好的服务器一直开着要。
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。这里有使用示例及一些介绍,这里不再详细的介绍。
- 新建maven工程
- 在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>
- 保存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.