组件的封装之Redis

因为在实习,没有的任何的工作经验,当首次接触的公司的项目,真的是一头雾水;各种组件的封装,真的使人奔溃;而现在已经实习了好几个月了,对各种业务稍微了解了一下,细细地看了一下封装组件的代码,其实也没有那么难,一句话总结是:重新调用一下原组件的方法。意思就是,写一个方法,然后调用原来组件提供的方法;相当于在原来的方法下多调用了一层。

下面进行详细的讲解:

我们对于Redis集群的操作通常来讲不会真正对应多个节点,而是由底层单独分片处理,换句话说我们应用程序对应的节点是一个,因此我们目前主要用的是JedisPool的方式,而很少会采用JedisCluster的方式。而我们主要是对Jedis客户端进行操作。至于不知道什么是Jedis,可以去官网的客户端看;或者可以参考一下(https://blog.csdn.net/meaijojo/article/details/82903553);下面直接进入主题:

一,组件封装:

1.1.1 首先新建一个maven项目,然后在pom文件加上Jedis的依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.1</version>
</dependency>
(注:这里版本不说明,现在好像最新的版本是3.0.1)

1.2.1 定义一个底层接口:

1.2.2 对底层接口的实现,调用Jedis的方法

1.3.1 定义一个缓存的调用接口

1.3.2 实现缓存接口,调用底层接口

上面已经是对组件方法进行了二次封装,对Redis方法的调用从get(byte[] b) 变成了get(String s);
1.4.1 然后下面是当把类交给Spring管理时,遇到相同的bean,spring容器该选择哪一个呢?这个可以了解一下@Primary注解,下面就是引用:

@Configuration
public class PluginCacheConfig {

    private static final Logger logger = LoggerFactory.getLogger(PluginCacheConfig.class);

    @Value("${redis.host}")
    private String host;

    @Value("${redis.port}")
    private int port;

    @Value("${redis.timeout}")
    private int timeout;

    @Value("${redis.pwd}")
    private String pwd;

    @Value("${redis.database:0}")
    private int database;


    @Value("${redis.pool.maxTotal}")
    private int poolMaxTotal;

    @Value("${redis.pool.maxIdle}")
    private int poolMaxIdle;

    @Value("${redis.pool.maxWaitMillis}")
    private int poolMaxWaitMillis;

    @Value("${redis.pool.testOnBorrow:false}")
    private boolean poolTestOnBorrow;

    @Value("${redis.pool.testOnReturn:false}")
    private boolean poolTestOnReturn;

    @Bean
    @Primary
    public JedisPoolConfig jedisPoolConfig() {
        printRedisConfig();

        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(poolMaxTotal);
        config.setMaxIdle(poolMaxIdle);
        config.setMaxWaitMillis(poolMaxWaitMillis);
        config.setTestOnBorrow(poolTestOnBorrow);
        config.setTestOnReturn(poolTestOnReturn);
        return config;
    }

    private void printRedisConfig() {
        logger.info("plugin-cache-config:redis:host:{}, port:{}, timeout:{}, pwd:{}, database:{}", host, port, timeout, pwd, database);
        logger.info("plugin-cache-config:reids:poolMaxTotal:{}, poolMaxIdle:{}, poolMaxWaitMillis:{}, poolTestOnBorrow:{}, poolTestOnReturn:{}", poolMaxTotal, poolMaxIdle, poolMaxWaitMillis, poolTestOnBorrow, poolTestOnReturn);
    }

    @Bean
    @Primary
    public JedisPool jedisPool() {
        return new JedisPool(jedisPoolConfig(), host, port, timeout, pwd, database);
    }

    @Bean
    @Primary
    public RedisManager redisManager() {
        RedisManager manager = new RedisManager();
        manager.setJedisPool(jedisPool());
        manager.setExpire(0);
        return manager;
    }

    @Bean
    @Primary
    public CacheClient cacheClient() {
        CacheClient cacheClient = new CacheClientImpl();
        cacheClient.setCacheManager(redisManager());
        return cacheClient;
    }
}

1.5.1 上面的所有步骤就是对Redis组件的进行了封装,下面给代码进行检测:

直接运行测试,看是否调通。

1.6.1 测试成功后,就可以直接去打jar包

 

二. 项目中的引用:

2.1.1 在项目里的pom文件直接导入依赖组件的jar包:

2.2.1 对封装组件接口的调用


 

上面有什么理解错误的地方,欢迎指正-_-!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值