8月23日 分布式缓存 周四

package com.phone.dao;

import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.phone.dto.Phone;

@Component
public class PhoneDao {

    @Autowired
    private MongoTemplate mongo;
    @Autowired
    private RedisTemplate redis;
    public List getBrand() {
        // TODO Auto-generated method stub
        ListOperations list = redis.opsForList();
        List range = list.range("brand", 0, -1);
        return range;
    }
    public List getContent() {
        // TODO Auto-generated method stub
        ListOperations list = redis.opsForList();
        List range = list.range("content", 0, -1);
        return range;
    }
    public void add(Phone phone) {
        // TODO Auto-generated method stub
        mongo.insert(phone);
    }
    public List getlist() {
        // TODO Auto-generated method stub
        List find = mongo.find(new Query(), Phone.class);
        return find;
    }
    public void del(String[] id) {
        // TODO Auto-generated method stub
        mongo.remove(new Query(Criteria.where("id").in(id)),Phone.class);
    }
    public void update(Phone phone) {
        // TODO Auto-generated method stub
        Update update = new Update();
        update.set("name", phone.getName());
        update.set("price", phone.getPrice());
        update.set("content", phone.getContent());
        update.set("brand", phone.getBrand());
        mongo.updateFirst(new Query(Criteria.where("id").is(phone.getId())), update, Phone.class);
    }
    public void badd(Phone phone) {
        // TODO Auto-generated method stub
        ListOperations opsForList = redis.opsForList();
        opsForList.leftPush("brand", phone.getBrand());
    }
    public void bdel(Phone phone) {
        // TODO Auto-generated method stub
        ListOperations opsForList = redis.opsForList();
        opsForList.remove("brand", 0, phone.getBrand());
    }
    public Phone getPhone(String id) {
        // TODO Auto-generated method stub
        return mongo.findOne(new Query(Criteria.where("id").is(id)), Phone.class);
    }
    public void like(String id, double hot) {
        // TODO Auto-generated method stub
        ZSetOperations opsForZSet = redis.opsForZSet();
        opsForZSet.incrementScore("phone", id, hot);
    }

    @Scheduled(cron="0/10 * * * * ?")
    public void Task(){

        ZSetOperations zSet = redis.opsForZSet();
        Set> rangeWithScores = zSet.rangeWithScores("phone", 0, -1);

        for (TypedTuple typedTuple : rangeWithScores) {
            String id = typedTuple.getValue();
            Double hot = typedTuple.getScore();

            Phone phone = mongo.findOne(new Query(Criteria.where("id").is(id)), Phone.class);

            if(phone!=null){
                Update update = new Update();
                update.set("hot", hot);
                mongo.updateFirst(new Query(Criteria.where("id").is(id)), update, Phone.class);
            }else{
                zSet.remove("phone", id);
            }
        }

        System.out.println("1");
        System.out.println("Task Running...");
    }

}

不要忘记人生是要战斗到死。

——芥川龙之介

你可能感兴趣的:(2018)