述
前面的文章中介绍了一些reids的基本命令,数据结构,持久化方式,还有主从集群等等,我们操作redis的数据的时候一直是在redis-cli里面的,本文就来看一下如何用java去操作redis,java操作reids的方式有很多种,这里首先先介绍的是Jedis
准备工作
远程连接reids的前提是,系统关闭防火墙,reids关闭保护模式,还有注释掉redis的ip地址绑定,这些配置基本在前文中已经介绍了,这里再来看一下
关闭防火墙
这里以centos7为例,关闭防火墙命令是:1
systemctl stop firewalld.service
再补一刀直接禁掉1
systemctl disable firewalld.service
关闭保护模式
就是redis配置中的protected
设置为no,之前一直都是设置的no,如下:1
protected-mode no
注释掉redis的ip地址绑定
也是在redis.conf中1
# bind:127.0.0.1
java客户端连接
首先,新建一个工程,然后引入jedis的依赖,如下:
1 | <dependency> |
然后可以写一个方法去测试一下,如下:1
2
3
4
5
6public static void main(String[] args) {
Jedis jedis = new Jedis("172.16.12.3", 6379);
// 如果设置了密码的话,就需要认证
jedis.auth("123456");
log.info(jedis.ping());
}
运行,控制台输出:1
16:48:40.227 [main] INFO com.redis.example.test.JedisTest - PONG
连接完成之后就可以对redis中的数据进行操作了,jedis方法名称基本是和命令是一样的,如下:
需要用到什么方法,直接通过方法名找就好了,这里就不在多说了
连接池
上面的例子中,频繁的创建和销毁连接会影响性能,我们可以采用连接池来部分的解决这个问题,代码如下:1
2
3
4
5
6
7
8
9
10public static void main(String[] args) {
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxIdle(20);
config.setMaxTotal(100);
// ip 端口 超时时间 密码
JedisPool jedisPool = new JedisPool(config, "172.16.12.3", 6379, 5000, "123456");
Jedis jedis = jedisPool.getResource();
log.info(jedis.ping());
}
这样就不会频繁的创建销毁连接了,在JavaSE环境中可以把连接池配置成一个单例模式,如果用了Spring容器的话,可以把连接池交给Spring容器管理
集群连接
上面连接的都是单节点的redis,如果我们想连接一个reids集群呢,代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public static void main(String[] args) {
Set<HostAndPort> clusterNodes = new HashSet<>();
clusterNodes.add(new HostAndPort("172.16.12.3", 7000));
clusterNodes.add(new HostAndPort("172.16.12.3", 7001));
clusterNodes.add(new HostAndPort("172.16.12.3", 7002));
clusterNodes.add(new HostAndPort("172.16.12.3", 7003));
clusterNodes.add(new HostAndPort("172.16.12.3", 7004));
clusterNodes.add(new HostAndPort("172.16.12.3", 7005));
JedisCluster jedisCluster = new JedisCluster(clusterNodes);
jedisCluster.set("testKey", "java");
log.info(jedisCluster.get("testKey"));
}
运行,控制台输出1
17:13:31.633 [main] INFO com.redis.example.test.JedisTest - java
这里方法名也和redis的命令基本一致,这里就不多说了
jedis就先介绍到这里