Java代码操作Redis
数据库连接方式:
1、单机单连接方式
2、单机连接池方式
3、多机分布式+连接池方式
注意事项:
1.关闭防火墙:systemctl stop firewalld.service
关于防火墙可参考:https://blog.youkuaiyun.com/fmwind/article/details/83374583
2.redis.conf配置文件中节点 :bind 127.0.0.1 注释掉,同时设置节点 protected-mode no
首先创建Maven项目。然后在pom.xml中指定依赖。
使用jedis第三方jar包操作redis
mvn依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
代码示例:
import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class redisTest {
public static void main(String[] args) throws Exception {
showRedis();
}
//测试redis连接
private static void showRedis() {
//连接redis数据库
Jedis jedis = new Jedis("192.168.33.130", 6379);
//设置 key value
jedis.set("baidu","QQ");
//获取key对应的value
String StrVal = jedis.get("baidu");
System.out.println(StrVal);
//获取数据库中所有keys
System.out.println("数据库中所有键如下:");
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}
打印结果:
QQ
数据库中所有键如下:
site
db
person
google
连接池一些配置:
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
poolConfig.setMaxIdle(10);
//控制一个pool最多有多少个jedis实例。
poolConfig.setMaxTotal(100);
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
poolConfig.setMaxWaitMillis(10000);
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
poolConfig.setTestOnBorrow(true);
连接池工具类:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class redisUtils {
private redisUtils() {}
private static JedisPool jedisPool = null;
//获取链接
public static synchronized Jedis getJedis() {
if(jedisPool == null){
//创建config
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
jedisPoolConfig.setMaxIdle(10);
//控制一个pool最多有多少个jedis实例。
jedisPoolConfig.setMaxTotal(100);
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
jedisPoolConfig.setMaxWaitMillis(2000);
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
jedisPoolConfig.setTestOnBorrow(true);
jedisPool = new JedisPool(jedisPoolConfig, "192.168.33.130",6379);
}
//返回连接池资源
return jedisPool.getResource();
}
public static void returnResource(Jedis jedis) {
jedis.close();
}
}
工具类使用:
//测试redis连接
private static void showRedis() {
//连接redis数据库
Jedis jedis = redisUtils.getJedis();
//设置 key value
jedis.set("baidu","QQ");
//获取key对应的value
String StrVal = jedis.get("baidu");
System.out.println(StrVal);
//获取数据库中所有keys
System.out.println("数据库中所有键如下:");
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}