Spring Boot - Redis 连通性测试
发布日期:2021-05-06 23:02:09 浏览次数:27 分类:原创文章

本文共 6465 字,大约阅读时间需要 21 分钟。

文章目录

准备 Redis 服务器

部署 Redis

Redis 配置文件

提示:我的 Redis 部署在 /usr/local/redis-6.0.8 目录,配置文件存放在 /usr/local/redis 目录。

复制 /usr/local/redis-6.0.8/redis.conf 配置文件到 /usr/local/redis 目录:

$ cp /usr/local/redis-6.0.8/redis.conf /usr/local/redis

提示:因为我的测试程序与 Redis 服务器分别位于不同的主机,所以需要修改配置,方便测试程序访问 Redis 服务器。

编辑 /usr/local/redis 配置文件,注释 bind 127.0.0.1(第 22 行),监听所有网卡的连接请求:

# By default, if no "bind" configuration directive is specified, Redis listens# for connections from all the network interfaces available on the server.# It is possible to listen to just one or multiple selected interfaces using# the "bind" configuration directive, followed by one or more IP addresses.## Examples:## bind 192.168.1.100 10.0.0.1# bind 127.0.0.1 ::1## ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the# internet, binding to all the interfaces is dangerous and will expose the# instance to everybody on the internet. So by default we uncomment the# following bind directive, that will force Redis to listen only into# the IPv4 loopback interface address (this means Redis will be able to# accept connections only from clients running into the same computer it# is running).## IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES# JUST COMMENT THE FOLLOWING LINE.# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#bind 127.0.0.1

设置认证密码(第 8 行):

# IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatiblity# layer on top of the new ACL system. The option effect will be just setting# the password for the default user. Clients will still authenticate using# AUTH <password> as usually, or more explicitly with AUTH default <password># if they follow the new protocol: both will work.## requirepass foobaredrequirepass 123456

启动 Redis 服务器

启动 Redis 服务器:

$ /usr/local/redis-6.0.8/src/redis-server /usr/local/redis/redis.conf

查看是否存在关于 redis-server 的进程,以此确认 Redis 服务器启动成功:

$ ps -ef | grep redisroot       4299   1632  0 17:02 pts/0    00:00:00 /usr/local/redis-6.0.8/src/redis-server *:6379root       4306   1985  0 17:03 pts/1    00:00:00 grep --color=auto redis

开放端口

开放 6379 端口:

$ firewall-cmd --list-all # 查看防火墙规则public (active)  target: default  icmp-block-inversion: no  interfaces: ens33  sources:   services: dhcpv6-client http ssh  ports: 22122/tcp 23000/tcp 8761/tcp 8081/tcp 8080/tcp  protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: 	$ firewall-cmd --zone=public --add-port=6379/tcp --permanent # 永久性地添加 6379/tcp 端口规则到 public 区域success$ firewall-cmd --reload # 重新加载防火墙规则success$ firewall-cmd --list-all # 查看防火墙规则,确认是否添加成功public (active)  target: default  icmp-block-inversion: no  interfaces: ens33  sources:   services: dhcpv6-client http ssh  ports: 22122/tcp 23000/tcp 8761/tcp 8081/tcp 8080/tcp 6379/tcp  protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules:

Java 客户端

项目基于 Spring Boot 2.3.4.RELEASE,新建 Maven Project,修改 pom.xml 文件,引入依赖:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.3.4.RELEASE</version>        <relativePath /> <!-- lookup parent from repository -->    </parent>    <groupId>com.mk</groupId>    <artifactId>spring-boot-redis</artifactId>    <version>1.0.0</version>    <name>spring-boot-redis</name>    <description>Redis 缓存</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-redis</artifactId>        </dependency>        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-pool2</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-devtools</artifactId>            <scope>runtime</scope>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-configuration-processor</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <optional>true</optional>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>            <exclusions>                <exclusion>                    <groupId>org.junit.vintage</groupId>                    <artifactId>junit-vintage-engine</artifactId>                </exclusion>            </exclusions>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

application.yml 配置文件:

spring:  redis:    database: 0 # Database index used by the connection factory.    host: 192.168.88.158 # Redis server host.    port: 6379 # Redis server port.    password: 123456 # Login password of the redis server.    timeout: 3000 # Connection timeout.    lettuce:      pool:        max-active: 8        max-wait: 1        min-idle: 0        max-idle: 8logging:  level:    com.mk: debug

测试类,这里通过缓存数据并尝试获取,以此测试 Java 客户端与 Redis 服务器之间的连通性:

package com.mk;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.core.ValueOperations;@SpringBootTestclass SpringBootRedisApplicationTests {           @Autowired    private StringRedisTemplate stringRedisTemplate;    	@Test	void contextLoads() {   	    ValueOperations<String, String> opsForValue = this.stringRedisTemplate.opsForValue();	    opsForValue.set("name", "lisi"); // 缓存数据	    String value = opsForValue.get("name"); // 获取缓存数据	    System.out.println(value);	}}
上一篇:Spring Boot - 缓存
下一篇:Docker - 部署 Redis 6.0.8

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月31日 19时20分39秒