java中redis同时进行读与写_Redis主从实现读写分离

本文介绍了如何在Java应用中通过AOP(面向切面编程)实现Redis的读写分离,以减轻数据库压力。文章详细讲解了两种方法:一种是利用注解和动态链接池调配;另一种是依赖注入主从两个连接池。通过这种方式,可以灵活地在主库进行写操作,在从库进行读操作。
摘要由CSDN通过智能技术生成

前言

大家在工作中可能会遇到这样的需求,即Redis读写分离,目的是为了压力分散化。下面我将为大家介绍借助AWS的ELB实现读写分离,以写主读从为例。

实现

引用库文件

redis.clients

jedis

2.6.2

方式一,借助切面

JedisPoolSelector

此类的目的是为读和写分别配置不同的注解,用来区分是主还是从。

package com.silence.spring.redis.readwriteseparation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

/**

* Created by keysilence on 16/10/26.

*/

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface JedisPoolSelector {

String value();

}

JedisPoolAspect

此类的目的是针对主和从的注解,进行动态链接池调配,即主的使用主链接池,从的使用从连接池。

package com.silence.spring.redis.readwriteseparation;

import org.aspectj.lang.JoinPoint;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.aspectj.lang.annotation.Pointcut;

import org.aspectj.lang.reflect.MethodSignature;

import org.springframework.beans.BeansException;

import org.springframework.context.ApplicationContext;

import org.springframework.context.ApplicationContextAware;

import redis.clients.jedis.JedisPool;

import javax.annotation.PostConstruct;

import java.lang.reflect.Method;

import java.util.Date;

/**

* Created by keysilence on 16/10/26.

*/

@Aspect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值