Docker 安装 Redis
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 的 NoSQL 数据库,并提供多种语言的 API。
1、查看可用的 Redis 版本
访问 Redis 镜像库地址: https://hub.docker.com/_/redis?tab=tags。
可以通过 Sort by 查看其他版本的 Redis,默认是最新版本 redis:latest。

你也可以在下拉列表中找到其他你想要的版本:

此外,我们还可以用 docker search redis 命令来查看可用版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $ docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source ... 2321 [OK] sameersbn/redis 32 [OK] torusware/speedus-redis Always updated official ... 29 [OK] bitnami/redis Bitnami Redis Docker Image 22 [OK] anapsix/redis 11MB Redis server image ... 6 [OK] webhippie/redis Docker images for redis 4 [OK] clue/redis-benchmark A minimal docker image t... 3 [OK] williamyeh/redis Redis image for Docker 3 [OK] unblibraries/redis Leverages phusion/baseim... 2 [OK] greytip/redis redis 3.0.3 1 [OK] servivum/redis Redis Docker Image 1 [OK] ...
|
2、取最新版的 Redis 镜像
这里我们拉取官方的最新版本的镜像:
1
| $ docker pull redis:latest
|

针对Docker客户端版本大于 1.10.0 的用户
你可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
1 2 3 4 5 6 7 8
| sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://r46f0phk.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
|
3、查看本地镜像
使用以下命令来查看是否已安装了 redis:

在上图中可以看到我们已经安装了最新版本(latest)的 redis 镜像。
4、运行容器
安装完成后,我们可以使用以下命令来运行 redis 容器:
1
| $ docker run -itd --name redis-test -p 6379:6379 redis --requirepass "czqu@123"
|
参数说明:
- -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
- –requirepasss 设置密码

docker容器设置开机自启动:
1
| --restart具体参数值详细信息``no - 容器退出时,不重启容器``on-failure - 只有在非0状态退出时才从新启动容器``always - 无论退出状态是如何,都重启容器
|
还可以在使用 on-failure 策略时,指定 Docker 将尝试重新启动容器的最大次数;默认情况下,Docker 将尝试永远重新启动容器;
1
| docker run --restart=on-failure:10 redis
|
如果创建时未指定 –restart=always ,可通过 update 命令更改;
1
| docker update --restart=always 容器ID
|
5、安装成功
最后我们可以通过 docker ps 命令查看容器的运行信息:

接着我们通过 redis-cli 连接测试使用 redis 服务。
1
| $ docker exec -it redis-test /bin/bash
|

整合springboot
1.引入依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| <?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.4.0</version> <relativePath/> </parent> <groupId>cc.czqu</groupId> <artifactId>redis-test</artifactId> <version>0.0.1-SNAPSHOT</version> <name>redis-test</name> <description>Demo project for Spring Boot</description>
<properties> <java.version>11</java.version> </properties>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
</project>
|
2.创建实体类
随便创建一个实现序列化接口的实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package cc.czqu.redistest;
import lombok.Data;
import java.io.Serializable;
@Data public class Book implements Serializable { private int id; private String name; private String author;
}
|
3.配置application.properties
1 2 3 4 5 6 7 8 9
| spring.redis.database=0 spring.redis.port=6379 spring.redis.password=czqu@123 spring.redis.host=192.168.63.129 spring.redis.jedis.pool.max-active=8 #最大连接数 spring.redis.jedis.pool.max-wait=-1ms #最大阻塞时间 -1表示无限制 spring.redis.jedis.pool.min-idle=0 #连接池中最小空闲连接数 server.port=9090
|
4.创建测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| package cc.czqu.redistest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class BookController { @Autowired RedisTemplate redisTemplate; @Autowired StringRedisTemplate stringRedisTemplate; @GetMapping("/test1") public void test1() { System.out.println("hello"); ValueOperations<String,String> ops1=stringRedisTemplate.opsForValue(); ops1.set("name","三国演义"); String name=ops1.get("name"); System.out.println(name); Book book1=new Book(); book1.setId(666); book1.setAuthor("陈子琦"); book1.setName("快乐学习"); ValueOperations<String,Book> ops2= redisTemplate.opsForValue(); ops2.set("b1",book1); Book b1= ops2.get("b1"); System.out.println(b1); }
}
|