Java 使用 Redis
安装
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考 Java开发手册接下来让我们安装 Java redis 驱动:
- 首先你需要下载驱动包jedis.jar,确保下载最新驱动包。
- 在你的 classpath 中包含该驱动包。
本站提供了 2.9.0 jar 版本下载: jedis-2.9.0.jar
连接到 redis 服务
实例
import redis.clients.jedis.Jedis;
public class RedisJava {
public static void main(String[] args) {
//连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost");
System.out.println("连接成功"); //查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping() );
}
}
编译以上 Java 程序,确保驱动包的路径是正确的。
连接成功
服务正在运行: PONG
Redis Java String(字符串) 实例
实例
import redis.clients.jedis.Jedis;
public class RedisStringJava {
public static void main(String[] args) { //连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功"); //设置 redis 字符串数据
jedis.set("runoobkey", "www.runoob.com"); // 获取存储的数据并输出
System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
}
}
编译以上程序。
连接成功
redis 存储的字符串为: www.runoob.com
Redis Java List(列表) 实例
实例
import java.util.List;
import redis.clients.jedis.Jedis;
public class RedisListJava {
public static void main(String[] args) { //连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功"); //存储数据到列表中
jedis.lpush("site-list", "Runoob");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao"); // 获取存储的数据并输出
List<String> list = jedis.lrange("site-list", 0 ,2);
for(int i=0; i<list.size(); i++) {
System.out.println("列表项为: "+list.get(i));
}
}
}
编译以上程序。
连接成功
列表项为: Taobao
列表项为: Google
列表项为: Runoob
Redis Java Keys 实例
实例
import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class RedisKeyJava {
public static void main(String[] args) { //连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功"); // 获取数据并输出
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}
编译以上程序。
连接成功
runoobkey
site-list
第2 篇笔记 写笔记
我觉得最详细:
public class RedisUtil { //服务器IP地址 private static String ADDR = "192.168.41.65"; //端口 private static int PORT = 6379; //密码 private static String AUTH = "123456"; //连接实例的最大连接数 private static int MAX_ACTIVE = 1024; //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。 private static int MAX_IDLE = 200; //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException private static int MAX_WAIT = 10000; //连接超时的时间 private static int TIMEOUT = 10000; // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; private static boolean TEST_ON_BORROW = true; private static JedisPool jedisPool = null; //数据库模式是16个数据库 0~15 public static final int DEFAULT_DATABASE = 0; /** * 初始化Redis连接池 */ static { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(MAX_ACTIVE); config.setMaxIdle(MAX_IDLE); config.setMaxWaitMillis(MAX_WAIT); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT,AUTH,DEFAULT_DATABASE); } catch (Exception e) { e.printStackTrace(); } } /** * 获取Jedis实例 */ public synchronized static Jedis getJedis() { try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); System.out.println("redis--服务正在运行: "+resource.ping()); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } /*** * * 释放资源 */ public static void returnResource(final Jedis jedis) { if(jedis != null) { jedisPool.returnResource(jedis); } } }
使用 JedisPoolConfig 需要导入 Commons Pool 包,下载地址 http://commons.apache.org/proper/commons-pool/download_pool.cgi。
-
在运行第一个示例程序时,后台报错,异常信息为:
Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required. at redis.clients.jedis.Protocol.processError(Protocol.java:127) at redis.clients.jedis.Protocol.process(Protocol.java:161) at redis.clients.jedis.Protocol.read(Protocol.java:215) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340) at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:239) at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:196) at com.RedisJava.main(RedisJava.java:10)
这是因为 redis 设置了密码验证,而没有进行密码验证所引起的异常。我们设置了密码验证:
CONFIG set requirepass "runoob"
处理方式 1,在源代码的基础上加上代码:
jedis.auth("runoob");//此处为你设置的密码
处理方式 2,关闭密码验证:
CONFIG set requirepass ""