Java连接redis,需要导入一个依赖
<!--redis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency>
为了方便测试,我们引入junit
<!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency>
这里我们给出一个例子,jedis对象就像我们的客户端
RedisDemo
package com.hzy.redis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class RedisDemo {
public static void main(String[] args) {
// 连接Redis服务器
Jedis jedis = new Jedis("192.168.40.128",6379);
// 权限认证,也就是我们redis-cli设置的密码
jedis.auth("root");
// 测试是否连接成功
// CentOS下查看防火墙运行访问的端口号:firewall-cmd --list-ports
// 开启6379端口号:firewall-cmd --zone=public --add-port=6379/tcp --permanent
// 重启防火墙:firewall-cmd --reload
System.out.println(jedis.ping());
}
/*
* 测试String,redis中有哪些命令,jedis中就有哪些方法
* */
@Test
public void test1() {
Jedis jedis = new Jedis("192.168.40.128",6379);
jedis.auth("root");
jedis.set("strName","hzy");
String strName = jedis.get("strName");
System.out.println(strName);
jedis.close();
}
/*
* redis是为了减轻数据库的访问压力
* 如果某key存在,就在redis中查询,否则就去数据库中查询
* 并将查询出的数据存入到redis
* */
@Test
public void test2() {
Jedis jedis = new Jedis("192.168.40.128",6379);
jedis.auth("root");
String key = "appName"; // key的名称
if (jedis.exists(key)) {
String s = jedis.get(key);
System.out.println("redis中查询到的");
} else {
String s = "应用名";
jedis.set(key,s);
System.out.println("数据库中查询");
}
jedis.close();
}
}
而且我们还可以通过连接池的方式进行操作,这里我们通过一个工具类进行获取jedis
RedisPoolUtil
package com.hzy.redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class RedisPoolUtil {
private static JedisPool jedisPool;
static {
// 连接池配置信息,不写有默认值
// JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// jedisPoolConfig.setMaxTotal(5); // 设置最大连接数
// jedisPoolConfig.setMaxIdle(1); // 设置最大空闲数
// 连接池
// JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.40.128",6379);
// 连接池
jedisPool = new JedisPool("192.168.40.128",6379);
}
public static Jedis getJedis() {
Jedis jedis = jedisPool.getResource();
jedis.auth("root");
return jedis;
}
public static void close(Jedis jedis) {
jedis.close();
}
}
然后一个测试类RedisDemo2
package com.hzy.redis;
import redis.clients.jedis.Jedis;
public class RedisDemo2 {
public static void main(String[] args) {
Jedis jedis = RedisPoolUtil.getJedis();
String key = "strKey";
if (jedis.exists(key)) {
String s = jedis.get(key);
System.out.println("redis中查询到的");
} else {
String s = "应用名";
jedis.set(key,s);
System.out.println("数据库中查询");
}
RedisPoolUtil.close(jedis);
}
}
第一次查询的时候,会输出数据库中查询,后续查询都是在redis中查询到的
下面演示Hash类型RedisDemo3
package com.hzy.redis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.Map;
/*
* 完成Hash类型读取
* 用hash存储一个对象
* 判断redis中是否存在该key,如果存在,返回该值
* 如果不存在,查询数据库,并把该值存入redis
* */
public class RedisDemo3 {
@Test
public void test1() {
Jedis jedis = RedisPoolUtil.getJedis();
String key = "myUser";
if (jedis.exists(key)) {
Map<String, String> map = jedis.hgetAll(key);
System.out.println("redis中查询:" + map);
} else {
// 查询数据库,并返回结构
System.out.println("数据库中查询");
jedis.hset(key,"id","1");
jedis.hset(key,"username","hzy");
jedis.hset(key,"password","123456");
}
RedisPoolUtil.close(jedis);
}
}