使用Redis存取数据+数据库存取(spring+java)

RoleMapper接口:

package com.wbg.springRedis.dao;

import com.wbg.springRedis.entity.Role;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface RoleMapper {
    List<Role> listAll();
    int add(Role role);
}

xml映射:

<?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.wbg.springRedis.dao.RoleMapper">
    <insert id="add" parameterType="com.wbg.springRedis.entity.Role">
        insert into role(role_name,note) values(#{roleName},#{note})
    </insert>
    <select id="listAll" resultType="com.wbg.springRedis.entity.Role">
        select * from role
    </select>
</mapper>

Role类:

package com.wbg.springRedis.entity;

import java.io.Serializable;

public class Role  {
    private int id;
    private String roleName;
    private String note;
    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName=‘" + roleName + ‘\‘‘ +
                ", note=‘" + note + ‘\‘‘ +
                ‘}‘;
    }

    public Role() {
    }

    public Role(String roleName, String note) {
        this.roleName = roleName;
        this.note = note;
    }

    public Role(int id, String roleName, String note) {
        this.id = id;
        this.roleName = roleName;
        this.note = note;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }
}

xml文件:

   //纯java
  @Bean
    public JedisConnectionFactory jedisConnectionFactory(){
        JedisConnectionFactory jcf = new JedisConnectionFactory();
        jcf.setHostName("localhost");
        return jcf;
    }
    @Bean
    public RedisTemplate redisTemplate(){
        RedisTemplate rt = new RedisTemplate();
        rt.setConnectionFactory(jedisConnectionFactory());
        rt.setKeySerializer(new StringRedisSerializer());
        rt.setValueSerializer(new StringRedisSerializer());
        return rt;
    }
    @Autowired
    private RedisTemplate redisTemplate;
    @Autowired
    private RoleMapper roleMapper;
 public List<Role> listRole() throws IOException {
        //使用jackJson序列化
        ObjectMapper om = new ObjectMapper();
        //键
        String key = "listRole";
        //原生
        //Jedis jedis = new Jedis();
       /* if (jedis.exists(key)){
            return om.readValue(jedis.get(key), new TypeReference<List<Role>>(){});
        }*/
       //如果存在 就返回
        if (redisTemplate.hasKey(key)){
            return om.readValue((String) redisTemplate.opsForValue().get(key), new TypeReference<List<Role>>() {
            });
        }
        List<Role> list = roleMapper.listAll();
        //原生设置值
        //jedis.set(key, om.writeValueAsString(list));
        //设置
        redisTemplate.opsForValue().set(key, om.writeValueAsString(list));

        return list;
    }

原文地址:https://www.cnblogs.com/weibanggang/p/10184240.html

时间: 2024-10-25 21:01:26

使用Redis存取数据+数据库存取(spring+java)的相关文章

XML Schema格式的&quot;日期型数据”数据库存取

对于XML Schema格式的"日期型数据"在数据库中存于datetime字段的时候,出现错误 mysql> select @@sql_mode; +--------------------------------------------+ | @@sql_mode | +--------------------------------------------+ | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +-----------

Spring整合Redis做数据缓存(Windows环境)

当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是用java开发的缓存组件,和java结合良好,直接在jvm虚拟机中运行,不需要额外安装什么东西,效率也很高:但是由于和java结合的太紧密了,导致缓存共享麻烦,分布式集群应用不方便,所以比较适合单个部署的应用. Redis需要额外单独安装,是通过socket访问到缓存服务,效率比Ehcache低,但

spring + redis 实现数据的缓存

1.实现目标 通过redis缓存数据.(目的不是加快查询的速度,而是减少数据库的负担) 2.所需jar包 注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错.因为commons-pooljar的目录根据版本的变化,目录结构会变.前面的版本是org.apache.pool,而后面的版本是org.apache.pool2... style=" color: white; font-size: 17px; font-weight: bo

Spring Boot使用redis实现数据缓存

基于Spring Boot 1.5.2.RELEASE版本,一方面验证与Redis的集成方法,另外了解使用方法. 集成方法 配置依赖 修改pom.xml,增加如下内容. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置Redis

Android的Sqlite中DateTime类型数据的存取问题

关于讲sqlite中日期类型数据的存取网上有不少,但发现讲得这么细的非常少.更多的是用Date,不用做日期数据统计分析,对存取要求比较小的直接转换成long,即dateTime.getTime()存储.需要在界面上显示的时候就再将long型的日期数据转化为Date或DateTime类型.但是如果要做数据统计分析的话这样每条记录都要遍历转换会显得特别麻烦,数据量大的话时间消费是很大的. 我们知道Date类型数据在数据库中是yyyy-MM-dd形式存的,而Time是HH:mm形式存的.而DateTi

android存取数据方式:文件、SharedPreferences

android存取数据方式:文件.SharedPreferences.SQLite 数据库.Content provider 文件流: 使用java IO流对文件进行读写操作,文件权限默认. 指定文件权限写入:mode:文件权限MODE_PRIVATE的文件是应用程序私有的,MODE_WORLD_READABLE则所有应用程序都可以访问的, MODE_WORLD_WRITEABLE所有应用程序都可以写,mode_APPEND则是如果要创建的文件存在则新写入的数据不会覆盖以前的数据. openFi

使用ADO实现BLOB数据的存取 -- ADO开发实践之二

使用ADO实现BLOB数据的存取 -- ADO开发实践之二 http://www.360doc.com/content/11/0113/16/4780948_86256633.shtml 一.前言 在上一篇文章<>中我们详细介绍了ADO基本的操作方法,在实际的开发过程中我们常常需要存储较大的二进制数据对象,比如:图像.音频文件.或其它二进制数据,这些数据我们称之为二进制大对象BLOB(Binary Large Object),其存取的方式与普通数据有所区别.本文将介绍利用ADO在数据库中存取B

数据库存取缓冲区的LRU与MRU算法

数据库存取缓冲区的LRU与MRU算法 1.Cache Hit and Cache Miss 当使用者第一次向数据库发出查询数据的请求的时候,数据库会先在缓冲区中查找该数据,如果要访问的数据恰好已经在缓冲区中(我们称之为Cache Hit)那么就直接用缓冲区中读取该数据. 反之如果缓冲区中没有使用者要查询的数据那么这种情况称之为Cache Miss,在这种情况下数据库就会先从磁盘上读取使用者要的数据放入缓冲区,使用者再从缓冲区读取该数据. 很显然从感觉上来说Cache Hit会比Cache Mis

大二进制数据的存取

1 package cn.itcast.jdbc.lob; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 impo