Redis 安装之后就可以直接存取数据了,这在学习和开发的时候很方便, 但是在正式使用的时候,这样就不安全了, 因为只要暴露了机器和端口,任何人都可以访问了。
比较简单的方式就是设置一个访问密码。设置方式常见有两种:

  1. 通过redis-cli 客户端命令进行设置。 这种方式不好的地方就是 Redis 服务重启后,之前的设定就没有了。
  2. 通过redis.conf 配置文件进行设定。 需要注意服务启动的时候需要指定这个配置文件。

本篇演示在Linux系统如何设置密码。 本篇的Redis环境参考: Redis介绍、安装与初体验。

1. 通过redis-cli 设置Redis 访问密码

命令终端切换到Redis 目录, 分别执行如下命令:

src/redis-cli
config set requirepass 123456

设置完成之后, 在客戶端使用的时候就需要使用 -a指定密码,

src/redis-cli -a 123456

也可以通过auth 命令指定密码

src/redis-cli
auth 123456

2. 通过 redis.conf 设置Redis 访问密码

在linux 下通过VI 编辑器修改redis.conf 文件,具体步骤如下:

  1. 命令终端切换到Redis目录,使用 vi redis.conf 打开文件
  2. 在编辑器中输入 /requirepass 查找 #requirepass foobared ,
  3. 因为配置文件中有多处requirepass, 输入 n 查找下一个
  4. 将注释移除, 修改为 requirepass 123456
  5. src/redis-server redis.conf 启动服务。启动的时候需要指定配置文件

Java使用redis.clients 带密码访问

Java 使用redis.clients 访问Redis服务。

<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>3.6.3</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
	           <artifactId>commons-pool2</artifactId>
	           <version>2.0</version>
		</dependency>

如果使用到连接池 JedisPool , 需要引入commons-pool2。

JedisPoolConfig config = new JedisPoolConfig();
		JedisPool pool = new JedisPool(config, host, 6379, 3000, password);
		Jedis jedis = null;
		try {
		    jedis = pool.getResource();
		    System.out.println(jedis.get("mykey"));
		} catch (Exception e) {
		    // timeout and other error
		    e.printStackTrace();
		} finally {
		    if (jedis != null) {
		        jedis.close();
		    }
		}
		pool.destroy();

Jedis 类没有直接设置密码的参数, 可以通过JedisPool 设置密码,再从池中获取Jedis 客户端。