jedis操作redis 报NOAUTH Authentication required.

zhang爽 JAVA软件工程师  2015-12-15 11:32:12
/**
* 测试是否连接上redis
* @param args
*/
public static void main(String[] args) {
Jedis jedis = new Jedis("IP",6379);
jedis.set("foo", "bar");
String value = jedis.get("foo");
System.out.println(value);
}

一运行控制台报:
Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
at redis.clients.jedis.Protocol.processError(Protocol.java:59)
at redis.clients.jedis.Protocol.process(Protocol.java:66)
at redis.clients.jedis.Protocol.read(Protocol.java:131)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:162)
at redis.clients.jedis.Jedis.set(Jedis.java:51)
at com.kingkaysoft.cdl.common.RedisManager.main(RedisManager.java:197)

求解决办法!小弟初学redis实在不知道是为什么啊。求解决

...全文
38315 5 2 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
莫默不作声 2017-02-17
修改redis的配置文件,即redis.windows.conf中删除requirepass “123456”就可以了
  • 打赏
  • 举报
回复
zhang爽 2015-12-17
后来修改了一下redis的配置文件,修改了bind的IP地址,改成了两个,在redis2.8(貌似是2.8,总之是高版本)中,redis的bind允许绑定两个IP地址,绑定的两个IP分别是:127.0.0.1和存放redis的IP地址。然后重新设置了密码。redis在刚安装完后,是不会设置密码的,密码的设置也是在redis的配置文件中修改,修改requirepass为自己的密码,即可搞定这个问题
  • 打赏
  • 举报
回复
qingyuan18 2015-12-15

public final class RedisPool {

	//Redis服务器IP
	private static String ADDR = "192.168.0.100";

	//Redis的端口号
	private static int PORT = 6379;

	//访问密码
	private static String AUTH = "admin";

	//可用连接实例的最大数目,默认值为8;
	//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
	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;

	/**
	 * 初始化Redis连接池
	 */
	static {
		try {
			JedisPoolConfig config = new JedisPoolConfig();
			config.setMaxActive(MAX_ACTIVE);
			config.setMaxIdle(MAX_IDLE);
			config.setMaxWait(MAX_WAIT);
			config.setTestOnBorrow(TEST_ON_BORROW);
			jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取Jedis实例
	 * @return
	 */
	public synchronized static Jedis getJedis() {
		try {
			if (jedisPool != null) {
				Jedis resource = jedisPool.getResource();
				return resource;
			} else {
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 释放jedis资源
	 * @param jedis
	 */
	public static void returnResource(final Jedis jedis) {
		if (jedis != null) {
			jedisPool.returnResource(jedis);
		}
	}
}
按照上述代码来连Jedis服务器
  • 打赏
  • 举报
回复
兔子托尼啊 2015-12-15
用户名密码对不 。其次看看防火墙,我上次就是防火墙的原因。
  • 打赏
  • 举报
回复
zhang爽 2015-12-15
引用 1 楼 rui888 的回复:
用户名密码对不 。其次看看防火墙,我上次就是防火墙的原因。
你好,我的redis并没有设置用户名和密码,而且他是可以连接一段时间的,过了一段时间再连接才会重新报错,当重启下redis的时候,又可以连接,然后过一段时间又会报这个异常
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-12-15 11:32
社区公告
暂无公告