redis哨兵模式整合spring boot

阅读: 评论:0

redis哨兵模式整合spring boot

redis哨兵模式整合spring boot

1、配置文件配置

spring:redis:password: 123456sentinel:master: mymaster #当前监控的名字nodes: 10.18.33.88:26379,10.18.33.88:36379,10.18.33.88:46379 #哨兵节点

2、创建配置类


import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import t.annotation.Bean;
import t.annotation.Configuration;
import org.tion.RedisConnectionFactory;
import org.tion.RedisNode;
import org.tion.RedisPassword;
import org.tion.RedisSentinelConfiguration;
import org.RedisTemplate;
import org.dis.serializer.Jackson2JsonRedisSerializer;
import org.dis.serializer.StringRedisSerializer;@Configuration
public class RedisConfigSentinel {@Value("${dis.sentinel.master}")private String sentinelMaster;@Value("${des}")private String sentinelNodes;@Value("${dis.password}")private String redisPassword;/*** 实例化哨兵配置* @return*/@Beanpublic RedisSentinelConfiguration sentinelConfiguration() {RedisSentinelConfiguration rsc = new RedisSentinelConfiguration();rsc.setMaster(sentinelMaster);rsc.setPassword(RedisPassword.of(redisPassword));String[] node = sentinelNodes.split(",");for (int i = 0; i < node.length; i++) {String[] add = node[i].split(":");RedisNode redisNode = new RedisNode(add[0], Integer.parseInt(add[1]));rsc.addSentinel(redisNode);}return rsc;}/*** 实例化 RedisTemplate 对象** @return*/@Bean("redisTemplate")public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory,RedisSentinelConfiguration sentinelConfiguration) {RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);// 使用Jackson2JsonRedisSerialize 替换默认序列化Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper objectMapper = new ObjectMapper();objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);ableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);// 设置value的序列化规则和 key的序列化规则redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();// 开启事物redisTemplate.setEnableTransactionSupport(false);return redisTemplate;}
}

3、创建redis 使用工具类

 


import org.springframework.beans.factory.annotation.Autowired;
import org.*;
import org.springframework.stereotype.Component;import java.io.Serializable;
import java.util.List;
import java.util.Set;
import urrent.TimeUnit;@Component
public class RedisUtils {@Autowiredprivate RedisTemplate redisTemplate;private static double size = Math.pow(2, 32);/*** 写入缓存** @param key* @param offset   位 8Bit=1Byte* @return*/public boolean setBit(String key, long offset, boolean isShow) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();operations.setBit(key, offset, isShow);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 写入缓存** @param key* @param offset* @return*/public boolean getBit(String key, long offset) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();result = Bit(key, offset);} catch (Exception e) {e.printStackTrace();}return result;}/*** 写入缓存** @param key* @param value* @return*/public boolean set(final String key, Object value) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();operations.set(key, value);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 写入缓存设置时效时间** @param key* @param value* @return*/public boolean set(final String key, Object value, Long expireTime) {boolean result = false;try {ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();operations.set(key, value);pire(key, expireTime, TimeUnit.SECONDS);result = true;} catch (Exception e) {e.printStackTrace();}return result;}/*** 批量删除对应的value** @param keys*/public void remove( keys) {for (String key : keys) {remove(key);}}/*** 删除对应的value** @param key*/public void remove(final String key) {if (exists(key)) {redisTemplate.delete(key);}}/*** 判断缓存中是否有对应的value** @param key* @return*/public boolean exists(final String key) {return redisTemplate.hasKey(key);}/*** 读取缓存** @param key* @return*/public Object get(final String key) {Object result = null;ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();result = (key);return result;}/*** 哈希 添加** @param key* @param hashKey* @param value*/public void hmSet(String key, Object hashKey, Object value) {HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();hash.put(key, hashKey, value);}/*** 哈希获取数据** @param key* @param hashKey* @return*/public Object hmGet(String key, Object hashKey) {HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();(key, hashKey);}/*** 列表添加** @param k* @param v*/public void lPush(String k, Object v) {ListOperations<String, Object> list = redisTemplate.opsForList();list.rightPush(k, v);}/*** 列表获取** @param k* @param l* @param l1* @return*/public List<Object> lRange(String k, long l, long l1) {ListOperations<String, Object> list = redisTemplate.opsForList();return list.range(k, l, l1);}/*** 集合添加** @param key* @param value*/public void add(String key, Object value) {SetOperations<String, Object> set = redisTemplate.opsForSet();set.add(key, value);}/*** 集合获取** @param key* @return*/public Set<Object> setMembers(String key) {SetOperations<String, Object> set = redisTemplate.opsForSet();bers(key);}/*** 有序集合添加** @param key* @param value* @param scoure*/public void zAdd(String key, Object value, double scoure) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();zset.add(key, value, scoure);}/*** 有序集合获取** @param key* @param scoure* @param scoure1* @return*/public Set<Object> rangeByScore(String key, double scoure, double scoure1) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();redisTemplate.opsForValue();return zset.rangeByScore(key, scoure, scoure1);}//第一次加载的时候将数据加载到redis中public void saveDataToRedis(String name) {double index = Math.abs(name.hashCode() % size);long indexLong = new Double(index).longValue();boolean availableUsers = setBit("availableUsers", indexLong, true);}//第一次加载的时候将数据加载到redis中public boolean getDataToRedis(String name) {double index = Math.abs(name.hashCode() % size);long indexLong = new Double(index).longValue();return getBit("availableUsers", indexLong);}/*** 有序集合获取排名** @param key 集合名称* @param value 值*/public Long zRank(String key, Object value) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();return zset.rank(key,value);}/*** 有序集合获取排名** @param key*/public Set<ZSetOperations.TypedTuple<Object>> zRankWithScore(String key, long start,long end) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();Set<ZSetOperations.TypedTuple<Object>> ret = zset.rangeWithScores(key,start,end);return ret;}/*** 有序集合添加** @param key* @param value*/public Double zSetScore(String key, Object value) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();return zset.score(key,value);}/*** 有序集合添加分数** @param key* @param value* @param scoure*/public void incrementScore(String key, Object value, double scoure) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();zset.incrementScore(key, value, scoure);}/*** 有序集合获取排名** @param key*/public Set<ZSetOperations.TypedTuple<Object>> reverseZRankWithScore(String key, long start,long end) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();Set<ZSetOperations.TypedTuple<Object>> ret = verseRangeByScoreWithScores(key,start,end);return ret;}/*** 有序集合获取排名** @param key*/public Set<ZSetOperations.TypedTuple<Object>> reverseZRankWithRank(String key, long start, long end) {ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();Set<ZSetOperations.TypedTuple<Object>> ret = verseRangeWithScores(key, start, end);return ret;}
}

4、建立测试

 


@Controller
@RequestMapping(value = "/test1")
public class TestController {@Autowiredprivate RedisUtils redisUtils;@RequestMapping(value = "/toStr")@ResponseBodypublic String getStr() {redisUtils.set("key","test");System.out.("key"));return "str";}}

 

本文发布于:2024-02-02 03:30:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170681687741089.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:哨兵   模式   redis   spring   boot
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23