zoukankan      html  css  js  c++  java
  • Redis实现存取数据+数据存取

    添加依赖:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.7</version>
    </dependency>
    
     <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-redis</artifactId>
                <version>2.1.3.RELEASE</version>
     </de

    Mapper接口:

    package com.nf147.sim.mapper;
    
    import com.nf147.sim.entity.News;
    
    import java.util.List;
    
    public interface NewsMapper {
        List<News> query();
        void add(News news);
    }

    映射文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.nf147.sim.mapper.NewsMapper">
    
        <resultMap id="BaseResultMap" type="com.nf147.sim.entity.News">
            <id column="id" jdbcType="INTEGER" property="id" />
            <result column="title" jdbcType="VARCHAR" property="title" />
            <result column="body" jdbcType="VARCHAR" property="body" />
        </resultMap>
    
        <select id="query" resultType="com.nf147.sim.entity.News">
            select id ,title,body from news
        </select>
    
        <select id="selectAll" resultType="com.nf147.sim.entity.News">
              select id ,title,body from news
        </select>
    
        <insert id="add" keyProperty="id" useGeneratedKeys="true">
            insert into news (title,body) values (#{title},#{body})
        </insert>
    
    </mapper>

    服务接口:

    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<News> 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<News> 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>>(){});  //如果有就从缓存里面取数据
            }

         //没有则从数据库去取 List
    <News> 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> news = NewsServiceImpl.selectAll();
            System.out.println(news);
        }

    } }

    结果:

  • 相关阅读:
    AtCoder Regular Contest 061
    Codeforces Round #370 (Div. 2)
    2016 ACM/ICPC Asia Regional Dalian Online
    HDU 5513 Efficient Tree
    Codeforces Round #104 (Div. 1)
    2016 Hunan Province Programming Contest
    2016 Multi-University Training Contest 7
    2016中国大学生程序设计竞赛
    聚会「AHOI 2008」
    游戏「AHOI / HNOI2018」
  • 原文地址:https://www.cnblogs.com/nongzihong/p/10188112.html
Copyright © 2011-2022 走看看