Redis8.0.1编译安装

介绍

闭源了许久redis8.0又开源了,而且新增了很多东西,不说了直接上手体验一下

官方宣称Redis 8 是迄今为止性能最强、可扩展性最高的 Redis 版本。它拥有超过 30 项性能改进,包括命令速度提升高达 87%,每秒操作吞吐量提升高达 2 倍,复制速度提升高达 18%,以及通过 Redis 查询引擎提供高达 16 倍的查询处理能力。本次发布新增了 8 种数据结构,包括向量集合 (vector set)、JSON、时间序列以及五种概率结构,包括布隆过滤器、布谷鸟过滤器、计数最小化草图、top-k 和 t-digest(其中一些之前作为单独的 Redis 模块提供)。这些新的数据结构可以帮助用户更好地解决当前用例,并为下一代快速和实时应用构建。

•布隆过滤器与布谷鸟过滤器 (Bloom filter & Cuckoo filter):用于检查给定值是否已出现在数据流中•计数最小化草图 (Count-min sketch):用于估计给定值在数据流中出现的次数•top-k:查找数据流中最频繁的值•t-digest:用于查询数据流中哪些值的比例小于 / 大于给定值

值得注意的是,Redis8.0调整了其开源协议,采用了OSI (Open Source Initiative)认证的 AGPLv3 许可证,并保留了现有的 RSALv2 和 SSPLv1 许可证选项,这一战略性的许可转变旨在重建与开源社区的信任,同时继续保护软件免受未经授权的商业利用。

下面我们来对Redis8.0的新特效一一进行详解。

官方文档:https://redis.io/blog/redis-8-ga/

Redis下载与安装指南

Redis下载地址
上传到指定目录

创建目录并下载Redis:

mkdir -p /data/redis /data/redis/install
cd /data/redis
wget https://download.redis.io/releases/redis-8.0.1.tar.gz

若报错,安装wget

yum install wget
解压与安装环境

解压Redis:

tar -zxf redis-8.0.1.tar.gz -C /data/redis

安装编译环境:

yum -y install gcc automake autoconf libtool make gcc-c++

若提示错误,安装jemalloc-devel

yum install -y jemalloc-devel

如果安装jemalloc-devel提示不正确则需要安装第三方库

#当前报错是无法安装需要额外库
yum repolist all | grep epel
#如果 EPEL 未启用,执行以下命令启用
yum install -y epel-release
yum install -y jemalloc-devel

若找不到Python目录,安装Python3:

yum install -y python3
编译安装

编译并安装Redis:

make install PREFIX=/data/redis/install

若提示包不兼容或版本错误,使用以下命令:

原因是jemalloc重载了Linux下的ANSI C的malloc和free函数,需要指定

make MALLOC=libc install PREFIX=/data/redis/install
如果编译安装还出现gcc问题则一样需要更新,我没用出现则未处理
# 查看gcc版本
gcc -v                          
# 升级到9.1版本
yum -y install centos-release-scl  
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.1的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
检查启动

配置环境变量:

vim /etc/profile

新增以下内容:

REDIS_HOME=/data/redis
PATH=$PATH:$REDIS_HOME/bin

使配置生效:

source /etc/profile

测试启动:

测试启动-可不执行后面注册成服务后需要重新kill

redis-server /home/install/install/redis/redis-8.0.1/redis.conf
配置成服务

设置redis.conf

#设置后台启动,如果不是后台启动,每次推出redis就关闭了
daemonize yes
#开启密码保护,注释则不需要密码
requirepass 密码
#设置端口号
port 端口号
#允许访问的ip,改为0.0.0.0就是所有ip均可
#bind 127.0.0.1 -::1
bind 0.0.0.0

设置开机自启:

cd /usr/lib/systemd/system
touch redis.service
vi redis.service

添加以下内容:

