java代码连接redis、分布式redis及配置

xiaoxiao2025-08-17  22

关于Redis

单个redis在java中的代码:

resources的mmall.properties的配置

连接redis获取jedis的RedisPool

public class RedisPool { private static JedisPool pool;//jedis连接池 private static Integer maxTotal = Integer.parseInt(PropertiesUtil.getProperty("redis.max.total","20")); //最大连接数 private static Integer maxIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","20"));//在jedispool中最大的idle状态(空闲的)的jedis实例的个数 private static Integer minIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","20"));//在jedispool中最小的idle状态(空闲的)的jedis实例的个数 private static Boolean testOnBorrow = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));//在borrow一个jedis实例的时候,是否要进行验证操作,如果赋值true。则得到的jedis实例肯定是可以用的。 private static Boolean testOnReturn = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","true"));//在return一个jedis实例的时候,是否要进行验证操作,如果赋值true。则放回jedispool的jedis实例肯定是可以用的。 private static String redisIp = PropertiesUtil.getProperty("redis.ip"); private static Integer redisPort = Integer.parseInt(PropertiesUtil.getProperty("redis.port")); private static void initPool(){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(maxTotal); config.setMaxIdle(maxIdle); config.setMinIdle(minIdle); config.setTestOnBorrow(testOnBorrow); config.setTestOnReturn(testOnReturn); config.setBlockWhenExhausted(true);//连接耗尽的时候,是否阻塞,false会抛出异常,true阻塞直到超时。默认为true。 pool = new JedisPool(config,redisIp,redisPort,1000*2); } static{ initPool(); } public static Jedis getJedis(){ return pool.getResource(); } public static void returnBrokenResource(Jedis jedis){ pool.returnBrokenResource(jedis); } public static void returnResource(Jedis jedis){ pool.returnResource(jedis); } public static void main(String[] args) { Jedis jedis = pool.getResource(); jedis.set("test","www"); returnResource(jedis); pool.destroy();//临时调用,销毁连接池中的所有连接 System.out.println("----end"); } }

RedisPoolUtil工具类

@Slf4j public class RedisPoolUtil { /** * 设置key的有效期,单位是秒 * @param key * @param exTime * @return */ public static Long expire(String key,int exTime){ Jedis jedis = null; Long result = null; try { jedis = RedisPool.getJedis(); result = jedis.expire(key,exTime); } catch (Exception e) { log.error("expire key:{} error",key,e); RedisPool.returnBrokenResource(jedis); return result; } RedisPool.returnResource(jedis); return result; } //exTime的单位是秒 public static String setEx(String key,String value,int exTime){ Jedis jedis = null; String result = null; try { jedis = RedisPool.getJedis(); result = jedis.setex(key,exTime,value); } catch (Exception e) { log.error("setex key:{} value:{} error",key,value,e); RedisPool.returnBrokenResource(jedis); return result; } RedisPool.returnResource(jedis); return result; } public static String set(String key,String value){ Jedis jedis = null; String result = null; try { jedis = RedisPool.getJedis(); result = jedis.set(key,value); } catch (Exception e) { log.error("set key:{} value:{} error",key,value,e); RedisPool.returnBrokenResource(jedis); return result; } RedisPool.returnResource(jedis); return result; } public static String get(String key){ Jedis jedis = null; String result = null; try { jedis = RedisPool.getJedis(); result = jedis.get(key); } catch (Exception e) { log.error("get key:{} error",key,e); RedisPool.returnBrokenResource(jedis); return result; } RedisPool.returnResource(jedis); return result; } public static Long del(String key){ Jedis jedis = null; Long result = null; try { jedis = RedisPool.getJedis(); result = jedis.del(key); } catch (Exception e) { log.error("del key:{} error",key,e); RedisPool.returnBrokenResource(jedis); return result; } RedisPool.returnResource(jedis); return result; } }

 

 

分布式的redis:

修改redis_2的端口(redis.windows.conf  /  redis.conf)

启动方式:Windows下

Linux下

 

 

resources的mmall.properties的配置

 

连接redis获取jedis的RedisShardedPool

public class RedisShardedPool { private static ShardedJedisPool pool;//sharded jedis连接池 private static Integer maxTotal = Integer.parseInt(PropertiesUtil.getProperty("redis.max.total","20")); //最大连接数 private static Integer maxIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","20"));//在jedispool中最大的idle状态(空闲的)的jedis实例的个数 private static Integer minIdle = Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","20"));//在jedispool中最小的idle状态(空闲的)的jedis实例的个数 private static Boolean testOnBorrow = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));//在borrow一个jedis实例的时候,是否要进行验证操作,如果赋值true。则得到的jedis实例肯定是可以用的。 private static Boolean testOnReturn = Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","true"));//在return一个jedis实例的时候,是否要进行验证操作,如果赋值true。则放回jedispool的jedis实例肯定是可以用的。 private static String redis1Ip = PropertiesUtil.getProperty("redis1.ip"); private static Integer redis1Port = Integer.parseInt(PropertiesUtil.getProperty("redis1.port")); private static String redis2Ip = PropertiesUtil.getProperty("redis2.ip"); private static Integer redis2Port = Integer.parseInt(PropertiesUtil.getProperty("redis2.port")); private static void initPool(){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(maxTotal); config.setMaxIdle(maxIdle); config.setMinIdle(minIdle); config.setTestOnBorrow(testOnBorrow); config.setTestOnReturn(testOnReturn); config.setBlockWhenExhausted(true);//连接耗尽的时候,是否阻塞,false会抛出异常,true阻塞直到超时。默认为true。 JedisShardInfo info1 = new JedisShardInfo(redis1Ip,redis1Port,1000*2); JedisShardInfo info2 = new JedisShardInfo(redis2Ip,redis2Port,1000*2); List<JedisShardInfo> jedisShardInfoList = new ArrayList<JedisShardInfo>(2); jedisShardInfoList.add(info1); jedisShardInfoList.add(info2); pool = new ShardedJedisPool(config,jedisShardInfoList, Hashing.MURMUR_HASH, Sharded.DEFAULT_KEY_TAG_PATTERN); } static{ initPool(); } public static ShardedJedis getJedis(){ return pool.getResource(); } public static void returnBrokenResource(ShardedJedis jedis){ pool.returnBrokenResource(jedis); } public static void returnResource(ShardedJedis jedis){ pool.returnResource(jedis); } public static void main(String[] args) { ShardedJedis jedis = pool.getResource(); for(int i =0;i<10;i++){ jedis.set("key"+i,"value"+i); } returnResource(jedis); // pool.destroy();//临时调用,销毁连接池中的所有连接 System.out.println("program is end"); } }

 

RedisShardedPoolUtil工具类

@Slf4j public class RedisShardedPoolUtil { /** * 设置key的有效期,单位是秒 * @param key * @param exTime * @return */ public static Long expire(String key,int exTime){ ShardedJedis jedis = null; Long result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.expire(key,exTime); } catch (Exception e) { log.error("expire key:{} error",key,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } //exTime的单位是秒 public static String setEx(String key,String value,int exTime){ ShardedJedis jedis = null; String result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.setex(key,exTime,value); } catch (Exception e) { log.error("setex key:{} value:{} error",key,value,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } public static String set(String key,String value){ ShardedJedis jedis = null; String result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.set(key,value); } catch (Exception e) { log.error("set key:{} value:{} error",key,value,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } public static String getSet(String key,String value){ ShardedJedis jedis = null; String result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.getSet(key,value); } catch (Exception e) { log.error("getset key:{} value:{} error",key,value,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } public static String get(String key){ ShardedJedis jedis = null; String result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.get(key); } catch (Exception e) { log.error("get key:{} error",key,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } public static Long del(String key){ ShardedJedis jedis = null; Long result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.del(key); } catch (Exception e) { log.error("del key:{} error",key,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } public static Long setnx(String key,String value){ ShardedJedis jedis = null; Long result = null; try { jedis = RedisShardedPool.getJedis(); result = jedis.setnx(key,value); } catch (Exception e) { log.error("setnx key:{} value:{} error",key,value,e); RedisShardedPool.returnBrokenResource(jedis); return result; } RedisShardedPool.returnResource(jedis); return result; } }

 

转载请注明原文地址: https://www.6miu.com/read-5034950.html

最新回复(0)