jedis:使用Java调用Redis
一、安装jedis
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。安装redis的步骤在这里就不做详细介绍了。可以参考我的博文Linux下安装redis.
下载jedis驱动包,我使用maven方式导入,简单快速,大家可以从Maven Repository中下载,选择下载量比较高的版本。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
这样,jedis驱动包就已经导入完毕,下面开始使用java代码连接redis。
二、连接Redis
首先,我们先获取到启动redis服务器的IP和端口号,端口一般默认使用6379。使用如下代码即可测试redis是否能成功连接。
@Test
public void connTest() {
Jedis jedis = new Jedis("192.168.0.106", 6379);
System.out.println("连接成功!");
System.out.println("服务正在运行: " + jedis.ping());
jedis.set("name", "jie_ming514");
String name = jedis.get("name");
System.out.println(name);
}
控制台信息:
然后我们去redis上看看name这个key是否等于“jie_ming514”
OK,信息完全正确,说明连接没有问题。
三、存储不同的Redis数据结构类型数据
3.1.字符串类型
@Test
public void redisStringTest() {
Jedis jedis = new Jedis("192.168.0.106", 6379);
System.out.println("连接成功!");
jedis.set("name", "jie_ming514");
String name = jedis.get("name");
System.out.println(name);
System.out.println("redis 存储的字符串为: "+ jedis.get("name"));
}
输出结果:
3.2.list类型
@Test
public void redisListTest() {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("192.168.0.106", 6379);
System.out.println("连接成功");
//存储数据到列表中
jedis.lpush("site-list", "Runoob");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao");
// 获取存储的数据并输出
List<String> list = jedis.lrange("site-list", 0 ,2);
for(int i=0; i<list.size(); i++) {
System.out.println("列表项为: "+list.get(i));
}
}
输出结果:
四、使用连接池方式连接Redis
和关系型数据库一样,创建连接Redis数据库对象的资源是非常有限的,而且每次创建和销毁都是非常耗时的,所以推荐使用Redis连接池的方式连接Redis。
@Test
public void ConnByPoolTest() {
JedisPoolConfig config = new JedisPoolConfig();
//设置最大的连接数
config.setMaxTotal(30);
//设置最大空闲数
config.setMaxIdle(10);
JedisPool pool = new JedisPool(config, "192.168.0.102", 6379);
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set("city", "shanghai");
String name = jedis.get("city");
System.out.println(name);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(jedis != null) {
jedis.close();
}
if(pool != null) {
pool.close();
}
}
}