[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
# 当前需要绝对路径
ExecStart=/data/redis/install/bin/redis-server /home/install/install/redis/redis-8.0.1/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重载系统服务并设置开机自启:

#重载系统服务
systemctl daemon-reload
#设置开机自启
systemctl enable redis.service
#取消开机自启
systemctl disable redis.service
#启动服务
systemctl start redis.service
#停止服务
systemctl stop redis.service
#查看服务状态
systemctl status redis.service
#查看是否运行
ps -aux | grep redis
#检查进程是否存在
ps -ef | grep redis
#检查端口是否监听
netstat -anlp | grep 6379
启动成功查询状态如下
防火墙配置

在防火墙添加端口:

firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload

关闭防火墙:

systemctl stop firewalld.service
测试Redis

连接Redis并测试:

redis-cli
#如果前面设置了密码需要输入密码
auth 你的密码
set name potato
get name

通过以上步骤,Redis的下载、安装、配置和测试即可完成。

如果需要变成哨兵或者集群模式,配置方法和原来版本一样的 。

This XML file does not appear to have any style information associated with it. The document tree is shown below. <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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.linmour</groupId> <artifactId>linmour-ScanOrder</artifactId> <packaging>pom</packaging> <version>${revision}</version> <modules> <module>linmour-common-module</module> <module>linmour-system-module</module> <module>linmour-gateway</module> <module>linmour-product-module</module> <module>linmour-security</module> <module>linmour-order-module</module> <module>linmour-restaurant-module</module> <module>linmour-websocket</module> <module>linmour-dataAnaly-module</module> </modules> <!-- 继承Spring boot工程 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.9.RELEASE</version> </parent> <properties> <!-- 项目版本 --> <revision>1.2.8.0.1</revision> <!-- 项目源码及编译输出的编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 项目编译JDK版本 --> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <!-- 依赖包版本管理 --> <security.version>2.3.9.RELEASE</security.version> <validator.version>6.1.5.Final</validator.version> <spring.boot.version>2.3.9.RELEASE</spring.boot.version> <commons.io.version>2.6</commons.io.version> <commons.codec.version>1.12</commons.codec.version> <lombok.version>1.18.16</lombok.version> <mysql.version>5.1.49</mysql.version> <mybatis.version>3.5.1</mybatis.version> <rediss.version>3.16.8</rediss.version> <mpj.version>1.4.11</mpj.version> <mybatis.spring.version>2.0.1</mybatis.spring.version> <mybatis.plus.version>3.4.1</mybatis.plus.version> <lang3.version>3.5</lang3.version> <pagehelper.version>1.2.3</pagehelper.version> <jwt.version>0.9.1</jwt.version> <fastjson.version>1.2.58</fastjson.version> <fastjson.dataformat.version>2.9.9</fastjson.dataformat.version> <spring.jwt.version>1.0.9.RELEASE</spring.jwt.version> <spring.boot.admin.version>2.1.6</spring.boot.admin.version> <spring.cloud.version>Hoxton.SR8</spring.cloud.version> <curator.version>4.2.0</curator.version> <hanlp.version>portable-1.3.4</hanlp.version> <fastdfs.version>1.26.5</fastdfs.version> <baidu.version>4.11.1</baidu.version> <junit.version>4.12</junit.version> <searchbox.version>6.3.1</searchbox.version> <elasticsearch.version>7.2.0</elasticsearch.version> <ali.core.version>4.1.1</ali.core.version> <ali.green.version>3.4.1</ali.green.version> <kafka.version>2.6.6</kafka.version> <kafka.client.version>2.5.1</kafka.client.version> <reflections.version>0.9.11</reflections.version> <swagger.version>2.9.2</swagger.version> <knife4j.version>2.0.2</knife4j.version> <com.alibaba.cloud>2.2.3.RELEASE</com.alibaba.cloud> <xxl.job.version>2.2.0-SNAPSHOT</xxl.job.version> <captcha-plus.version>1.0.2</captcha-plus.version> <mapstruct.version>1.5.5.Final</mapstruct.version> <jsoup.version>1.15.4</jsoup.version> <lombok.version>1.18.26</lombok.version> <mapstruct.version>1.5.5.Final</mapstruct.version> <hutool.version>5.8.18</hutool.version> <easyexcel.verion>3.3.1</easyexcel.verion> <velocity.version>2.3</velocity.version> <screw.version>1.0.5</screw.version> <fastjson.version>1.2.83</fastjson.version> <guice.version>5.1.0</guice.version> <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version> <commons-net.version>3.8.0</commons-net.version> <jsch.version>0.1.55</jsch.version> <tika-core.version>2.7.0</tika-core.version> <netty-all.version>4.1.90.Final</netty-all.version> <ip2region.version>2.7.0</ip2region.version> <reflections.version>0.10.2</reflections.version> <minio.version>7.1.0</minio.version> <tess4j.version>4.1.1</tess4j.version> <jaxb.version>2.3.0</jaxb.version> <maven-plugin.version>2.7.8</maven-plugin.version> <!-- docker 配置 --> <dockerfil.version>1.4.13</dockerfil.version> </properties> <dependencyManagement> <dependencies> <!-- 子模块 --> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-security</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-system-api</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-common</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-common-api</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-order-api</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-product-api</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-restaurant-api</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.linmour</groupId> <artifactId>linmour-dataAnaly-api</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-typehandlers-jsr310</artifactId> <version>1.0.1</version> </dependency> <!-- 日志处理包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </dependency> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>${rediss.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${maven-plugin.version}</version> </dependency> <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>${reflections.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除默认的logback日志,使用log4j --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> <version>${spring.boot.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> <version>${spring.boot.version}</version> </dependency> <!-- Apache 工具包包 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons.io.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${lang3.version}</version> </dependency> <!-- 加密处理包 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>${commons.codec.version}</version> </dependency> <!-- Mysql 数据库 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- jwt --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>${jwt.version}</version> </dependency> <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-cbor</artifactId> <version>${fastjson.dataformat.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>${fastjson.dataformat.version}</version> </dependency> <!-- spring colud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- spring cloud alibaba --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${com.alibaba.cloud}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> <version>${security.version}</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <!-- use mapstruct-jdk8 for Java 8 or higher --> <version>${mapstruct.version}</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> <version>${mapstruct.version}</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </dependency> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis.plus.version}</version> </dependency> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>${tess4j.version}</version> </dependency> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>${minio.version}</version> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>${kafka.version}</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.client.version}</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <dependency> <groupId>com.github.yulichang</groupId> <artifactId>mybatis-plus-join-boot-starter</artifactId> <version>${mpj.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId> <version>${transmittable-thread-local.version}</version> </dependency> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>${jaxb.version}</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>${jaxb.version}</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> <filtering>true</filtering> </resource> </resources> <testResources> <testResource> <directory>src/system.test/resources</directory> <filtering>true</filtering> </testResource> </testResources> <pluginManagement> <plugins> <!-- 构建和推动Docker镜像 --> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${dockerfil.version}</version> <executions> <execution> <id>default</id> <!-- 用package打包才触发构建镜像 --> <phase>package</phase> <goals> <goal>build</goal> <!-- 推送到仓库 --> <!-- <goal>push</goal> --> </goals> </execution> </executions> <configuration> <contextDirectory>${project.basedir}</contextDirectory> <useMavenSettingsForAuth>true</useMavenSettingsForAuth> <repository>${project.artifactId}</repository> <!-- 推送到仓库 --> <!-- <username>root</username> --> <!-- <password>@Cheng128</password> --> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> <!-- install打包时占位符不替换时可以使用这个插件,也可以用package打包 --> <!-- <plugin> --> <!-- <groupId>org.codehaus.mojo</groupId> --> <!-- <artifactId>flatten-maven-plugin</artifactId> --> <!-- <version>1.5.0</version> --> <!-- <configuration> --> <!-- <!– 避免IDE将 .flattened-pom.xml自动识别为功能模块 –> --> <!-- <flattenedPomFilename>pom-xml-flattened</flattenedPomFilename> --> <!-- <updatePomFile>true</updatePomFile> --> <!-- <flattenMode>resolveCiFriendliesOnly</flattenMode> --> <!-- </configuration> --> <!-- <executions> --> <!-- <execution> --> <!-- <id>flatten</id> --> <!-- <phase>process-resources</phase> --> <!-- <goals> --> <!-- <goal>flatten</goal> --> <!-- </goals> --> <!-- </execution> --> <!-- <execution> --> <!-- <id>flatten-clean</id> --> <!-- <phase>clean</phase> --> <!-- <goals> --> <!-- <goal>clean</goal> --> <!-- </goals> --> <!-- </execution> --> <!-- </executions> --> <!-- </plugin> --> </plugins> </pluginManagement> </build> <repositories> <repository> <id>spring</id> <url>https://maven.aliyun.com/repository/spring</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </project> 这个项目我如果想用源码运行怎么做
06-25
该项目是一个基于 Maven 的 Spring Boot 多模块项目,如果你想从源码运行这个项目,需要完成以下几个步骤: --- ### 一、环境准备 1. **Java 环境** - 安装 JDK 11(因为 `maven.compiler.source` 和 `maven.compiler.target` 都设置为 11)。 - 验证安装: ```bash java -version javac -version ``` 2. **Maven 环境** - 安装 Apache Maven(建议使用 3.6+ 版本)。 - 验证安装: ```bash mvn -v ``` 3. **IDE 工具** - 推荐使用 IntelliJ IDEA 或 Eclipse 导入 Maven 项目。 4. **数据库配置** - 确保 MySQL 数据库服务已启动,并且版本与依赖的 `mysql-connector-java:5.1.49` 兼容。 - 检查各模块中的 `application.yml` 或 `application.properties` 文件,确保数据库连接信息正确。 5. **Redis / Kafka / MinIO / Elasticsearch / Docker 等中间件** - 如果某些模块依赖这些组件,请确保它们已经安装并运行。 --- ### 二、项目结构分析 这是一个多模块 Maven 项目,包含多个子模块(如 `linmour-common-module`, `linmour-order-module` 等)。每个模块通常是一个独立的 Spring Boot 应用或库。 --- ### 三、构建和运行项目的步骤 #### 1. **下载源码** 将整个项目的代码克隆到本地目录中: ```bash git clone <your-repo-url> ``` 或者手动复制所有模块文件。 --- #### 2. **构建项目** 在项目根目录下执行以下命令进行打包: ```bash mvn clean install ``` 这会编译所有模块并将其安装到本地 Maven 仓库。如果某个模块有错误,Maven 会提示你修复。 --- #### 3. **运行单个模块** 进入你想运行的模块目录(例如 `linmour-order-module`),然后运行: ```bash cd linmour-order-module mvn spring-boot:run ``` 也可以通过 IDE 直接运行 `Application.java` 类(通常是带有 `@SpringBootApplication` 注解的主类)。 --- #### 4. **处理依赖问题** 由于该项目使用了 `${revision}` 变量来统一管理版本号,确保所有模块都使用相同的 `<revision>` 值(当前是 `1.2.8.0.1`)。 如果你修改了 `pom.xml` 中的版本号,重新执行 `mvn clean install` 是必须的。 --- #### 5. **Docker 构建(可选)** 如果想使用 Docker 打包运行: ```bash mvn clean package dockerfile:build ``` 然后运行生成的镜像: ```bash docker run -d -p 8080:8080 linmour-order-module:1.2.8.0.1 ``` --- ### 四、注意事项 1. **资源过滤配置** - `src/main/resources` 下的文件启用了过滤(`<filtering>true</filtering>`),因此可以使用 `${property}` 替换变量。 2. **测试资源路径** - 测试资源路径指向的是 `src/system.test/resources`,请确认该路径是否存在,否则会导致测试失败。 3. **日志框架冲突** - 项目排除了默认的 Logback 日志系统,使用的是 Log4j2。请确保 `log4j2-spring.xml` 配置文件存在。 4. **Lombok 支持** - 使用 Lombok 时,请在 IDE 中安装 Lombok 插件以避免编译错误。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值