使用spring的RedisTemplate操作redis队列

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;
    }

 

posted on 2022-07-13 11:04  IT-QI  阅读(722)  评论(0编辑  收藏  举报