十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
springboot中如何接入cachecloudredis,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站设计、山阳网络推广、小程序设计、山阳网络营销、山阳企业策划、山阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供山阳建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
java项目中 接入 CacheCloud redis的方式主要有两种。
第一种就是在 CacheCloud 上创建好redis实例后将对应的IP,端口直接配置以配置形式应用到项目中,优点是通用性好,原有项目改造成本低,不过万一后期CacheCloud上对redis进行管理扩容,那只能手动把每个项目的redis配置都改一遍了。
第二种CacheCloud 上创建好实例后有一个对应的appId,程序调用CacheCloud 平台的rest接口通过 appId获取redis相关配置,将程序中的redis配置 统一交给CacheCloud平台去管理维护,后期管理和扩容及其方便,不过程序改造成本比较高。
现在采用第二种方式接入,工程采用springboot,redis采用哨兵模式,redis客户端主要用spring-data-redis和redisson, 接入流程如下:
添加配置到pom.xml文件
准备配置文件 cacheCloudClient.properties,启动项目时 VM参数追加 -Dcachecloud.config= 配置文件路径
http_conn_timeout = 3000http_socket_timeout = 5000client_version = 1.0-SNAPSHOTdomain_url = http://192.168.33.221:8585 #cachecloud实际路径redis_cluster_suffix = /cache/client/redis/cluster/%s.json?clientVersion=redis_sentinel_suffix = /cache/client/redis/sentinel/%s.json?clientVersion=redis_standalone_suffix = /cache/client/redis/standalone/%s.json?clientVersion=cachecloud_report_url = /cachecloud/client/reportData.json
基本思路是先通过cachecloud的restapi接口获取并解析redis节点的配置信息,然后就可以按照传统的访问redis的方式进行初始化,获取RedisTemplate对象。
java代码如下:
import com.alibaba.fastjson.JSONObject;import com.sohu.tv.cachecloud.client.basic.heartbeat.ClientStatusEnum;import com.sohu.tv.cachecloud.client.basic.util.ConstUtils;import com.sohu.tv.cachecloud.client.basic.util.HttpUtils;import com.sohu.tv.cachecloud.client.jedis.stat.ClientDataCollectReportExecutor;import lombok.Getter;import lombok.Setter;import org.apache.commons.lang3.tuple.Pair;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component; import javax.annotation.PostConstruct;import java.util.HashSet;import java.util.Random;import java.util.Set;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock; @Componentpublic class RedisProperties { public static Logger logger = LoggerFactory.getLogger(RedisProperties.class); /** * 构建锁 */ private static final Lock LOCK = new ReentrantLock(); @Value("${cacheCloud.appId}") //cahcecloud 开通redis实例 应用id private Integer appId; @Getter @Setter private String masterName; @Getter @Setter private Set
import com.shunwang.buss.dispatchPay.provider.config.PropertiesUtil;import org.apache.commons.lang3.StringUtils;import org.redisson.Redisson;import org.redisson.api.RedissonClient;import org.redisson.config.Config;import org.redisson.config.ReadMode;import org.redisson.config.SentinelServersConfig;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.RedisNode;import org.springframework.data.redis.connection.RedisSentinelConfiguration;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;import redis.clients.jedis.JedisPoolConfig; import java.net.UnknownHostException;import java.util.List;import java.util.Set;import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; @Configurationpublic class RedisConfig { /** * JedisPoolConfig 连接池 */ @Bean public JedisPoolConfig jedisPoolConfig(RedisProperties properties) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 最大空闲数 jedisPoolConfig.setMaxIdle(20); // 连接池的最大数据库连接数 jedisPoolConfig.setMaxTotal(20); // 最大建立连接等待时间 jedisPoolConfig.setMaxWaitMillis(3000); return jedisPoolConfig; } /** * 配置redis的哨兵 */ @Bean public RedisSentinelConfiguration sentinelConfiguration(RedisProperties properties) { RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(); // 配置redis的哨兵sentinel Set
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。