在 Java中操作使用Redis 的方案很多,比如:Jedis,Spring Data Redis,lettuce等。
下载 Jedis的jar包:https://mvnrepository.com/artifact/redis.clients/jedis
Jedis 是 Redis官方推荐的Java连接开发工具。要在Java开发中使用好Redis,必须对Jedis熟练掌握才能写出优雅的代码。
Jedis 的功能函数和 Redis基本都是一一对应的。
1、确保 Linux中的防火墙关闭
systemctl status firewalld.service #查看firewalld状态
systemctl stop firewalld #关闭
2、Redis的配置文件中默认的绑定本地ip的设置 bind 127.0.0.1后面添加服务器ip地址。顺便设置登录密码
1、创建 java项目,添加 Jedis的jar包
Java链接Redis OK.
2、使用Jedis连接池
连接池需要用到 slf4j的日志jar包,引入这几个架包
测试:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Main {
public static void main(String[] args) {
// 创建连接池配置对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 设置最大闲置个数
jedisPoolConfig.setMaxIdle(30);
// 设置最小闲置个数
jedisPoolConfig.setMinIdle(10);
// 设置最大的连接数
jedisPoolConfig.setMaxTotal(50);
// 创建连接池对象
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "192.168.198.5", 6379);
// 获取连接资源
Jedis jedis = jedisPool.getResource();
//设置密码
jedis.auth("123456");
System.out.println(jedis.ping());
// 测试数据
System.out.println("清空数据库数据:" + jedis.flushDB());
System.out.println("set设置值:" + jedis.set("k_set1", "vvvset333"));
System.out.println(("get取值:" + jedis.get("k_set1")));
System.out.println("获取ttl:" + jedis.ttl("k_set1"));
System.out.println("ttl设置:" + jedis.expire("k_set1",30));
System.out.println("获取ttl:" + jedis.ttl("k_set1"));
}
}
===============
PONG
清空数据库数据:OK
set设置值:OK
get取值:vvvset333
获取ttl:-1
ttl设置:1
获取ttl:30
二、Spring 整合 Redis
创建一个 maven工程,引入相关依赖包
junit
junit
4.12
org.springframework
spring-context
5.1.10.RELEASE
org.springframework
spring-orm
5.1.10.RELEASE
redis.clients
jedis
3.2.0
org.slf4j
slf4j-nop
1.7.25
test
1、连接 redis 单机版
1)redis.properties配置文件
#ip地址
redis.host=192.168.198.5
#端口号
redis.port=6379
#如果有密码
redis.password=123456
#客户端超时时间单位是毫秒 默认是2000
redis.timeout=3000
#数据库,默认的是0
redis.database=0
#最大空闲链接
redis.maxIdle=300
#最小的空闲链接
redis.minIdle=10
#连接池的最大数据库连接数
redis.maxTotal=400
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
redis.maxWaitMillis=1000
#在空闲时检查有效性, 默认false
redis.testOnBorrow=false
#连接耗尽是否阻塞,false代表抛异常,true代表阻塞直到超时,默认为true
redis.blockWhenExhausted=true
2)spring.xml配置文件
3)dao层封装下
public interface JedisPoolDao {
String set(String key, String value);
String get(String key);
Boolean exists(String key);
}
JedisPool
public class JedisPoolDaoImpl1 implements JedisPoolDao {
private JedisPool jedisPool;
public JedisPool getJedisPool() {
return jedisPool;
}
public void setJedisPool(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
@Override
public String set(String key, String value) {
Jedis jedis = jedisPool.getResource();
String result = jedis.set(key, value);
jedis.close();
return result;
}
@Override
public String get(String key) {
Jedis jedis = jedisPool.getResource();
String result = jedis.get(key);
jedis.close();
return result;
}
@Override
public Boolean exists(String key) {
Jedis jedis = jedisPool.getResource();
Boolean result = jedis.exists(key);
jedis.close();
return result;
}
}
4)测试
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
JedisPoolDaoImpl1 jedisPoolDaoImpl1 = context.getBean("jedisPoolDaoImpl1", JedisPoolDaoImpl1.class);
System.out.println("set设置值:" + jedisPoolDaoImpl1.set("k_set2", "23123asda"));
System.out.println(("get取值:" + jedisPoolDaoImpl1.get("k_set2")));
}
}
1)spring.xml配置文件修改
2)JedisClusterClient类:JedisCluster
public class JedisClusterClient implements JedisPoolDao {
private JedisCluster jedisCluster;
public JedisCluster getJedisCluster() {
return jedisCluster;
}
public void setJedisCluster(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}
@Override
public String set(String key, String value) {
return jedisCluster.set(key, value);
}
@Override
public String get(String key) {
return jedisCluster.get(key);
}
@Override
public Boolean exists(String key) {
return jedisCluster.exists(key);
}
}
3)main测试:
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
// 测试集群版
JedisClusterClient jedisClusterClient = context.getBean("jedisClusterClient", JedisClusterClient.class);
System.out.println("set设置值:" + jedisClusterClient.set("k_cluster", "jedisClusterClient"));
System.out.println(("get取值:" + jedisClusterClient.get("k_cluster")));
}
—— Stay Hungry. Stay Foolish. 求知若饥,虚心若愚。