• springboot 整合 redis


    jedis 和 lettuce 都是用来连接 redis 的客户端,jedis 如果不使用连接池是非线程安全的,lettuce 使用 netty 线程安全且并发性能更好;

    springboot 2.x 版本后 默认使用 lettuce

    关于 StringRedisTemplate 和 RedisTemplate, 使用 StringRedisTemplate 即可, 不用管那些序列化问题, 因为 StringRedisTemplate 可以完成 Map, List, Set 等所有数据类型的操作

    1,依赖

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

    2,redis 配置

    # Redis 数据库索引(默认有16个分片,默认使用0)
    spring.redis.database=1
    # Redis 服务器地址
    spring.redis.host=192.168.1.198
    # Redis 服务器端口
    spring.redis.port=6379
    # Redis 服务器密码
    spring.redis.password=111111
    # 连接池最大连接数(使用负值表示没有限制) 默认 8
    spring.redis.lettuce.pool.max-active=8
    # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
    spring.redis.lettuce.pool.max-wait=-1
    # 连接池中的最大空闲连接 默认 8
    spring.redis.lettuce.pool.max-idle=8
    # 连接池中的最小空闲连接 默认 0
    spring.redis.lettuce.pool.min-idle=0
    

    3,自定义 redis 模板(如果使用 StringRedisTemplate, 这个模板可以不用配置 )

    /**
     * .默认模板只能使用字符串,即 RedisTemplate<String, String>
     * .自定义模板使其能更多样
     * @author huanggy
     *
     */
    @Configuration
    @AutoConfigureAfter(RedisAutoConfiguration.class)
    public class RedisCacheAutoConfiguration {
        @Bean
        public RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {
            RedisTemplate<String, Serializable> template = new RedisTemplate<>();
            template.setKeySerializer(new StringRedisSerializer());
            template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            template.setConnectionFactory(redisConnectionFactory);
            return template;
        }
    }

    4,测试

    @RestController
    @RequestMapping("/test")
    public class RedisController {
        
        @Autowired
        private StringRedisTemplate strRedis; // 操作字符串
        @Autowired
        private RedisTemplate<String, Serializable> redis; // 操作非字符串,比如对象
        
        @GetMapping("/str")
        public String testStr() {
            // 存入字符串
            strRedis.opsForValue().set("test1", "test1");
            // 取出字符串
            String str = strRedis.opsForValue().get("test1");
            return str;
        }
        
        @GetMapping("/obj")
        public String testObj() {
            // 必须实现 Serializable 接口
            User user = new User("李四", "女", new Date());
            // 存入对象
            redis.opsForValue().set("user1", user);
            // 取出对象
            User user1 = (User) redis.opsForValue().get("user1");
            return user1.toString();
        }
    }
  • 相关阅读:
    Android 内存泄漏原因
    Android Selector和Shape的用法
    Android 中的Activity、Window、View之间的关系
    Android Application 详细介绍
    深入理解Android异步消息处理机制
    利用图像识别技术解决非原生控件的定位问题
    一招让 IOS 自动化化快的飞起
    IOS 模拟器多开集成测试和那些坑
    利用UiWatchers 监听解决安卓自动化各种自动化各种非期待弹窗,弹层,升级,广告,对话框,来电等问题
    uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码
  • 原文地址:https://www.cnblogs.com/huanggy/p/9651311.html
Copyright © 2020-2023  润新知