Springboot集成redis

1.拉取Redis镜像文件

docker pull redis:latest

2.运行容器

  • 查看本地镜像文件 docker images
[root@zero redis] docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
redis         latest    7614ae9453d1   9 days ago     113MB
mysql         5.7       c20987f18b13   10 days ago    448MB
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB
  • 创建配置文件目录存放redis.conf
mkdir /home/redis/data 		  #存放redis数据
mkdir /home/reids/conf/redis.conf  #存放redis配置文件
  • 修改redis.conf配置文件,主要配置的如下:
bind 127.0.0.1  #注释掉这部分,使redis可以外部访问
daemonize no	#用守护线程的方式启动
requirepass 123456 #密码 给redis设置密码
appendonly yes	#redis持久化  默认是no
tcp-keepalive 300 	#防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
  • 启动容器
docker run -itd -p 6379:6379 -v /home/redis/conf:/etc/redis/conf \ 
-v /home/redis/data:/data --name myredis \
redis /etc/redis/conf/redis.conf --appendonly yes

命令解释说明:

-p 6379:6379 端口映射:前表示主机部分 :后表示容器部分。--name myredis  指定该容器名称,查看和进行操作都比较方便。-v 挂载目录(是目录不是文件),规则与端口映射相同。为什么需要挂载目录:docker是个沙箱隔离级别的容器,不能随便访问外部(主机)资源目录,所以需要挂载目录机制。-d redis 表示后台启动redisredis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
  • 查看正在运行的容器
[root@zero conf] docker ps 
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS          PORTS                                                  NAMES
73b4d8f3bb95   redis       "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes    0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              myredis
7eedeb6049c2   mysql:5.7   "docker-entrypoint.s…"   4 days ago      Up 24 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql01
  • 查看容器日志 docker logs 73b4d8f3bb9

3.测试容器

  • 进入容器
[root@zero redis] docker exec -it 73b4d8f3bb95 /bin/bash
  • 执行客户端命令redis-cli
    会发现报错,未授权,这是因为我们设置了密码需要输入密码
root@73b4d8f3bb95:/data redis-cli
127.0.0.1:6379> set hello 1 
(error) NOAUTH Authentication required.
  • 输入密码并重新测试
127.0.0.1:6379> auth 123456 #密码,这是我的密码
OK
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> exit

测试

@RestController
public class RedisDemoController {
    @Autowired
    private RedisTemplate redisTemplate;

    @GetMapping("/helloword")
    public  String demo(Long id){
        System.out.println(String.valueOf(id));
        String name=redisTemplate.boundValueOps(String.valueOf(id)).get();
        if(name==null){
            name=id+"+"+ UUID.randomUUID().toString();
            System.out.println("查询数据库");
            redisTemplate.boundValueOps(String.valueOf(id)).set(name);
        }
        Long id1=redisTemplate.boundValueOps("id").increment();
        System.out.println(id1);
        return  name;
    }
}

你可能感兴趣的:(eureka,云原生)