基于redis存储的cuid生成策略

251 阅读1分钟

该示例是很久以前的学习demo,仅供参考

package com.hxkj.fsslr.core.utils;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.hxkj.fsslr.core.config.ConstantKey;
import com.hxkj.fsslr.entity.Comment;
import com.hxkj.fsslr.entity.DataCollect;
import com.hxkj.fsslr.entity.EnumType;
import com.hxkj.fsslr.entity.EnumValue;
import com.hxkj.fsslr.entity.FileCenter;
import com.hxkj.fsslr.entity.FileShare;
import com.hxkj.fsslr.entity.FileType;
import com.hxkj.fsslr.entity.FriendLink;
import com.hxkj.fsslr.entity.LabelCenter;
import com.hxkj.fsslr.entity.Log;
import com.hxkj.fsslr.entity.NavBar;
import com.hxkj.fsslr.entity.Question;
import com.hxkj.fsslr.entity.ShareData;
import com.hxkj.fsslr.entity.SysUser;
import com.hxkj.fsslr.entity.ThirdLogin;
import com.hxkj.fsslr.entity.WebsiteVisit;

/**
 * @ClassName: CuidUtils 
 * @Description: CUID工具类
 * @author huzhihui_c@qq.com
 * @date 2016年7月13日 下午5:47:00
 */
public class CuidUtils {

	private static Logger logger = LoggerFactory.getLogger(CuidUtils.class);
	private static Map<String,Integer> mapCuid = new Hashtable<>();
	private static final Map<String,String> mapCuidName = new HashMap<>();
	static{
		initCuidRedis();
	}
	
	/**
	 * @Title: getCuid 
	 * @Description:     得到全局唯一CUID
	 * @param b
	 * @return   
	 * @return String    
	 * @author huzhihui_c@qq.com
	 * @date 2016年7月14日 下午5:46:01
	 */
	@SuppressWarnings("unchecked")
	public synchronized static String getCuid(String className){
		mapCuid = (Map<String, Integer>) RedisUtils.get(ConstantKey.CUID_REDIS);
		mapCuid.put(className, mapCuid.get(className)+1);
		RedisUtils.save(ConstantKey.CUID_REDIS, mapCuid);
		return mapCuidName.get(className)+TimeUtils.getCuitPreTime()+mapCuid.get(className).toString();
	}
	
	/**
	 * @Title: initCuidRedis 
	 * @Description:  初始化redis保存cuid      
	 * @return void    
	 * @author huzhihui_c@qq.com
	 * @date 2016年7月20日 下午4:20:03
	 */
	private static void initCuidRedis(){
		mapCuid.put(Comment.class.getName(), 0);
		mapCuid.put(DataCollect.class.getName(), 0);
		mapCuid.put(EnumType.class.getName(), 0);
		mapCuid.put(EnumValue.class.getName(), 0);
		mapCuid.put(FileCenter.class.getName(), 0);
		mapCuid.put(FileShare.class.getName(), 0);
		mapCuid.put(FileType.class.getName(), 0);
		mapCuid.put(FriendLink.class.getName(), 0);
		mapCuid.put(LabelCenter.class.getName(), 0);
		mapCuid.put(Log.class.getName(), 0);
		mapCuid.put(NavBar.class.getName(), 0);
		mapCuid.put(Question.class.getName(), 0);
		mapCuid.put(ShareData.class.getName(), 0);
		mapCuid.put(SysUser.class.getName(), 0);
		mapCuid.put(ThirdLogin.class.getName(), 0);
		mapCuid.put(WebsiteVisit.class.getName(), 0);
		
		mapCuidName.put(Comment.class.getName(), "COMMENT");
		mapCuidName.put(DataCollect.class.getName(), "DATA_COLLECT");
		mapCuidName.put(EnumType.class.getName(), "ENUM_TYPE");
		mapCuidName.put(EnumValue.class.getName(), "ENUM_VALUE");
		mapCuidName.put(FileCenter.class.getName(), "FILE_CENTER");
		mapCuidName.put(FileShare.class.getName(), "FILE_SHARE");
		mapCuidName.put(FileType.class.getName(), "FILE_TYPE");
		mapCuidName.put(FriendLink.class.getName(), "FRIEND_LINK");
		mapCuidName.put(LabelCenter.class.getName(), "LABEL_CENTER");
		mapCuidName.put(Log.class.getName(), "LOG");
		mapCuidName.put(NavBar.class.getName(), "NAV_BAR");
		mapCuidName.put(Question.class.getName(), "QUESTION");
		mapCuidName.put(ShareData.class.getName(), "SHARE_DATA");
		mapCuidName.put(SysUser.class.getName(), "SYS_USER");
		mapCuidName.put(ThirdLogin.class.getName(), "THIRD_LOGIN");
		mapCuidName.put(WebsiteVisit.class.getName(), "WEBSITE_VISIT");
		
		if(!RedisUtils.exists(ConstantKey.CUID_REDIS)){
			logger.debug("----------:设置CUID_REDIS");
			RedisUtils.save(ConstantKey.CUID_REDIS, mapCuid);
		}else{
			logger.debug("----------:存在CUID_REDIS");
		}
	}
}