Spirng整合RedisTemplate

redis

redis是一款开源的key-value数据库,是有c语言编写,运行在内存中,企业开发中通常使用redis来实现缓存。

Jedis

Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用。

Spring Data Redis

Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装。

spring Data Redis针对Jedis提供了以下功能。

  1. 连接池自动管理,提供了一个高度封装的“RedisTemplate”类
  2. 针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
    • ValueOperations:简单的k-v的string类型操作
    • SetOperations:set数据类型的操作
    • ZSetOperations:zset类型数据操作
    • HashOperations:针对map数据类型的操作
    • ListOperations:针对list数据类型的操作。

RedisTemplate的配置

  1. 导入依赖

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
        <version>2.0.6.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>
    
  2. 编写properties配置文件

    # redis服务器主机地址
    redis.host=192.168.xxx.xxx
    #redis服务器主机端口
    redis.port=6379
    
    #redis服务器登录密码
    #redis.password=root
    
    #最大活动连接
    redis.maxActive=20
    #最大空闲连接
    redis.maxIdle=10
    #最小空闲连接
    redis.minIdle=0
    #最大等待时间
    redis.maxWait=-1
    
  3. 配置RedisTemplate类到Spring容器

    /**
     * 引入properties配置文件
     */
    @PropertySource("redis.properties")
    public class RedisConfig {
    
        @Value("${redis.host}")
        private String hostName;
    
        @Value("${redis.port}")
        private Integer port;
    
    //    @Value("${redis.password}")
    //    private String password;
    
        @Value("${redis.maxActive}")
        private Integer maxActive;
        @Value("${redis.minIdle}")
        private Integer minIdle;
        @Value("${redis.maxIdle}")
        private Integer maxIdle;
        @Value("${redis.maxWait}")
        private Integer maxWait;
    
    
    
        @Bean
        //配置RedisTemplate
        public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory){
            //1.创建对象
            RedisTemplate redisTemplate = new RedisTemplate();
            //2.设置连接工厂
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            //3.设置redis生成的key的序列化器,对key编码进行处理
            RedisSerializer stringSerializer = new StringRedisSerializer();
            redisTemplate.setKeySerializer(stringSerializer);
            redisTemplate.setHashKeySerializer(stringSerializer);
            //4.返回
            return redisTemplate;
        }
    
        @Bean
        //配置Redis连接工厂
        public RedisConnectionFactory createRedisConnectionFactory(RedisStandaloneConfiguration redisStandaloneConfiguration,GenericObjectPoolConfig genericObjectPoolConfig){
            //1.创建配置构建器,它是基于池的思想管理Jedis连接的
            JedisClientConfiguration.JedisPoolingClientConfigurationBuilder builder = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder)JedisClientConfiguration.builder();
            //2.设置池的配置信息对象
            builder.poolConfig(genericObjectPoolConfig);
            //3.创建Jedis连接工厂
            JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration,builder.build());
            //4.返回
            return jedisConnectionFactory;
        }
    
        @Bean
        //配置spring提供的Redis连接池信息
        public GenericObjectPoolConfig createGenericObjectPoolConfig(){
            //1.创建Jedis连接池的配置对象
            GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
            //2.设置连接池信息
            genericObjectPoolConfig.setMaxTotal(maxActive);
            genericObjectPoolConfig.setMinIdle(minIdle);
            genericObjectPoolConfig.setMaxIdle(maxIdle);
            genericObjectPoolConfig.setMaxWaitMillis(maxWait);
            //3.返回
            return genericObjectPoolConfig;
        }
    
    
        @Bean
        //配置Redis标准连接配置对象
        public RedisStandaloneConfiguration createRedisStandaloneConfiguration(){
            //1.创建Redis服务器配置信息对象
            RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
            //2.设置Redis服务器地址,端口和密码(如果有密码的话)
            redisStandaloneConfiguration.setHostName(hostName);
            redisStandaloneConfiguration.setPort(port);
    //        redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
            //3.返回
            return redisStandaloneConfiguration;
        }
    
    }
    
  4. 在Spring配置类中引入此配置文件类

    @Configuration
    @ComponentScan("com.itheima")
    @Import(RedisConfig.class)
    public class SpringConfig {
    }
    
    
  5. 使用测试类

    public class App {
        public static void main(String[] args) {
            ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
            RedisTemplate rt = context.getBean(RedisTemplate.class);
    
            //添加数据
            rt.opsForValue().set("name", "不知火舞");
    
            //根据key获取数据
            Object value = rt.opsForValue().get("name");
    
            //打印数据
            System.out.println(value.toString());
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值