package org.tio.sitexxx.web.server.init;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.tio.utils.jfinal.P;
import redis.clients.jedis.JedisPoolConfig;
/**
* @ClassName RedisTemplateInit
* @Description TODO
* @Author admin
* @@Date 2022/7/13 10:01
* @Version V1.0
*/
public class RedisTemplateInit {
@SuppressWarnings("unused")
private static Logger log = LoggerFactory.getLogger(RedisTemplateInit.class);
/*private static RedisTemplate<String, Object> redisTemplate;
public static RedisTemplate redis;
public static void init() {
init(true);
}*/
public static JedisPoolConfig init() {
JedisPoolConfig jedisPoolConfig = new redis.clients.jedis.JedisPoolConfig();
jedisPoolConfig.setMaxTotal(1024);
jedisPoolConfig.setMaxIdle(100);
jedisPoolConfig.setMinEvictableIdleTimeMillis(50000);
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(20000);
jedisPoolConfig.setNumTestsPerEvictionRun(-1);
jedisPoolConfig.setSoftMinEvictableIdleTimeMillis(10000);
jedisPoolConfig.setMaxWaitMillis(1000);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestWhileIdle(true);
jedisPoolConfig.setTestOnReturn(false);
jedisPoolConfig.setJmxEnabled(true);
jedisPoolConfig.setJmxNamePrefix("pool");
jedisPoolConfig.setBlockWhenExhausted(false);
return jedisPoolConfig;
}
/**1.配置连接池参数*/
public static JedisPoolConfig getPoolConfig(){
JedisPoolConfig jedisPoolConfig = new redis.clients.jedis.JedisPoolConfig();
jedisPoolConfig.setMaxTotal(1024);
jedisPoolConfig.setMaxIdle(100);
jedisPoolConfig.setMinEvictableIdleTimeMillis(50000);
jedisPoolConfig.setTimeBetweenEvictionRunsMillis(20000);
jedisPoolConfig.setNumTestsPerEvictionRun(-1);
jedisPoolConfig.setSoftMinEvictableIdleTimeMillis(10000);
jedisPoolConfig.setMaxWaitMillis(1000);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestWhileIdle(true);
jedisPoolConfig.setTestOnReturn(false);
jedisPoolConfig.setJmxEnabled(true);
jedisPoolConfig.setJmxNamePrefix("pool");
jedisPoolConfig.setBlockWhenExhausted(false);
return jedisPoolConfig;
}
/**2.获取连接工厂*/
public static JedisConnectionFactory getConnectionFactory(JedisPoolConfig poolConfig){
String host=P.get("redis.ip");
Integer port=P.getInt("redis.port");
String pwd=P.get("redis.password");
JedisConnectionFactory jedisConnetFactory = new JedisConnectionFactory();
jedisConnetFactory.setPoolConfig(poolConfig);
jedisConnetFactory.setHostName(host);
jedisConnetFactory.setPort(port);
jedisConnetFactory.setPassword("");
/**必须执行这个函数,初始化JedisConnectionFactory*/
jedisConnetFactory.afterPropertiesSet();
return jedisConnetFactory;
}
/**3.获取RedisTemplate实例*/
public static RedisTemplate getRedisTemplate(JedisConnectionFactory connectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(connectionFactory);
StringRedisSerializer serializer = new StringRedisSerializer();
redisTemplate.setDefaultSerializer(serializer);
redisTemplate.setKeySerializer(serializer);
redisTemplate.setValueSerializer(serializer);
/**必须执行这个函数,初始化RedisTemplate*/
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
/**
* 消息监听:前后台配置信息通道
*//*
public static void init(boolean isFrontend) {
RedisTemplateInit.redis=this.redisTemplate;
}
public static RedisTemplate get() {
return redis=this.redisTemplate();
}*/
}
public class RedisTemplateClient {
/**redis服务ip*/
public static final String hostName = "127.0.0.1";
/**redis服务端口*/
public static final int port = 6379;
/**队列名称*/
public static final String template_Queue = "TEMPLATE_QUEUE";
/**测试数据*/
public static final String data = getData();
public static void main(String [] args) throws InterruptedException{
/**1.配置连接池参数*/
JedisPoolConfig poolConfig =getPoolConfig();
/**2.获取连接工厂*/
JedisConnectionFactory connectionFactory = getConnectionFactory(poolConfig);
/**3.获取RedisTemplate实例*/
RedisTemplate redisTemplate = getRedisTemplate(connectionFactory);
System.out.println("测试开始......");
System.out.println("队列写入数据:");
System.out.println(data);
/**获取RedisTemplate操作方式*/
ListOperations operation = redisTemplate.opsForList();
operation.leftPush(template_Queue, data);
System.out.println("主线程休眠10秒......");
Thread.sleep(10000);
Object strJson = operation.rightPop(template_Queue,10, TimeUnit.SECONDS);
System.out.println("队列读出数据:");
System.out.println(strJson);
System.out.println("测试结束......");
}
/**获取JSON数据字符串*/
public static String getData(){
String data= "{\n" +
" \"AREA_CODE\": \"0592\",\n" +
" \"AREA_NUMBER\": \"350200\",\n" +
" \"CITY_NAME\": \"厦门\",\n" +
" \"DESCRIBE\": \"适合居住\",\n" +
" \"POSTAL_CODE\": \"361000\"\n" +
"}";
return data;
}