Redis实现存取数据+数据存取

Redis实现存取数据+数据存取

 

添加依赖:

 


    com.fasterxml.jackson.core
    jackson-databind
    2.9.7


 
        
            org.springframework.data
            spring-data-redis
            2.1.3.RELEASE
 

 

 

Mapper接口:

package com.nf147.sim.mapper;

import com.nf147.sim.entity.News;

import java.util.List;

public interface NewsMapper {
    List query();
    void add(News news);
}

 

 

映射文件:





    
        
        
        
    

    

    

    
        insert into news (title,body) values (#{title},#{body})
    

 

服务接口:

package com.nf147.sim.service;

import com.nf147.sim.entity.News;
import redis.clients.jedis.Jedis;

import java.io.IOException;
import java.util.List;

public interface NewsService {
    List selectAll() throws IOException;void add (News news);
}

 

实现:

package com.nf147.sim.service.impl;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nf147.sim.entity.News;
import com.nf147.sim.mapper.NewsMapper;
import com.nf147.sim.service.NewsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;

import java.io.IOException;
import java.util.List;

@Service
public class NewsServiceImpl implements NewsService {

    @Autowired
    private NewsMapper mapper;

    @Override
        public List selectAll() throws IOException {

            Jedis jedis =new Jedis();
            String key = "listNews";

            ObjectMapper on = new ObjectMapper();  //josn

        if (jedis.exists(key)){                //判断缓存有没有存在key
            System.out.println("从缓存中取出数据...");
            return on.readValue(jedis.get(key),new TypeReference>(){});  //如果有就从缓存里面取数据
        }

     //没有则从数据库去取
        List news = mapper.query();
        jedis.set(key,on.writeValueAsString(news));  //然后设置键和数据
        return news;                                //返回
    }

    @Override
    public void add(News news) {  //每次添加时判短键是否存在,如果存在首先删除
        Jedis jedis = new Jedis();
        String key="listNews";
        if(jedis.exists(key))
            jedis.del(key);
        mapper.add(news);
    }


}

 

测试:

package com.nf147.sim.service.impl;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.nf147.sim.configuration.RootConfig;
import com.nf147.sim.entity.News;
import com.nf147.sim.mapper.NewsMapper;
import com.nf147.sim.service.NewsService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import redis.clients.jedis.Jedis;

import java.io.*;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


@RunWith(SpringRunner.class)
@ContextConfiguration(classes = RootConfig.class)
public class NewsServiceImplTest {

    @Autowired
    private NewsServiceImpl NewsServiceImpl;

    @Test
    public void selectAll() throws IOException {
        List news = NewsServiceImpl.selectAll();
        System.out.println(news);
    }


    }
}

 

结果:uploading.4e448015.gif转存失败重新上传取消

 

 
 
 
 
 
 
 
posted @ 2018-12-27 23:16 梓鸿 阅读(...) 评论(...) 编辑 收藏

你可能感兴趣的:(Redis)