文档章节

springboot 集成redisCluster

素剑步青尘
 素剑步青尘
发布于 2018/09/02 08:57
字数 405
阅读 12
收藏 1

1.pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

2..application.yml

  redis:
    cache:
      clusterNodes: 
           127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384
      commandTimeout: 5000
      expireSeconds: 120

3. 配置属性 RedisProperties

package com.lkx.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Author likaixuan
 * @Description
 * @Create Date  2018/9/1 22:49
 * @Version 1.0
 */
@Component
@ConfigurationProperties(prefix = "spring.redis.cache")
public class RedisProperties {
    private int expireSeconds;
    private String clusterNodes;
    private int commandTimeout;

    public int getExpireSeconds() {
        return expireSeconds;
    }

    public void setExpireSeconds(int expireSeconds) {
        this.expireSeconds = expireSeconds;
    }

    public String getClusterNodes() {
        return clusterNodes;
    }

    public void setClusterNodes(String clusterNodes) {
        this.clusterNodes = clusterNodes;
    }

    public int getCommandTimeout() {
        return commandTimeout;
    }

    public void setCommandTimeout(int commandTimeout) {
        this.commandTimeout = commandTimeout;
    }
}

4.注入

package com.lkx.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

import java.util.HashSet;
import java.util.Set;

/**
 * @Author likaixuan
 * @Description
 * @Create Date  2018/9/1 22:46
 * @Version 1.0
 */
@Configuration
public class JedisClusterConfig {
    @Autowired
    private RedisProperties redisProperties;

    /**
     * 注意:
     * 这里返回的JedisCluster是单例的,并且可以直接注入到其他类中去使用
     * @return
     */
    @Bean
    public JedisCluster getJedisCluster() {
        String[] serverArray = redisProperties.getClusterNodes().split(",");//获取服务器数组(这里要相信自己的输入,所以没有考虑空指针问题)
        Set<HostAndPort> nodes = new HashSet<>();

        for (String ipPort : serverArray) {
            String[] ipPortPair = ipPort.split(":");
            nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
        }

        return new JedisCluster(nodes, redisProperties.getCommandTimeout());
    }

}

5.方法里面直接调用

package com.lkx.cache;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
import redis.clients.jedis.JedisCluster;

import java.util.concurrent.TimeUnit;

/**
 * @Author likaixuan
 * @Description
 * @Create Date  2018/9/1 12:18
 * @Version 1.0
 */
@Component
public class SeckillRedisCache {

    @Autowired
    private JedisCluster jedisCluster;

    /**
     * 读取缓存
     *
     * @param seckillId
     * @return
     */
    public int getSeckillCount(final Long seckillId) {
        Object result = null;
        result = jedisCluster.get("seckill:sec"+seckillId);
        if(result==null){
            return 0;
        }
        return Integer.parseInt(result.toString());
    }
    /**
     * 写入缓存
     *
     * @param seckillId
     * @param value
     * @return
     */
    public boolean setSeckillCount(final Long seckillId, String value) {
        boolean result = false;
        try {
            jedisCluster.set("seckillId:sec"+seckillId, value);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    /**
     * 写入缓存
     *
     * @param seckillId
     * @param value
     * @return
     */
    public boolean setSeckillCount(final Long seckillId, String value, Long expireTime) {
        boolean result = false;
        try {
            jedisCluster.set("seckill:sec"+seckillId,value,"nx","ex",expireTime);
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: mysql 修改密码
下一篇: lockback日志配置
素剑步青尘
粉丝 24
博文 63
码字总数 20647
作品 1
杭州
部门经理
私信 提问
Spring Boot + RedisCluster分布式问题

公司最近在做项目整改,框架用到了springboot,用redis做缓存,而且用rediscluster实现了redis的集群。如果做分布式,该怎么实现对redis操作的加锁解锁呢?问下各位大佬有什么比较好的方案?...

小虫625
2018/05/11
798
0
Springboot+RedisCluster配置+重写单机redis scan

Springboot配置RedisCLuster集群跟单机的玩法有很多不一样. 资源文件 redis:cache: 两个配置文件 @Component@Data@ConfigurationProperties(prefix = "redis.cache")public class RedisPrope......

算法之名
2018/10/07
0
0
JFinal 使用RedisCluster

@jFinal 如何集成RedisCluster

伟大可乐
2016/02/22
241
1
redis cluster jedis client 示例

redis cluster 基本的redis操作示例: JedisCluster jc = null; @Before public void before(){ Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>(); //Jedis Cluster will a......

zgw06629
2015/05/05
0
0
SpringBootBucket 2.0.4 发布,代号“傲娇的小二晶”

SpringBootBucket 自从1.0.0版本发布后就有好多人喜欢,目前码云上面star数量接近1.2k。上个月还收到了红薯签名的1000 star奖杯,这个我自己也觉得很惊讶。 由于SpringBoot 1.x官方将终止维护...

一刀
2018/09/16
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

CSS,JavaScript实现手风琴导航菜单

<!DOCTYPE html><html><head> <title>Side Navigator Demo</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <link re......

yuewawa
32分钟前
1
0
mysql 系统设置SQL

打开、关闭日志 SET GLOBAL general_log = 'Off'; SET GLOBAL general_log = 'On'; 查看日志是否打开 show variables like '%general%';...

jingshishengxu
今天
3
0
转行学大数据,如何选择如何学习大数据开发?

大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司。 现在已经...

董黎明
今天
5
0
RadosClient OSDC

RadosClient.h class librados::RadosClient : public Dispatcher//继承自Dispatcher(消息分发类){public: using Dispatcher::cct; md_config_t *conf;//配置文件private: ......

banwh
今天
3
0
如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部