springboot 2.1.5Redis配置的一些坑

1,springboot 2.1.5 Redis配置的坑

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

默认使用的连接是LettuceConnectionFactory,不是JedisConnectionFactory,

Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server。

Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,
这个时候只有使用连接池,为每个Jedis实例增加物理连接

Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)
可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的,
所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,
当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例
链接:https://www.zhihu.com/question/53124685/answer/354431529

在定义RedisTemplate 模板类时,添加的的RedisConnectionFactory默认是LettuceConnectionFactory。

这个就要在application.yml中使用lettuce作为redis pool

 redis:
    database: 1
    #host: 196.289.12.212
    #port: 6380
    sentinel:
      master: mymaster
      nodes: 196.289.12.212:5000
    password: 
    timeout: 1000
    lettuce:
      pool:
       max-active: 1000   ## 连接池最大连接数(使用负值表示没有限制)
       max-wait: 10000      ### # 连接池最大阻塞等待时间(使用负值表示没有限制))
       max-idle: 200      ### 连接池中的最大空闲连接
       min-idle: 50      ### 连接池中的最小空闲连接
       time-between-eviction-runs: 100000 #每ms运行一次空闲连接回收器(独立线程)

如果使用jedis,则或初始化redisPool为空值。

springboot对连接池的使用非常智能,配置文件中添加lettuce.pool相关配置,则会使用到lettuce连接池,并将相关配置设置为连接池相关参数,否则不使用,通过断点调试查看

如过使用redis连接池(无论lettuce还是jedis客户端,都需要),则需要导入如下依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

下图是使用lettuce的redisFactory的截图:

 

 

下图是使用jedis 的配置截图:

2,springboot2.1.5使用logback的坑

网上一片说

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

starter中已经有Logging 依赖进来,不需要手动再添加Logging依赖jstater,在我的项目中,如果不手动添加

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
         </dependency>

则出现打好的jar项目启动的时候,日志配置是失效的,当然在添加Logging的时候,也要排除掉slf4j-lo4j2的冲突问题。

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot 2.1.5中使用Log4j,需要进行以下步骤: 1. 在Maven或Gradle的构建文件中添加Log4j依赖项: ``` <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.11.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.2</version> </dependency> ``` 2. 在application.properties文件中添加以下配置: ``` logging.level.root=INFO logging.level.com.example=DEBUG logging.config=classpath:log4j2.xml ``` 这里的logging.config属性指定了Log4j的配置文件,在本例中是log4j2.xml。 3. 创建log4j2.xml文件并将其放置在classpath下。以下是一个示例配置文件: ``` <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="Console"/> </Root> <Logger name="com.example" level="DEBUG"/> </Loggers> </Configuration> ``` 此配置文件定义了一个名为Console的输出器和两个记录器,一个是根记录器,另一个是com.example包的记录器。 4. 在代码中使用Log4j输出日志。例如: ``` import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Example { private static final Logger logger = LogManager.getLogger(Example.class); public void doSomething() { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); logger.fatal("Fatal message"); } } ``` 这里的log4j2.xml配置文件将打印日志到控制台,并将级别为DEBUG的日志记录到com.example包的记录器。如果要记录到文件中,可以添加FileAppender并将其添加到记录器中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值