redis cluster 集群配置

<!--    使用Redis作为缓存数据服务redis 集群模式-->
    <bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"  p:password="Aicc@123">
        <constructor-arg index="0">
            <bean class="org.springframework.data.redis.connection.RedisClusterConfiguration">
                <constructor-arg>
                    <list>
                        <value>35.22.1.86:6379</value>
                        <value>35.22.1.87:6379</value>
                        <value>35.22.1.88:6379</value>
                    </list>
                </constructor-arg>
                <property name="maxRedirects" value="5" />
            </bean>
        </constructor-arg>
        <constructor-arg index="1">
            <bean class="redis.clients.jedis.JedisPoolConfig">
                <property name="maxTotal" value="100"/>
                <property name="maxIdle" value="10"/>
                <property name="minIdle" value="1"/>
                <property name="maxWaitMillis" value="30000"/>
            </bean>
        </constructor-arg>
    </bean>

    <!-- 使用Redis作为缓存数据服务-->
<!--    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true"  p:host-name="130.1.14.82"  p:port="6380" p:password="123456" />-->
<!--         -->
    <bean id="redisTemplate" class="net.sf.liveSupport.cache.redis.SimpleRedisTemplate"
          p:connection-factory-ref="redisConnectionFactory" p:scope="xiaolinfuwu">
    </bean>

 

SimpleRedisTemplate 

package net.sf.liveSupport.cache.redis;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SessionCallback;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

public class SimpleRedisTemplate extends RedisTemplate<Object, Object> implements IRedisTemplate {
	private String scope;

	public SimpleRedisTemplate() {
		RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
		this.setKeySerializer(redisSerializer);
		this.setHashKeySerializer(redisSerializer);
	}
	
	public String getScope() {
		return scope + ".";
	}
	
    public void setScope(String scope) {
        this.scope = scope;
    }

	@Override
	public void set(String key, Object value) {
		this.opsForValue().set(key, value);
	}

	@Override
	public void set(String key, Object value, long ttl, TimeUnit timeUnit) {
		this.opsForValue().set(key, value, ttl, timeUnit);
	}

	@Override
	public Object get(String key) {
		return this.opsForValue().get(key);
	}

	@Override
	public List<Object> multiGet(Collection<Object> keys) {
		return this.opsForValue().multiGet(keys);
	}

	@Override
	public void multiSet(Map<? extends String, ?> map) {
		this.opsForValue().multiSet(map);
	}

	@Override
	public Boolean expire(Object key, long timeout, TimeUnit unit) {
		return super.expire(key, timeout, unit);
	}

	@Override
	public Boolean delete(Object key) {
		return super.delete(key);
	}

    @Override
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void putToList(final String key, final Object value) {
    	this.execute(new SessionCallback<List<Object>>() {
			public List<Object> execute(RedisOperations operations) throws DataAccessException {
				List<Object> result = null;
				do {
					operations.watch(key);
					List<Object> list = (List<Object>)operations.opsForValue().get(key);
					if (list == null) {
						list = new ArrayList<Object>();
					}
					list.add(value);
					operations.multi();
					operations.opsForValue().set(key, list);
					try {
						result = operations.exec();
					} catch (Exception e) {}
				} while (result == null);
				return result;
			}
        });
	}

    @Override
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public void removeFromList(final String key, final Object value) {
		this.execute(new SessionCallback<List<Object>>() {
			
			public List<Object> execute(RedisOperations operations) throws DataAccessException {
				List<Object> result = null;
				do {
					operations.watch(key);
					List<Object> list = (List<Object>)operations.opsForValue().get(key);
					if (list == null) {
						break;
					}
					list.remove(value);
					operations.multi();
					operations.opsForValue().set(key, list);
					try {
						result = operations.exec();
					} catch (Exception e) {}
				} while (result == null);
				return result;
			}
		});
	}


    @Override
	public <T> List<T> getList(String key, Class<T> type) {
		List<T> result = (List<T>)this.opsForValue().get(key);
		return result;
	}


    @Override
	public void saveForHash(String key, Object hashKey, Object value) {
		this.opsForHash().put(key, hashKey, value);
	}


    @Override
	public void removeForHash(String key, Object... hashKeys) {
		this.opsForHash().delete(key, hashKeys);
	}


    @Override
	public Object getForHash(String key, Object hashKey) {
		return this.opsForHash().get(key, hashKey);
	}


    @Override
	public Map<Object, Object> entriesForHash(String key) {
		return this.opsForHash().entries(key);
	}


    @Override
	public void putAllForHash(String key, Map<? extends Object, ? extends Object> m) {
		this.opsForHash().putAll(key, m);
	}


    @Override
	public String getCollectionName(String collectionName, String epid) {
		return this.getScope() + collectionName;
	}
	

    @Override
	public void addKey(String key, Object value) {
		this.opsForSet().add(key, value);
	}

    @Override
	public void removeKey(String key, Object value) {
		this.opsForSet().remove(key, value);
	}

	@Override
	public Set<Object> membersForKey(Object key) {
		return this.opsForSet().members(key);
	}

	@Override
	public void destroy() {
		
	}

	@Override
	public Set<Object> keys(String key) {
		return super.keys(key);
	}


	@Override
	public <T> T execute(SessionCallback<T> action) {
		return super.execute(action);
	}

	@Override
	public void restore(Object key, byte[] value, long timeToLive, TimeUnit unit) {

	}

	@Override
	public Boolean setIfAbsent(Object key, Object value) {
		return this.opsForValue().setIfAbsent(key, value);
	}

	@Override
	public Boolean setIfAbsent(Object key, Object value, long ttl, TimeUnit timeUnit) {
		return this.opsForValue().setIfAbsent(key, value, ttl, timeUnit);
	}

	@Override
	public Object getAndSet(Object key, Object value) {
		return this.opsForValue().getAndSet(key, value);
	}


}

 

IRedisTemplate
package net.sf.liveSupport.cache.redis;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.springframework.data.redis.core.SessionCallback;

public interface IRedisTemplate {
    String getScope();

    void set(String key, Object value);

    void set(String key, Object value, long ttl, TimeUnit timeUnit);

    Object get(String key);

    List<Object> multiGet(Collection<Object> keys);

    void multiSet(Map<? extends String, ?> map);

    Boolean expire(Object key, long timeout, TimeUnit unit);

    Boolean delete(Object key);

    Long delete(Collection<Object> keys);

    void putToList(final String key, final Object value);

    void removeFromList(final String key, final Object value);

    <T> List<T> getList(String key, Class<T> type);

    void saveForHash(String key, Object hashKey, Object value);

    void removeForHash(String key, Object... hashKeys);

    Object getForHash(String key, Object hashKey);

    Map<Object, Object> entriesForHash(String key);

    void putAllForHash(String key, Map<? extends Object, ? extends Object> m);

    String getCollectionName(String collectionName, String epid);

    void addKey(String key, Object value);

    void removeKey(String key, Object value);

    Set<Object> membersForKey(Object key);

    void destroy();


    /**
     * 微众的不支持
     */
    Set<Object> keys(String key);

    /**
     * 微众的不支持
     */
    <T> T execute(SessionCallback<T> action);

    Boolean setIfAbsent(Object key, Object value);

    Boolean setIfAbsent(Object key, Object value, long ttl, TimeUnit timeUnit);

    Object getAndSet(Object key, Object value);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值