(一)环境依赖
java操作redis需要借助于第三方jar包jedis来操作
首先在idea中创建maven项目 db_redis
在pom.xml文件中添加jedis依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
注意:jedis的版本号和redis的版本号不是一一对应的。
(二)单连接方式
使用单连接的方式操作redis代码如下:
package redis;
import redis.clients.jedis.Jedis;
/**
* 注意:代码能执行的前提
* 1.redis 所在服务器防火墙要关闭
* 2.redis.conf 中的bind参数需要指定192.168.23.103
*/
public class RedisSingle {
public static void main(String[] args) {
//1.或缺jedis链接
Jedis jedis = new Jedis("192.168.23.103", 6379);
jedis.set("lili","hello lili");
//从Redis中查询
String lili = jedis.get("lili");
System.out.println(lili);
//关闭jedis
jedis.close();
}
}
(三)连接池方式
接下来使用连接池的方式操作redis
代码如下:
package redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisPool {
public static void main(String[] args) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
//连接词最大空闲连接数
poolConfig.setMaxIdle(10);
//连接池中创建的最大连接数
poolConfig.setMaxTotal(100);
//创建连接的超时时间
poolConfig.setMaxWaitMillis(2000);
//表示从连接池中获取连接的时候会先测试一下连接是否可用,这样可以保证取出的连
poolConfig.setTestOnBorrow(true);
//获取jedis
JedisPool jedisPool = new JedisPool(poolConfig, "192.168.23.103", 6379);
//从连接池中取出一个链接
Jedis jedis = jedisPool.getResource();
String value = jedis.get("lili");
System.out.println(value);
//注意:此处的close方法有两层含义
//1:如果jedis是直接创建的单连接,此时表示直接关闭这个连接
//2:如果jedis是从连接池中获取的连接,此时会把这个连接返回给连接池
jedis.close();
}
}
(四)总结
java可以通过俩种方式操作redis
可以封装成工具类
package redis;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* 基于Redis连接池提取Redis工具类
*/
public class RedisUtils {
//私有化构造函数,禁止new
private RedisUtils(){}
private static JedisPool jedisPool=null;
//获取连接
public static synchronized Jedis getJedis(){
if(jedisPool==null)
{
JedisPoolConfig poolConfig = new JedisPoolConfig();
//连接词最大空闲连接数
poolConfig.setMaxIdle(10);
//连接池中创建的最大连接数
poolConfig.setMaxTotal(100);
//创建连接的超时时间
poolConfig.setMaxWaitMillis(2000);
//表示从连接池中获取连接的时候会先测试一下连接是否可用,这样可以保证取出的连
poolConfig.setTestOnBorrow(true);
//获取jedis
jedisPool = new JedisPool(poolConfig, "192.168.23.103", 6379);
}
return jedisPool.getResource();
}
//向连接池返回连接
public static void returnResource(Jedis jedis){
jedis.close();
}
}