博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot 整合Redis 数据库
阅读量:6504 次
发布时间:2019-06-24

本文共 4370 字,大约阅读时间需要 14 分钟。

Redis简介

Redis(官网:)是一个基于内存的日志型可持久化的缓存数据库,保存形式为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.gztar xzf redis-4.0.8.tar.gzcd redis-4.0.8make

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

src/redis-server

这里写图片描述

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

src/redis-cliredis> set foo barOKredis> get foo"bar"

这里写图片描述

整合Redis 数据库

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

org.springframework.boot
spring-boot-starter-data-redis

之后我们把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.1spring.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
redisTemplate(RedisConnectionFactory factory) { RedisTemplate
redisTemplate = new RedisTemplate
(); 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。

@Servicepublic class RedisServiceImpl implements RedisService {    @Resource    private RedisTemplate
redisTemplate; public void set(String key, Object value) { ValueOperations
vo = redisTemplate.opsForValue(); vo.set(key, value); } public Object get(String key) { ValueOperations
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
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
setPhoto; //省略getter和setter @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + ", dictum=" + dictum + ", setPhoto=" + setPhoto + "]"; }}
你可能感兴趣的文章
PHP学习笔记 第八讲 Mysql.简介和创建新的数据库
查看>>
【git】git入门之把自己的项目上传到github
查看>>
js获取鼠标位置
查看>>
2016.8.11 DataTable合并及排除重复方法
查看>>
php 魔术方法 说明
查看>>
Mysql
查看>>
POJ-1860-Currency Exchange
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>
软件工程技术基础-(软件复用技术)
查看>>
给django视图类添加装饰器
查看>>
简述 clearfix 的原理
查看>>
【Project Euler】530 GCD of Divisors 莫比乌斯反演
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
iphone UIView的一些基本方法理解
查看>>
sys.check_constraints
查看>>
vue问题
查看>>
ThinkPHP 框架学习
查看>>
css3箭头效果
查看>>
MathType在手,公式不求人!
查看>>