使用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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界