AliCloudDB for redis应用场景之实现帖子排序

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

AliCloudDB for redis应用场景之实现帖子排序

场景介绍

各大论坛帖子通常会有各种排序方式方便用户查看,比如按发帖时间排序,按回复时间排序,按回复数排序等,这种场景对响应时间要求较高,因此可以选择AliCloudDB for redis来缓存排序信息。对这种TOP N 的场景,使用AliCloudDB for redis的zset结构存储比较合适

业务设计

假设论坛某版块需要按发帖时间和按回复时间两种排序方式,那么对于第一个种按发帖时间的数据结构可以这样设计:

key:帖子版块id(唯一标识)+ 排序type
score:发帖时间
member:帖子id

同理按回复时间的数据结构将score改回回复时间即可

当有新帖子时,用zadd接口写入,获取帖子列表时,用zrangebyscore接口展示帖子,删除帖子时,用zrem

代码示例

package com.aliyun; 
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;

import redis.clients.jedis.Jedis;

public class SamplePostsRank {
    static int POST_NUM = 20;

    public void SAMPLE_PostsRank()
    {
        String host = "127.0.0.1";
        int port = 6728;
        try {
            Jedis jedis = new Jedis(host, port);
            String authString = jedis.auth("INSTANCEID:PASSWORD");
            if (!authString.equals("OK"))
            {
                //log.error("AUTH Failed: " + authString);
                return;
            }
            String key = "Test-Board";
            List<String> postList = new ArrayList<String>();
            for (int i = 0; i < POST_NUM; ++i)
            {
                postList.add(UUID.randomUUID().toString());
            }
            String postType ="RepNum";
            //Set Score
            for (int i = 0; i < postList.size(); i++)
            {
                String postId = postList.get(i);
                String member = postId + "-" + postType;
                int score = (int)(Math.random() % 100);
                jedis.zadd(key, score, member);
                System.out.println("POST: " + postId + " ReplyNumber: " +             score);
            }
            Set<String> scoreList = jedis.zrangeByScore(key, 80, 100);
            for (String str : scoreList) {  
                System.out.println(str);  
            }  
            jedis.quit();
            jedis.close();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
15天前
|
缓存 NoSQL 调度
【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
106 0
|
30天前
|
存储 JSON NoSQL
Redis与Python的完美结合:实现高效数据交互和应用场景全解析
Redis与Python的完美结合:实现高效数据交互和应用场景全解析
112 0
|
1月前
|
存储 缓存 NoSQL
探索Redis的多样应用场景:加速和优化现代应用
探索Redis的多样应用场景:加速和优化现代应用
33 2
|
3月前
|
NoSQL Java Redis
Redis的发布-订阅模式是什么?它的应用场景是什么?
Redis的发布-订阅模式是什么?它的应用场景是什么?
55 0
|
3月前
|
NoSQL 网络协议 安全
Redis的高级特性与应用场景(二)
Redis的高级特性与应用场景(二)
23 0
|
3月前
|
存储 缓存 分布式计算
Redis的高级特性与应用场景(一)
Redis的高级特性与应用场景(一)
34 0
|
3月前
|
存储 JSON NoSQL
Redis相关命令及应用场景详解
Redis相关命令及应用场景详解
|
4月前
|
存储 消息中间件 缓存
百度搜索:蓝易云【什么是 Redis?它的特点是什么?Redis的数据类型有哪些?Redis的主要应用场景有哪些?】
总之,Redis是一款功能强大的高性能键值存储数据库,它的特点包括高性能、多种数据结构支持、数据持久化、高并发访问和分布式能力。其主要应用场景涵盖缓存、会话存储、消息队列、实时排行榜和发布/订阅系统等领域。
71 0
|
4月前
|
缓存 NoSQL Java
SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
SSM之spring注解式缓存redis->redis整合,redis的注解式开发及应用场景,redis的击穿穿透雪崩
48 0
|
7月前
|
存储 JSON NoSQL
【Redis从头学-4】Redis中的String数据类型实战应用场景之验证码、浏览量、点赞量、Json格式存储
【Redis从头学-4】Redis中的String数据类型实战应用场景之验证码、浏览量、点赞量、Json格式存储
161 0