文章根据创建时间排序,用户可以给文章分,影响排序,用户指定时间只能打一次分,不能重复打。文章支持分组

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是原子性的 线程安全的

数据json

[{
    "id": 1,
    "title": "我爱成都大熊猫",
    "content": "哈哈哈哈",
    "link": "wwww.baidu.com"
},
{
    "id": 2,
    "title": "我爱广州小蛮腰",
    "content": "哈哈哈哈",
    "link": "wwww.baidu.com"
}
]
View Code

相关文章:

  • 2021-05-26
  • 2021-07-03
  • 2021-06-01
  • 2021-06-12
  • 2021-07-05
  • 2022-12-23
  • 2021-10-25
  • 2021-12-21
猜你喜欢
  • 2021-04-04
  • 2021-11-16
  • 2021-11-13
  • 2021-08-01
  • 2022-12-23
  • 2021-05-16
  • 2021-05-17
相关资源
相似解决方案