BackGround:
- 服务器:Redis安装在了
Linux
服务器中- 客户端:使用本地的
IDEA
,搭建Maven
工程,通过Lettuce
作为客户端操作服务器的Redis
服务器配置工作
配置文件
配置文件中需要设置
port
:服务器端口号requirepass
:密码验证protected-mode
:将该参数设置为no
bind
:可以设置为*
,方便开发环境
首先你需要知道配置文件在哪
配置文件的名称是:redis.conf
,所以你可以通过下面的命令去寻找文件的位置:
请复制:
sudo find / -name redis.conf
效果如下:(可恶...一不小心暴露了我原先的远古版本)
[root@Chengyunlai /]# sudo find / -name redis.conf
/usr/local/redis-6.0.10/redis.conf
修改配置文件
- 先备份:
修改前,要备份,是个好习惯。(记得路径要对应成你的实际路径啊!也就是上面的/usr/local/redis-6.0.10/
)
cp /usr/local/redis-6.0.10/redis.conf /usr/local/redis-6.0.10/redis.conf.$(date +%Y-%m-%d-%H%M%S).bak
$(date +%Y-%m-%d-%H%M%S)
表示当前时间的年月日时分秒格式。该命令会在备份文件名后添加时间戳,便于区分备份版本。效果如下:
- 修改配置文件
还记得我们需要修改什么吗?port、requirepass、protected-mode、bind。
使用vim
命令,到redis.conf
所在的目录,通过:
vim redis.conf
或者直接用上面输出的位置路径:
vim /usr/local/redis-6.0.10/redis.conf
出现提示信息,如果是备份的信息,选择
E
,就是说我们要编辑该文件。如果没有出现提示信息,则忽略。
哇吼,进去真的是密密麻麻的,不要慌张。跟着我一步一步来。
请输入:/
,然后接着你想要在此文件中查询的内容,例如port
:/port
效果如下,你会发现文件中port
的内容高亮显示了,同时会定位到本页第一个出现port
的位置:
可以使用 n
键向下跳转到下一个匹配项,使用 N
键向上跳转到上一个匹配项。
一般默认端口是6379
,所以我们可以通过如下命令定位:
:/port 6379
输入i
命令,进入编辑模式,将6379
改成其他端口(安全),具体端口范围默认是:32768 到 60999
。
同理我们定位修改requirepass
。
设置为
requirepass 实际密码
requirepass
该参数用于启用 Redis 的密码身份验证功能。如果该参数的值为空,那么 Redis 将不需要进行密码身份验证。请确保该参数已经设置,在客户端连接以及重启Redis服务器时都需要进行密码验证。
同理我们定位修改protected-mode
。
设置为
protected-mod no
protected-mode
的参数是设置Redis的保护模式,如果参数为yes
则只有来自本地 IP 地址的连接才能访问 Redis服务器。设置该参数的值为 "no",允许来自远程 IP 地址的连接。
同理我们定位修改bind
。
设置为
bind *
bind
指定Redis服务器绑定的IP地址。可以设置为两个值:1. 实际使用的IP地址;2. *
。
作用:允许从任何 IP 地址连接到 Redis 服务器。
关闭Redis服务器
如果你原先启动了,做了配置修改,你当然要关闭!
我们首先要找到redis-cli
,也就是客户端,查找的方式同上。执行命令如下:
redis-cli -a 新密码 -p 新端口 shutdown
有人可能会有疑问了!诶我刚做的设置,现在Redis应该是老配置啊,咋还需要填入修改的密码和端口这些信息呢?因为redis服务在运行时已经使用了修改后的密码进行身份验证,所以关闭服务时同样需要使用新密码。而端口也是服务在运行时已经使用了新端口号进行监听,所以在关闭服务时需要使用新端口号。
重启
在redis-cli
同目录下有redis-server
。我们在启动服务器的时候记得带上配置文件:
./redis-server /usr/local/redis-6.0.10/redis.conf
OK,以上就是服务器的配置。
Maven工程
这里就直接贴代码和步骤了,不说理由咯!上车。
依赖
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
测试
public class RedisTest {
private static RedisClient redisClient;
private static StatefulRedisConnection<String, String> connection;
private static RedisAsyncCommands<String, String> asyncCommands;
@Before
public void before(){
redisClient = RedisClient.create("redis://密码@IP:端口/0");
connection = redisClient.connect();
asyncCommands = connection.async();
}
@After
public void after(){
connection.close();
redisClient.shutdown();
}
/**
* @Description: 操控Redis客户端
* @Param: []
* @return: void
* @Author: chengyunlai
* @Date: 2023/3/1
*/
@Test
public void testConnectAndSet() throws Exception {
asyncCommands.set("name", "Chengyunlai").get(1, TimeUnit.SECONDS);
}
该工程若是了解起来有问题,请在评论区中留言。