Redis 安装之后就可以直接存取数据了,这在学习和开发的时候很方便, 但是在正式使用的时候,这样就不安全了, 因为只要暴露了机器和端口,任何人都可以访问了。
比较简单的方式就是设置一个访问密码。设置方式常见有两种:
- 通过redis-cli 客户端命令进行设置。 这种方式不好的地方就是 Redis 服务重启后,之前的设定就没有了。
- 通过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 文件,具体步骤如下:
- 命令终端切换到Redis目录,使用
vi redis.conf
打开文件 - 在编辑器中输入
/requirepass
查找#requirepass foobared
, - 因为配置文件中有多处requirepass, 输入
n
查找下一个 - 将注释移除, 修改为
requirepass 123456
-
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 客户端。