SpringBoot 整合Redis 数据库的方法

Redis简介

Redis(官网: https://redis.io )是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,Redis完全免费开源,它使用ANSI C语言编写。与其他的key - value缓存产品一样,Redis具有以下三个特点。

• Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;

• Redis不仅支持简单的key-value类型数据,同时还提供字符串、链表、集合、有序集合和哈希等数据结构的存储;

• Redis支持数据备份,即master-slave模式的数据备份。

在Mac系统上,无需下载Redis即可使用它,以下是从Redis的托管服务器下载Redis压缩包并解压的相关命令。

wget http://download.redis.io/releases/redis-4.0.8.tar.gz
tar xzf redis-4.0.8.tar.gz
cd redis-4.0.8
make

使用Redis提供的服务之前,需要先启动Redis相关的服务,在mac系统上启动Redis的命令如下。

src/redis-server

然后,重新打开一个Redis客户端,使用以下的命令来连接Redis server。

src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

整合Redis 数据库

使用Redis之前需要引入相关依赖,Maven方式依赖的脚本如下:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

之后我们把Redis的相关配置写入yml,这里建议根据之前不同的环境写入不同的配置,Redis默认使用的端口是6379,通常Redis默认使用0号数据库,默认共有16个数据库:

#redis配置
 redis:
# 数据库索引
  database: 0
#  服务器地址
  host: 127.0.0.1
#  服务器连接端口
  port: 6379
#  链接密码
  password:
#  链接池
  pool:
#  最大连接数(负值表示没有限制)
   max-active: 8
#   最大阻塞等待时间(负值表示没有限制)
   max-wait: 1
#   最大空闲链接
   max-idle: 8
#   最小空闲链接
   min-idle: 0
#  链接超时时间(毫秒)
  timeout: 0

如果是application.properties方式,部分配置如下:

spring.redis.hostName=127.0.0.1
spring.redis.port=6379
spring.redis.pool.maxActive=8
spring.redis.pool.maxWait=-1
spring.redis.pool.maxIdle=8
spring.redis.pool.minIdle=0
spring.redis.timeout=0

新建RedisConfig.java文件用来存放配置文件。

@Configuration
@EnableCaching//开启注解
public class RedisConfig extends CachingConfigurerSupport {
  @Bean
  public CacheManager cacheManager(RedisTemplate<?,?> redisTemplate) {
    CacheManager cacheManager = new RedisCacheManager(redisTemplate);
    return cacheManager;
  }
  @Bean
  public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
    RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
    redisTemplate.setConnectionFactory(factory);
    return redisTemplate;
  }
}

在service包中建立一个RedisService.java类。

public interface RedisService {
  public void set(String key, Object value);
  public Object get(String key);
}

新建一个service实现类RedisServiceImpl.java。

@Service
public class RedisServiceImpl implements RedisService {
  @Resource
  private RedisTemplate<String,Object> redisTemplate;
  public void set(String key, Object value) {
    ValueOperations<String,Object> vo = redisTemplate.opsForValue();
     vo.set(key, value);
  }
  public Object get(String key) {
    ValueOperations<String,Object> vo = redisTemplate.opsForValue();
    return vo.get(key);
  }
}

新建Controller层代码UserController.java

@Controller
@RequestMapping(path="/user")
public class UserController {
  @Autowired
  private UserService userService;
  @Autowired
  private RedisService redisService;
  //从redis获取某个用户
  @RequestMapping(value = "/getuserfromredis", method = RequestMethod.GET)
  public @ResponseBody User getRedis(@RequestParam String key) {
    return (User)redisService.get(key);
  }
  //获取所有用户
  @RequestMapping(value = "/getusers", method = RequestMethod.GET)
  public @ResponseBody Page<User> list(Model model, Pageable pageable){
    return userService.findAll(pageable);
  }
  //添加用户
  @GetMapping(value="/adduser")
  public @ResponseBody String addUser(@RequestParam String dictum,
      @RequestParam String password, @RequestParam String username) {
    User user = new User();
    user.setDictum(dictum);
    user.setPassword(password);
    user.setUsername(username);
    System.out.println(user);
    userService.saveUser(user);
    redisService.set(user.getId()+"", user);
    return "Saved";
  }
}

本文设计的实体类User.java的代码如下,需要把对象存放在redis需要将对象序列化。

@Entity
@Table(name="s_user")
public class User implements Serializable {
  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Integer id;
  private String username;
  private String password;
  private String dictum;
  @OneToMany(mappedBy = "user", fetch = FetchType. LAZY, cascade = {CascadeType. ALL})
  private Set<Photo> setPhoto;
  //省略getter和setter
  @Override
  public String toString() {
    return "User [id=" + id + ", username=" + username + ", password="
        + password + ", dictum=" + dictum + ", setPhoto=" + setPhoto
        + "]";
  }
}

总结

以上所述是小编给大家介绍的SpringBoot 整合Redis 数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • SpringBoot整合Mybatis使用Druid数据库连接池
  • springboot整合H2内存数据库实现单元测试与数据库无关性
  • spring boot整合quartz实现多个定时任务的方法
  • 浅谈Springboot整合RocketMQ使用心得
  • 编辑器Ueditor和SpringBoot 的整合方法
  • spring boot整合hessian的示例
(0)

