zoukankan      html  css  js  c++  java
  • 从头学习Spring之二(数据操作之NoSQL)

    对于详细内容没有深入了解,此处是学习 Spring ,只对此进行简单描述(主要是我没了解和学习过),后续还会学习

    一、 Docker 辅助开发

      1.容器:应用层的抽象,是一个标准化的单元。

      2. Docker :容器的管理引擎

      3. Docker 的一些常用命令:

        1)镜像相关 docker pull <image> // 下载镜像 docker search <image> // 查找镜像 

        2)容器相关: 

    1 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] // 将一个镜像运行起来,变成一个容器 -d,后台运行容器;-e,设置环境变量;--expose/-p 宿主端口:容器端口 --name,指定容器名称; --link,链接不同容器;-v,租住目录:容器目录,挂在磁盘卷 
    2 docker start/stop <容器名> 
    3 docker ps <容器名> 
    4 docker logs <容器名>

    二、 Spring 对 MongoDB 文档型数据库的支持

       Spring Data MongoDB :

        1.支持:

           MongoTemplate : save / remove 、 Criteria / Query / Update 

           Repository :使用 @EnableMongoRepositories 注解开启 Repository 支持

            对应接口: MongoRepository<T, ID>、PagingAndSortingRepository<T, ID>、CrudRepository<T, ID> 

        2.注解:

           @Document :用来标识此类对应哪一个文档

           @Id :标明类中哪个成员是 id 

        3. MongoDB 创建库和用户:

          创建库: use test // 创建test库 、

          创建用户:

     1 // 创建名为test的用户,密码为pwd,对test库有读写权限
     2 db.createUser(
     3     {
     4         user:"test",
     5         pwd:"pwd",
     6         roles:[
     7             { role:"readWrite", db: "test" }
     8         ]
     9     }
    10 )

     三、 Spring 对 Redis 的支持

      1. Redis :开源、 K-V 存储、支持多种数据结构

      2. Spring对 Redis 的支持

         Spring Data Redis :

          支持客户端 Jedis / Lettuce 

           RedisTemplate 

           Repository 支持

      3. Jedis 客户端简单使用

        注意: Jedis 不是线程安全的;通过 JedisPool 获得 Jedis 实例;直接使用 Jedis 中的方法

        1)依赖: Jedis 

        2)配置:

    spring:
        redis:
        host: localhost
        port: 6379
        password: 密码
        client-name: 名称
        # jedis配置
        jedis:
          pool:
            max-active: 7
            min-idle: 2
            max-wait: 1000ms

      3. Redis 的哨兵模式和集群模式

        1)哨兵模式:是一种 Redis 的高可用方案

          监控、通知、自动故障转移、服务发现

           Jedis 通过 JedisSentinePool 实现

        2)集群模式:数据自动分片(分成16384个 Hash Slot );在部分节点失效时有一定可用性

           Jedis 通过 JedisCluster 实现: Jedis 只从 Master 读数据,如果想要自动读写分离,可以定制

          注意:集群模式下无法对 KEY 进行批量操作

      4. Spring 的缓存抽象

        为不同的缓存提供一层抽象

          为 Java 方法增加缓存,缓存执行结果;支持 ConcurrentMap、EhCache、Caffeine、JCache(JSR-107) 

          接口: org.springframeword.cache.Cache 和 org.springframeword.cache.CacheManager 

        常用注解:   

    @EnableCaching    // 开启缓存支持
    @Cacheable          // 执行一个缓存方法,结果在缓存里则直接去缓存中取,否则将结果加入缓存
    @CacheEvict        // 缓存清理
    @CachePut          // 不管方法执行结果,直接去设置缓存
    @Caching            // 对缓存清理、缓存设置打包
    @CacheConfig     // 对缓存进行设置,如缓存的名字

      5.使用 Redis 作为缓存

        依赖: spring-boot-starter-cache 和 spring-boot-starter-data-redis 

        配置:

    spring.cache.type=redis
    spring.cache.cache-name=缓存名
    spring.cache.redis.time-to-live=缓存的ttl时间(如 5000 为 5 秒)
    spring.cache.redis.cache-null-value=true/false

      6. Redis 的其他用法

        配置连接工厂: LettuceConnectionFactory 与 JedisConnectionFactory 

    RedisStandaloneConfiguration // 单节点
    RedisSentinelConfiguration  // 哨兵
    RedisClusterConfiguration  // 集群

        读写分离:

           Lettuce 内置支持读写分离:

            只读主,只读从;优先读主,优先读从

          配置

    LettuceClientConfiguration    
    LettucePoolingClientConfiguration    
    LettuceClientConfigurationBuilderCustomizer    

         RedisTemplate :

    RedisTemplate<K, V>
        opsForXxx()  // 如 opsForHash()
    StringRedisTemplate

        注意:一定要设置过期时间

         Redis Repository :

          实体注解:

             @RedisHash // 定义对应的实体类 @Id // ID @Indexed // 二级索引 

          区分不同类型数据源的 Repository 

            根据实体的注解;根据继承的接口类型;根据扫描不同的包

  • 相关阅读:
    在返回值拒绝——reference
    传参时,使用引用替换变量
    C++设计与声明——让接口容易被正确使用
    三角函数的天下
    渲染流水线
    设置Shader关键字高亮(网上转)
    平衡二叉树,AVL树之代码篇
    2017-2018-1 20155205 嵌入式C语言——时钟
    GDB基础学习
    20155205 《信息安全系统设计基础》课程总结
  • 原文地址:https://www.cnblogs.com/xiao-lin-unit/p/14490857.html
Copyright © 2011-2022 走看看