java操作redis集群配置[可配置密码]和工具类
java操作redis集群配置[可配置密码]和工具类
- <dependency>
- <groupId>redis.clients</groupId>
- <artifactId>jedis</artifactId>
- <version>2.9.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-pool2</artifactId>
- <version>2.4.2</version>
- </dependency>
版本:jedis2.9.0[此版本可以加入密码配置]+commons-pools2.4.2
配置:
<context:property-placeholder ignore-unresolvable="true" location="classpath*:cache.properties"/>
- <!-- 连接池配置 -->
- <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">
- <!-- 最大连接数 -->
- <property name="maxTotal" value="150" />
- <!-- 最大空闲连接数 -->
- <property name="maxIdle" value="50" />
- <!-- 最小空闲连接数 -->
- <property name="minIdle" value="10" />
- <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
- <property name="maxWaitMillis" value="3000" />
- <!-- 每次释放连接的最大数目 -->
- <property name="numTestsPerEvictionRun" value="100" />
- <!-- 释放连接的扫描间隔(毫秒) -->
- <property name="timeBetweenEvictionRunsMillis" value="3000" />
- <!-- 连接最小空闲时间 -->
- <property name="minEvictableIdleTimeMillis" value="1800000" />
- <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
- <property name="softMinEvictableIdleTimeMillis" value="10000" />
- <!-- 在获取连接的时候检查有效性, 默认false -->
- <property name="testOnBorrow" value="true" />
- <!-- 在空闲时检查有效性, 默认false -->
- <property name="testWhileIdle" value="true" />
- <!-- 在归还给pool时,是否提前进行validate操作 -->
- <property name="testOnReturn" value="true" />
- <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
- <property name="blockWhenExhausted" value="false" />
- </bean>
- <!-- jedis集群版配置 -->
- <bean id="hostport1" class="redis.clients.jedis.HostAndPort">
- <constructor-arg name="host" value="${redis.host}"/>
- <constructor-arg name="port" value="${redis.port1}"/>
- </bean>
- <bean id="hostport2" class="redis.clients.jedis.HostAndPort">
- <constructor-arg name="host" value="${redis.host}"/>
- <constructor-arg name="port" value="${redis.port2}"/>
- </bean>
- <bean id="hostport3" class="redis.clients.jedis.HostAndPort">
- <constructor-arg name="host" value="${redis.host}"/>
- <constructor-arg name="port" value="${redis.port3}"/>
- </bean>
- <bean id="hostport4" class="redis.clients.jedis.HostAndPort">
- <constructor-arg name="host" value="${redis.host}"/>
- <constructor-arg name="port" value="${redis.port4}"/>
- </bean>
- <bean id="hostport5" class="redis.clients.jedis.HostAndPort">
- <constructor-arg name="host" value="${redis.host}"/>
- <constructor-arg name="port" value="${redis.port5}"/>
- </bean>
- <bean id="hostport6" class="redis.clients.jedis.HostAndPort">
- <constructor-arg name="host" value="${redis.host}"/>
- <constructor-arg name="port" value="${redis.port6}"/>
- </bean>
- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
- <constructor-arg name="jedisClusterNode">
- <set>
- <ref bean="hostport1"/>
- <ref bean="hostport2"/>
- <ref bean="hostport3"/>
- <ref bean="hostport4"/>
- <ref bean="hostport5"/>
- <ref bean="hostport6"/>
- </set>
- </constructor-arg>
- <constructor-arg name="connectionTimeout" value="2000"/>
- <constructor-arg name="soTimeout" value="2000"/>
- <constructor-arg name="maxAttempts" value="3"/>
- <constructor-arg name="password" value="${redis.clusterpassword}"/>
- <constructor-arg name="poolConfig">
- <ref bean="jedisConfig"/>
- </constructor-arg>
- </bean>
- <bean id="jedisClientCluster" class="xx.xxx.xxxxx.xxxx.xxxx.JedisClientCluster"></bean>
创建cache.properties:
redis.host =192.168.xx.xxx
redis.port1=7001
redis.port2=7002
redis.port3=7003
redis.port4=7004
redis.port5=7005
redis.port6=7006
redis.clusterpassword=xxxxxxx
创建接口JedisClient:
- import org.codehaus.jackson.type.TypeReference;
- import java.util.List;
- /**
- * Created by gzy on 2017/11/17 17:16.
- */
- public interface JedisClient {
- String get(String key);
- <T> T get(String key, TypeReference<T> clazz);
- <T> T get(String key, Class<T> clazz);
- String get(String key, int select);
- void setAndExpire(String key, Object o, int expire);
- Long rpush(String key, String string);
- // Long del(String... keys);
- Long lpush(String key, String string);
- void set(String key, Object o);
- String set(String key, String value);
- String hget(String hkey, String key);
- long hset(String hkey, String key, String value);
- long incr(String key);
- long expire(String key, int second);
- long ttl(String key);
- long del(String key);
- long hdel(String hkey, String key);
- Boolean exists(String key);
- Long decr(String key);
- List<String> brpop(int timeout, String key);
- }
jedisClient实现类JedisClientCluster:
- /**
- * Created by gzy on 2017/11/17 17:17.
- */
- import org.codehaus.jackson.type.TypeReference;
- import com.thinkgem.jeesite.common.utils.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import redis.clients.jedis.JedisCluster;
- import java.util.List;
- public class JedisClientCluster implements JedisClient {
- @Autowired
- private JedisCluster jedisCluster;
- public <T> T get(String key, TypeReference<T> clazz) {
- String json = jedisCluster.get(key);
- if (StringUtils.isNotEmpty(json)) {
- return JsonUtil.Json2Object(json, clazz);
- } else {
- return null;
- }
- }
- public <T> T get(String key, Class<T> clazz) {
- String json = jedisCluster.get(key);
- if (StringUtils.isNotEmpty(json)) {
- return JsonUtil.Json2Object(json, clazz);
- } else {
- return null;
- }
- }
- public void set(String key, Object o) {
- String json = JsonUtil.Object2Json(o);
- jedisCluster.set(key, json);
- }
- public void setAndExpire(String key, Object o, int expire) {
- String json = JsonUtil.Object2Json(o);
- jedisCluster.set(key, json);
- jedisCluster.expire(key, expire);
- }
- // public long del(String key) {
- // return jedisCluster.del(key);
- // }
- public String get(String key) {
- return jedisCluster.get(key);
- }
- public String get(String key, int select) {
- jedisCluster.select(select);
- return jedisCluster.get(key);
- }
- @Override
- public String set(String key, String value) {
- return jedisCluster.set(key, value);
- }
- @Override
- public String hget(String hkey, String key) {
- return jedisCluster.hget(hkey, key);
- }
- @Override
- public long hset(String hkey, String key, String value) {
- return jedisCluster.hset(hkey, key, value);
- }
- @Override
- public long incr(String key) {
- return jedisCluster.incr(key);
- }
- public Long decr(String key) {
- return jedisCluster.decr(key);
- }
- @Override
- public long expire(String key, int second) {
- return jedisCluster.expire(key, second);
- }
- @Override
- public long ttl(String key) {
- return jedisCluster.ttl(key);
- }
- @Override
- public long del(String key) {
- return jedisCluster.del(key);
- }
- @Override
- public long hdel(String hkey, String key) {
- return jedisCluster.hdel(hkey, key);
- }
- public Long rpush(String key, String string) {
- return jedisCluster.rpush(key, string);
- }
- public Long lpush(String key, String string) {
- return jedisCluster.lpush(key, string);
- }
- public Boolean exists(String key) {
- return jedisCluster.exists(key);
- }
- public List<String> brpop(int timeout, String key) {
- return jedisCluster.brpop(timeout, key);
- }
- }
创建测试类ClusterTest:
- import xx.xx.xxx.xxxx.JedisClient;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- /**
- * Created by gzy on 2017/11/20 15:22.
- */
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration("classpath:spring-context-cache.xml")
- public class ClusterTest {
- // private static JedisClientCluster redisCluster = SpringContextHolder.getBean("jedisClientCluster");
- @Autowired
- private JedisClient jedisClient;
- @Test
- public void testJCluster() {
- jedisClient.set("test:phone:" + "11111111","hhha");
- String result = jedisClient.get("test:phone:" + "11111111")
- System.out.println("result==="+result)
- }}
原文地址: https://blog.csdn.net/gzy_0922/article/details/78602716
注意:Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
java操作redis集群配置[可配置密码]和工具类的更多相关文章
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- Java操作 Redis 集群
// 连接redis集群 @Test public void testJedisCluster() { JedisPoolConfig config = new JedisPoolConfig(); ...
- Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置
Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...
- python 操作redis集群
一.连接redis集群 python的redis库是不支持集群操作的,推荐库:redis-py-cluster,一直在维护.还有一个rediscluster库,看GitHub上已经很久没更新了. 安装 ...
- Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
- 转:Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
- redis集群(主从配置)
市面上太多kv的缓存,最常用的就属memcache了,但是memcache存在单点问题,不过小日本有复制版本,但是使用的人比较少,redis的出现让kv内存存储的想法成为现实.今天主要内容便是redi ...
- Java连接redis集群操作存储、删除以及获取值
pom文件添加: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> &l ...
- Redis集群创建和配置
1.检查GCC是否安装,可以看看版本号 gcc -v 安装命令:yum install gcc-c++ 2.安装Ruby和Rubygems 如果有网的话,则通过yum命令进行安装,自动将关联的依赖包全 ...
随机推荐
- What is 软件工程
话说新的一学期,有一门叫软件工程的专业课,作为计算机科学与技术专业的学生,在上课前有几个问题 1.软件工程顾名思义是学软件,可是软件这个词范围还是挺大的,那到底学的是哪方面,是编程?设计APP?还是一 ...
- [BUAA_SE_2017]案例分析-Week3
Week3 案例分析 一.调研评测 案例: 神策数据的数据概览功能 Demo: 电商类产品Demo 评价: d) 好,不错 个人评价:神策数据电商类产品Demo的数据概览功能是相当不错的.首先点击进入 ...
- MYSQL INDEX BTREE HASH
https://dev.mysql.com/doc/refman/5.6/en/index-btree-hash.html 译文:http://itindex.net/detail/54241-tre ...
- Failed while installing JAX-RS (REST Web Services) 1.1. org.osgi.service.prefs.BackingStoreException: Resource '/.settings' does not exist.
https://issues.jboss.org/browse/JBIDE-10039?_sscc=t https://stackoverflow.com/questions/16836832/fai ...
- 解决AJAX应用,会话超时(Session Timeout)的问题,粗略方法(不考虑使用Filter的前提下)
function ajaxPost(url, data) { var async = false; var result = {}; $.ajax({ url : url, async : async ...
- jq源码解析之绑在$,jQuery上面的方法
1.当我们用$符号直接调用的方法.在jQuery内部是如何封装的呢?有没有好奇心? // jQuery.extend 的方法 是绑定在 $ 上面的. jQuery.extend( { //expand ...
- linux_目录基本操作
ls命令 ls命令用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件. 语法 $ ls [选项] [目录] 选项 说明 -a 显示所有档案 ...
- number (2)变量相关错误
变量没有被定义 fw cannot be resolved 变量没有被初始化 正确代码 package com.itheima_01; import java.io.FileWriter;import ...
- python格式化字符串Type Error: Format Requires Mapping 的问题
最近几天 频繁看到有这种写法 BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s" 第一次看到的pythoner看到可能会有点懵逼 ...
- JavaScript——闭包机制
闭包机制是JavaScript的重点和难点,本文希望能帮助大家轻松的学习闭包 一.什么是闭包? 闭包就是可以访问另一个函数作用域中变量的函数.下面列举出常见的闭包实现方式,以例子讲解闭包概念 func ...