相关推荐

  • 编辑器Ueditor和SpringBoot 的整合方法

    1.先导入ueditor所有的包:在springboot static下 2.导入需要的ueditor的js 3.配置ueditor.config.js的// 服务器统一请求接口路径://, serverUrl:(这个路径是个Java类,和config.js的内容相同) 4.js里面执行1.var ue = UE.getEditor('editor');函数 5.上传图片: /* Ueditor里面的上传图片 */ UE.Editor.prototype._bkGetActionUrl=UE.E

  • 浅谈Springboot整合RocketMQ使用心得

    一.阿里云官网---帮助文档 https://help.aliyun.com/document_detail/29536.html?spm=5176.doc29535.6.555.WWTIUh 按照官网步骤,创建Topic.申请发布(生产者).申请订阅(消费者) 二.代码 1.配置: public class MqConfig { /** * 启动测试之前请替换如下 XXX 为您的配置 */ public static final String PUBLIC_TOPIC = "test"

  • spring boot整合hessian的示例

    首先添加hessian依赖 <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>4.0.38</version> </dependency> 服务端:HessianServer,端口号:8090 public interface HelloWorldService { String sayHel

  • springboot整合H2内存数据库实现单元测试与数据库无关性

    一.新建spring boot工程 新建工程的时候,需要加入JPA,H2依赖 二.工程结构 pom文件依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

  • SpringBoot整合Mybatis使用Druid数据库连接池

    本文实例为大家分享了SpringBoot整合Mybatis使用Druid数据库连接池的方法,具体内容如下 在SpringBoot项目中,增加如下依赖 <!-- spring mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version

  • spring boot整合quartz实现多个定时任务的方法

    最近收到了很多封邮件,都是想知道spring boot整合quartz如何实现多个定时任务的,由于本人生产上并没有使用到多个定时任务,这里给个实现的思路. 1.新建两个定时任务,如下: public class ScheduledJob implements Job{ @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("sched

  • SpringBoot 整合Redis 数据库的方法

    Redis简介 Redis(官网: https://redis.io )是一个基于内存的日志型可持久化的缓存数据库,保存形式为key-value格式,Redis完全免费开源,它使用ANSI C语言编写.与其他的key - value缓存产品一样,Redis具有以下三个特点. • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用: • Redis不仅支持简单的key-value类型数据,同时还提供字符串.链表.集合.有序集合和哈希等数据结构的存储: • R

  • SpringBoot整合Redis、ApachSolr和SpringSession的示例

    本文介绍了SpringBoot整合Redis.ApachSolr和SpringSession,分享给大家,具体如下: 一.简介 SpringBoot自从问世以来,以其方便的配置受到了广大开发者的青睐.它提供了各种starter简化很多繁琐的配置.SpringBoot整合Druid.Mybatis已经司空见惯,在这里就不详细介绍了.今天我们要介绍的是使用SpringBoot整合Redis.ApacheSolr和SpringSession. 二.SpringBoot整合Redis Redis是大家比

  • springboot整合redis进行数据操作(推荐)

    redis是一种常见的nosql,日常开发中,我们使用它的频率比较高,因为它的多种数据接口,很多场景中我们都可以用到,并且redis对分布式这块做的非常好. springboot整合redis比较简单,并且使用redistemplate可以让我们更加方便的对数据进行操作. 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

  • SpringBoot整合Redis正确的实现分布式锁的示例代码

    前言 最近在做分块上传的业务,使用到了Redis来维护上传过程中的分块编号. 每上传完成一个分块就获取一下文件的分块集合,加入新上传的编号,手动接口测试下是没有问题的,前端通过并发上传调用就出现问题了,并发的get再set,就会存在覆盖写现象,导致最后的分块数据不对,不能触发分块合并请求. 遇到并发二话不说先上锁,针对执行代码块加了一个JVM锁之后问题就解决了. 仔细一想还是不太对,项目是分布式部署的,做了负载均衡,一个节点的代码被锁住了,请求轮询到其他节点还是可以进行覆盖写,并没有解决到问题啊

  • php操作redis数据库常见方法实例总结

    本文实例讲述了php操作redis数据库常见方法.分享给大家供大家参考,具体如下: 一.安装php_redis扩展,用以操作redis http://pecl.php.net/package/redis 选择自已系统php版本对应的扩展. 二.redis连接与验证 <?php //创建一个redis客户端 $redis = new Redis(); //连接redis服务,指定主机,端口,和超时时间 $redis->connect('127.0.0.1', 6379, 60); //进行密码验

  • Springboot整合Redis最简单例子分享

    1. 编写目的 最简单的例子,Springboot整合Redis. 2. 详细过程 pom 文件添加依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr

  • Jedis操作Redis数据库的方法

    本文实例为大家分享了Jedis操作Redis数据库的具体代码,供大家参考,具体内容如下 关于NoSQL的介绍不写了,直接上代码 第一步导包,不多讲 基本操作: package demo; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class Demo

  • SpringBoot整合liquibase的实现方法

    LiquiBase 是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态.它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移.其有点主要有以下: 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等: 支持多开发者的协作维护: 日志文件支持多种格式,如XML, YAML, JSON, SQL等: 支持多种运行方式,如命令行.

  • springboot整合redis集群过程解析

    简介 在springboot使用搭建好的redis集群 添加redis和连接池依赖 <!--redis连接池 start--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!--redis连接池 end--> <!--redis start-

  • springboot整合spring-data-redis遇到的坑

    描述 使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key. 使用工具发现,key的前面多了\xAC\xED\x00\x05t\x00!这样一个串. 而且value也是不能直观可见的. 问题所在 使用springdataredis,默认情况下是使用org.springframework.data.redis.serializer.JdkSerializationRedisSerializer这个类来做序列化. org.spri

随机推荐

其他