redis整合springboot
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 命令来查看可用版本:
$ 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 镜像
这里我们拉取官方的最新版本的镜像:
$ docker pull redis:latest
针对Docker客户端版本大于 1.10.0 的用户
你可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
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:
$ docker images
在上图中可以看到我们已经安装了最新版本(latest)的 redis 镜像。
4、运行容器
安装完成后,我们可以使用以下命令来运行 redis 容器:
$ docker run -itd --name redis-test -p 6379:6379 redis --requirepass "czqu@123"
参数说明:
- -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
- –requirepasss 设置密码
docker容器设置开机自启动:
--restart具体参数值详细信息``no - 容器退出时,不重启容器``on-failure - 只有在非0状态退出时才从新启动容器``always - 无论退出状态是如何,都重启容器
还可以在使用 on-failure 策略时,指定 Docker 将尝试重新启动容器的最大次数;默认情况下,Docker 将尝试永远重新启动容器;
docker run --restart=on-failure:10 redis
如果创建时未指定 –restart=always ,可通过 update 命令更改;
docker update --restart=always 容器ID
5、安装成功
最后我们可以通过 docker ps 命令查看容器的运行信息:
接着我们通过 redis-cli 连接测试使用 redis 服务。
$ docker exec -it redis-test /bin/bash
整合springboot
1.引入依赖
<?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/> <!-- lookup parent from repository -->
</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.创建实体类
随便创建一个实现序列化接口的实体类
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
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.创建测试类
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);
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 陈子琦的博客!
评论