Redis List实现热点新闻列表、物流任务队列

一、热点新闻列表

1.需求

热点新闻列表 获取最新五条首页新闻
默认首页显示五条热点新闻 具备分页功能
后台管理员可以置顶新闻

2. 代码

@Slf4j
@Service
//模拟热点新闻列表
public class ListCacheServiceImpl {
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;

    @Resource(name = "redisTemplate")
    ListOperations<String,String> listOper;
    /*
    * 需求:
    *.热点新闻列表 获取最新五条首页新闻
    *  1.默认首页显示五条热点新闻 具备分页功能
    * 2.后台管理员可以 置顶新闻
    *
    * */
    //初始化新闻
    public void initNewsTop5(){
        String key="baidu:news:top5";
        listOper.rightPush(key,"1.kunkun演唱会");
        listOper.rightPush(key,"2.ikun露鸡脚");
        listOper.rightPush(key,"3.ikun露鸡脚");
        listOper.rightPush(key,"4.ikun露鸡脚");
        listOper.rightPush(key,"5.ikun露鸡脚");
    }

    /*
    * 显示最新五条新闻
    * */
    public List<String> getListTop5(){
       String key="baidu:news:top5";
        List<String> range = listOper.range(key, 0, 4);
        return range;
    }
   /*
   * 置顶新闻
   * */
   public void addBaiduNewsTop(String context){
       String key="baidu:news:top5";
       listOper.leftPush(key,context);
   }
}

二、任务队列(商城物流队列)

 /*
   * List任务队列 模拟京东商城物流订单列表地址
   * 生成物流队列:
   * 1.商家发货
   * 2.北京海淀区--》北京首都国际机场
   * 3.首都机场-》天河机场
   * 4.天河机场-》江夏区
   * 5,江夏区-》小区
   * 6.已签收
   *
   * */
   /*
   * 1.生成物流队列(客户完成支付功能 会根据商家收获地址--用户收获地址)
   * */
   public void initProductsQueue(String cardId){
       //待执行任务队列
       String key="product:queue:excute"+cardId;
       listOper.leftPush(key,"1.商家发货");
       listOper.leftPush(key,"2.北京海淀区--》北京首都国际机场");
       listOper.leftPush(key,"3.首都机场-》天河机场");
       listOper.leftPush(key,"4.天河机场-》江夏区");
       listOper.leftPush(key,"5,江夏区-》小区");
       listOper.leftPush(key,"6.已签收");
   }
   /*
   * 消费队列
   * */
   public String touchQueue(String cardId){
       //待执行任务队列
       String key="product:queue:excute"+cardId;
       //已完成队列
       String succKey="product:queue:success"+cardId;
     return listOper.rightPopAndLeftPush(key,succKey);
   }
   /*
   * 商家 物流公司  快递还有几个任务未完成
   * */
   public List<String> productsQueueExeute(String cardId){
       String key="product:queue:excute"+cardId;
       return listOper.range(key,0,-1);
   }
   /*
   * 买家  快递到哪里了
   * */
   public List<String> productsQueueSuccess(String cardId){
       String key="product:queue:success"+cardId;
       return listOper.range(key,0,-1);
   }

测试:

  @Test
    public void testProducts(){
        listCacheService.initProductsQueue("1001");
        listCacheService.touchQueue("1001");
        listCacheService.touchQueue("1001");
        System.out.println(listCacheService.productsQueueExeute("1001"));
        System.out.println(listCacheService.productsQueueSuccess("1001"));
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值