标签:通过 tostring hashmap public json loading 安全 post content
文章根据创建时间排序,用户可以给文章分,影响排序,用户指定时间只能打一次分,不能重复打。文章支持分组
key定义
/** * content表的id生成器 * */ public final static String CONTENT_ID_GENERATOR="cs:id:generator:content"; /** * 数据key %s为数据id * hash */ public final static String CONTENT_KEY = "cs:content:%s"; /** * 维护各个group的数据 %s为groupId * zset */ public final static String GROUP_KEY = "cs:content:group:%s"; /** * 记录文章打分 后的排序文章排序 * zset */ public final static String CONTENT_SCORE_KEY = "cs:content:routing:score"; /** * 记录指定文章的用户打分记录 %s为文章id * zset */ public final static String CONTENT_VOTE_KEY = "cs:content:routing:score:%s"; /** * 记录所有文章的排序 创建时间排序 * zset */ public final static String CONTENT_SORT_KEY = "cs:content:routing:sort"; /** * 7天的秒数 86400位1天的秒数 */ public final static long ONE_WEEK_IN_SECONDS = 7 * 86400;
/** * 发布指定文章 * @param conn * @param title * @param content * @param link */ public static void postArticle(Jedis conn,String title,String content,String link){ Long contentId=conn.incr(CONTENT_ID_GENERATOR); //数据 hash key String key = String.format(CONTENT_KEY, contentId); Long now=System.currentTimeMillis(); HashMap<String,String> data=new HashMap<>(); data.put("id",contentId.toString()); data.put("title",title); data.put("content",content); data.put("link",link); data.put("votes","0"); //保存 数据 conn.hmset(key,data); //设置创建时间排序 conn.zadd(CONTENT_SORT_KEY,now,contentId.toString()); //设置打分排序 conn.zadd(CONTENT_SCORE_KEY,now+1,contentId.toString()); }
此处利用hash存储文章信息,并通过2个zset维护创建时间排序和打分排序 id使用redis.incr是原子性的 线程安全的
[{ "id": 1, "title": "我爱成都大熊猫", "content": "哈哈哈哈", "link": "wwww.baidu.com" }, { "id": 2, "title": "我爱广州小蛮腰", "content": "哈哈哈哈", "link": "wwww.baidu.com" } ]
/** * 将 指定文章分配到指定分组 * @param conn * @param contentId * @param group */ public static void addGroup(Jedis conn,Long contentId,String group){ conn.sadd(String.format(GROUP_KEY, group),contentId.toString()); }
通过set来保存组信息
如将添加文章的数据 分别新增2个广州文章专区和 成都文章专区
标签:通过 tostring hashmap public json loading 安全 post content
原文地址:https://www.cnblogs.com/LQBlog/p/13273511.html