• Springboot集成redis


    1.拉取Redis镜像文件

    docker pull redis:latest
    

    2.运行容器

    • 查看本地镜像文件 docker images
    1. [root@zero redis] docker images
    2. REPOSITORY TAG IMAGE ID CREATED SIZE
    3. redis latest 7614ae9453d1 9 days ago 113MB
    4. mysql 5.7 c20987f18b13 10 days ago 448MB
    5. hello-world latest feb5d9fea6a5 3 months ago 13.3kB
    • 创建配置文件目录存放redis.conf
    1. mkdir /home/redis/data #存放redis数据
    2. mkdir /home/reids/conf/redis.conf #存放redis配置文件
    • 修改redis.conf配置文件,主要配置的如下:
    1. bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
    2. daemonize no #用守护线程的方式启动
    3. requirepass 123456 #密码 给redis设置密码
    4. appendonly yes #redis持久化  默认是no
    5. tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
    • 启动容器
    1. docker run -itd -p 6379:6379 -v /home/redis/conf:/etc/redis/conf \
    2. -v /home/redis/data:/data --name myredis \
    3. 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
    
    • 查看正在运行的容器
    1. [root@zero conf] docker ps
    2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3. 73b4d8f3bb95 redis "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp myredis
    4. 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
      会发现报错,未授权,这是因为我们设置了密码需要输入密码
    1. root@73b4d8f3bb95:/data redis-cli
    2. 127.0.0.1:6379> set hello 1
    3. (error) NOAUTH Authentication required.
    • 输入密码并重新测试
    1. 127.0.0.1:6379> auth 123456 #密码,这是我的密码
    2. OK
    3. 127.0.0.1:6379> set hello world
    4. OK
    5. 127.0.0.1:6379> get hello
    6. "world"
    7. 127.0.0.1:6379> exit

    测试

    1. @RestController
    2. public class RedisDemoController {
    3. @Autowired
    4. private RedisTemplate<String,String> redisTemplate;
    5. @GetMapping("/helloword")
    6. public String demo(Long id){
    7. System.out.println(String.valueOf(id));
    8. String name=redisTemplate.boundValueOps(String.valueOf(id)).get();
    9. if(name==null){
    10. name=id+"+"+ UUID.randomUUID().toString();
    11. System.out.println("查询数据库");
    12. redisTemplate.boundValueOps(String.valueOf(id)).set(name);
    13. }
    14. Long id1=redisTemplate.boundValueOps("id").increment();
    15. System.out.println(id1);
    16. return name;
    17. }
    18. }

  • 相关阅读:
    wordpress旅游网站模板
    网络协议之:sctp流控制传输协议
    高项 05 项目范围管理
    Spring系列篇一《Spring底层的核心原理解析》
    Android学习笔记 34. 在Android中集成高德地图
    swift枚举(二)
    golang的垃圾回收算法之七标记过程
    NLP常见任务的分类指标
    Vue.js入门教程(四)
    第三章 MyBatis关联对象查询
  • 原文地址:https://blog.csdn.net/weixin_53150299/article/details/132999260