redis学习笔记(二)JedisCluster + redis 3.2.5集群
来源:互联网 发布:linux vi 编辑 编辑:程序博客网 时间:2024/05/16 18:10
redis系列文章目录
- Redis 利用Hash存储节约内存
- Redis学习笔记(九)redis实现时时直播列表缓存,支持分页[热点数据存储]
- Redis学习笔记(八)redis之lua脚本学习
- Redis学习笔记(七)jedis超时重试机制注意事项
- Redis学习笔记(六)redis实现分布式锁
- Redis学习笔记(五)jedis(JedisCluster)操作Redis集群 redis-cluster
- redis学习笔记(四)缓存与数据库一致性问题
- redis学习笔记(三)数据淘汰策略
- redis学习笔记(二)JedisCluster + redis 3.2.5集群
- redis学习笔记(一)redis3.2.5集群安装与测试
开发环境
- jedis2.9.0
- redis3.2.5
- springboot 1.3.6.RELEASE
注意事项:本文搭建的redis配置了密码,所以jedis客户端要使用比较新的版本,老版本不支持密码,需要修改源码比较麻烦
环境搭建
- 引入jedis
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
- 注入
JedisCluster
bean
import com.le.luffi.media.common.Constant;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
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;
@Configuration
public class JedisClusterConfig {
@Bean
public JedisCluster getJedisCluster() {
String[] serverArray = Constant.REDIS_CACHE_CLUSTER_NODES.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())));
}
JedisCluster jedisCluster = new JedisCluster(nodes, Constant.REDIS_CACHE_COMMANDTIMEOUT, Constant.REDIS_CACHE_SOTIMEOUT, Constant.REDIS_CACHE_MAXATTEMPTS, Constant.REDIS_CACHE_CLUSTER_PASSWORD, new GenericObjectPoolConfig());
return jedisCluster;
}
}
- 创建
JedisTemplate
模板
```java
package com.le.luffi.media.redis;
import com.le.luffi.media.common.Constant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.JedisCluster;
@Component
public class JedisTemplate {
private static final Logger LOGGER = LoggerFactory.getLogger(JedisTemplate.class);
@Autowired
private JedisCluster jedisCluster;
private static final String KEY_SPLIT = ":"; //用于隔开缓存前缀与缓存键值
/**
* 设置缓存
* @param prefix 缓存前缀(用于区分缓存,防止缓存键值重复)
* @param key 缓存key
* @param value 缓存value
*/
public void set(String prefix, String key, String value) {
if(StringUtils.isBlank(prefix)) throw new IllegalArgumentException("prefix must not null!");
if(StringUtils.isBlank(key)) throw new IllegalArgumentException("key must not null!");
jedisCluster.set(prefix + KEY_SPLIT + key, value);
LOGGER.debug("RedisUtil:set cache key={},value={}", prefix + KEY_SPLIT + key, value);
}
/**
* 设置缓存,并且自己指定过期时间
* @param prefix
* @param key
* @param value
* @param expireTime 过期时间
*/
public void setWithExpireTime(String prefix, String key, String value, int expireTime) {
if(StringUtils.isBlank(prefix)) throw new IllegalArgumentException("prefix must not null!");
if(StringUtils.isBlank(key)) throw new IllegalArgumentException("key must not null!");
jedisCluster.setex(prefix + KEY_SPLIT + key, expireTime, value);
LOGGER.debug("RedisUtil:setWithExpireTime cache key={},value={},expireTime={}", prefix + KEY_SPLIT + key, value,
expireTime);
}
/**
* 设置缓存,并且由配置文件指定过期时间
* @param prefix
* @param key
* @param value
*/
public void setWithExpireTime(String prefix, String key, String value) {
if(StringUtils.isBlank(prefix)) throw new IllegalArgumentException("prefix must not null!");
if(StringUtils.isBlank(key)) throw new IllegalArgumentException("key must not null!");
// int EXPIRE_SECONDS = redisProperties.getExpireSeconds();
jedisCluster.setex(prefix + KEY_SPLIT + key, Constant.REDIS_CACHE_EXPIRESECONDS, value);
LOGGER.debug("RedisUtil:setWithExpireTime cache key={},value={},expireTime={}", prefix + KEY_SPLIT + key, value, Constant.REDIS_CACHE_EXPIRESECONDS);
}
/**
* 获取指定key的缓存
* @param prefix
* @param key
*/
public String get(String prefix, String key) {
if(StringUtils.isBlank(prefix)) throw new IllegalArgumentException("prefix must not null!");
if(StringUtils.isBlank(key)) throw new IllegalArgumentException("key must not null!");
String value = jedisCluster.get(prefix + KEY_SPLIT + key);
LOGGER.debug("RedisUtil:get cache key={},value={}", prefix + KEY_SPLIT + key, value);
return value;
}
/**
* 删除指定key的缓存
* @param prefix
* @param key
*/
public void deleteWithPrefix(String prefix, String key) {
if(StringUtils.isBlank(prefix)) throw new IllegalArgumentException("prefix must not null!");
if(StringUtils.isBlank(key)) throw new IllegalArgumentException("key must not null!");
jedisCluster.del(prefix + KEY_SPLIT + key);
LOGGER.debug("RedisUtil:delete cache key={}", prefix + KEY_SPLIT + key);
}
public void delete(String key) {
if(StringUtils.isBlank(key)) throw new IllegalArgumentException("key must not null!");
jedisCluster.del(key);
LOGGER.debug("RedisUtil:delete cache key={}", key);
}
}
4. controller简单测试
```java
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class RedisController {
@Autowired
private JedisTemplate jedisTemplate;
@RequestMapping("/testJedisCluster")
public void testJedisCluster(){
String username = "username";
String value = jedisTemplate.get(RedisConstants.LUFFI_LIVE_PREFIX, username);
if(StringUtils.isBlank(value)){
jedisTemplate.set(RedisConstants.LUFFI_LIVE_PREFIX, username, "lbl");
}
value = jedisTemplate.get(RedisConstants.LUFFI_LIVE_PREFIX, username);
System.out.println("value: " + value);
}
@RequestMapping("/deleteWithPrefix")
public void deleteWithPrefix(){
String username = "username";
jedisTemplate.deleteWithPrefix(RedisConstants.LUFFI_LIVE_PREFIX, username);
}
}
demo到此为止
- redis学习笔记(二)JedisCluster + redis 3.2.5集群
- Redis学习笔记(五)jedis(JedisCluster)操作Redis集群 redis-cluster
- redis集群JedisCluster优化
- JedisCluster 操作集群Redis
- redis集群客户端JedisCluster优化
- 使用jedisCluster操作Redis集群
- Springboot Redis分布式集群(4)- JedisCluster连接测试集群
- Redis学习--JedisCluster源码解读
- 学习Redis集群笔记
- redis学习笔记(二)
- Redis学习笔记(二)
- Redis学习笔记(二)
- Redis 学习笔记(二)
- redis学习笔记(二)
- redis学习笔记(二)
- Redis学习笔记(二)
- redis学习笔记(二)
- Redis 学习笔记4: Redis 3.2.1 集群搭建
- 设备树节点属性
- 第十六周项目一冒泡排序
- 安卓手机系统设置字体大小后与APP以及web端字体大小问题
- 哈希表一
- 日期在数据库的存储和取出
- redis学习笔记(二)JedisCluster + redis 3.2.5集群
- ldd nm strip strings readelf file查看信息
- 第16周项目1-验证算法(4)快速排序
- angularjs路由学习
- Android 判断 网络连接 Internet访问 工具类
- 第16周项目1-堆排序
- eclipse 与 jetty 结合的最佳实践
- win7下 eclipse 搭建 cocos2d-x 最佳实践 及 问题扫除
- 架构师