RedisTempalte 模板对象

RedisTempalte

  • 通过 RedisTemplate 调用 opsForXXX 方法获取操作对象
  • 或者调用 boundXXXOps 方法获取操作对象(建议)
  • 调用操作对象的方法进行数据操作

环境配置

redis.properties 配置

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

RedisConfiguration 配置

@PropertySource("classpath:redis.properties")
public class RedisConfiguration {

    @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;
    }
}

SpringConfiguration 配置

@Configuration
@ComponentScan("com.asaawan")
@Import(RedisConfiguration.class)
public class SpringConfiguration {
}

AccountServiceImpl 配置

@Service("accountService")
public class AccountServiceImpl implements AccountService {

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public void save(Account account) {
    }

    @Override
    public void changeMoney(Integer id, Double money) {
        //等同于redis中set account:id:1 100
        redisTemplate.opsForValue().set("account:id:"+id,money);
    }

    @Override
    public Double findMoneyById(Integer id) {
        //等同于redis中get account:id:1
        Object money = redisTemplate.opsForValue().get("account:id:" + id);
        return new Double(money.toString());
    }
}

常见方法

redisTemplate.type();
redisTemplate.persist();
redisTemplate.move();
redisTemplate.hasKey();
redisTemplate.getExpire();
redisTemplate.expire();
redisTemplate.delete();
redisTemplate.rename();
redisTemplate.opsForValue();
redisTemplate.opsForHash();
redisTemplate.opsForList();
redisTemplate.opsForSet();
redisTemplate.opsForZSet();
redisTemplate.boundValueOps();
redisTemplate.slaveOf();
redisTemplate.slaveOfNoOne();
redisTemplate.opsForCluster();
posted @ 2021-06-17 20:27  山奈  阅读(180)  评论(0)    收藏  举报