使用redis生成订单号
package com.shopping.app.util; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import redis.clients.jedis.*; import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.jedis.BinaryClient.LIST_POSITION; import redis.clients.util.SafeEncoder; @Service public class RedisManager { @Autowired @Qualifier("jedisPool") JedisPool jedisPool; private Logger log = Logger.getLogger(this.getClass()); /** 操作Key的方法 */ public Keys KEYS = new Keys(); /** 对存储结构为String类型的操作 */ public Strings STRINGS = new Strings(); /** 对存储结构为List类型的操作 */ public Lists LISTS = new Lists(); /** 对存储结构为Set类型的操作 */ public Sets SETS =new Sets(); /** 对存储结构为HashMap类型的操作 */ public Hash HASH = new Hash(); /** 对存储结构为Set(排序的)类型的操作 */ public SortSet SORTSET = new SortSet(); public Long orderId(String prefix){ Jedis jedis = jedisPool.getResource(); String key = "tl_order_id" + prefix; String orderId = null; try { Long index = jedis.incr(key); //00001 orderId = prefix + String.format("%1$05d", index); }catch(Exception e){ System.out.println("生成订单号异常"); }finally { if(null != jedis){ jedis.close(); } } return Long.valueOf(orderId); } }
package com.shopping.test; import com.shopping.app.util.RedisManager; import org.springframework.beans.factory.annotation.Autowired; import redis.clients.jedis.Jedis; import java.util.Calendar; import java.util.Date; public class Test { @Autowired RedisManager redisManager; public static String getOrderIDPrefix(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); int year = c.get(Calendar.YEAR); int day = c.get(Calendar.DAY_OF_YEAR); //从今天属于今年的第多少天?365 2位 3位 267 001 int hour = c.get(Calendar.HOUR_OF_DAY); String dayFmt = String.format("%1$03d", day); String hourFmt = String.format("%1$02d", hour); return (year - 2000) + dayFmt + hourFmt; }
}
String prefix= Test.getOrderIDPrefix(new Date()); System.out.println(prefix); String orderId=redisManager.orderId(prefix).toString(); System.out.println("生成的订单号:"+orderId);