spring-boot redis 配置

Redis简介

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种数据类型,如Strings,hashs,lists,sets,sorted sets,bitmaps,hyperloglogs等。

Redis 提供内置复制,Lua脚本,Lua回收,事务已经不同级别的磁盘持久化功能,同时通过Redis Sentinel哨兵来提供高可用,以及集群的自动分区。

更多关于Redis 的知识可以参看以下网站:

Redis官网Redis中文社区

Spring-boot Redis

POM依赖

同之前对mongodb的良好支持一样,spring-boot工程中只需增加如下依赖,就可以很好的使用redis

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
也和mongodb一样,如果redis启动时使用的是默认配置,即port=6379,则无需对项目的配置进行修改。

如果需要修改配置信息,则在application.properties文件中找到对应的配置进行修改即可,如下所示。

代码实现

增加如下代码,首先是redis的使用

package com.redis;

import com.alibaba.dubbo.common.utils.StringUtils;
import com.alibaba.fastjson.JSON;
import com.mail.MailMsg;
import org.apache.commons.lang.NullArgumentException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

@Component
public class MailMsgRedis {

    public static final String MAIL_MASG_KEY = "mail:msg:to:%s";

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public void setMsg(MailMsg msg) {
        if (msg == null)
            throw new NullArgumentException("MailMsg is null.");
        String key = String.format(MAIL_MASG_KEY, msg.getTo());
        stringRedisTemplate.opsForValue().set(key, JSON.toJSONString(msg));
    }

    public MailMsg getMsgByTo(String to) {
        if (StringUtils.isEmpty(to))
            throw new NullArgumentException("to is null.");
        String key = String.format(MAIL_MASG_KEY, to);
        String result = stringRedisTemplate.opsForValue().get(key);
        if (StringUtils.isEmpty(result))
            return null;
        return JSON.parseObject(stringRedisTemplate.opsForValue().get(key), MailMsg.class);
    }
}
其中StringRedisTemplate里面包含对各数据结构的操作,如下图所示。

关于StringRedisTemplate更多的信息可以看其源码。

对之前发送邮件的代码稍作修改

    @Autowired
    private MailMsgRedis mailMsgRedis;


    public void sendSimpleEmail(MailMsg mailMsg)
    {
        SimpleMailMessage msg = new SimpleMailMessage();

        msg.setFrom(env.getProperty(MailPropKey.EMAIL_FROM));
        msg.setTo(mailMsg.getTo());
        msg.setSubject(mailMsg.getSubject());
        msg.setText(mailMsg.getText());
        javaMailSender.send(msg);
        mailMsgRepository.insert(mailMsg);
        mailMsgRedis.setMsg(mailMsg);
    }

    public MailMsg findByToFromRedis(String to) {
        return mailMsgRedis.getMsgByTo(to);
    }
在controller中增加从redis获取信息的方法

    @RequestMapping("/find/redis/to")
    public String findMailByToFromRedis(HttpServletRequest request, String to) {
        MailMsg msg = mailHelper.findByToFromRedis(to);
        if (msg == null)
            return "not found by to " + to;
        return "redis: " + JSON.toJSONString(msg);
    }

测试

准备工作都已就绪,启动程序。

在浏览器中输入http://localhost:8080/mail,发送一封测试邮件,发送成功后可以在redis中看到如下信息

然后在浏览器中输入http://localhost:8080/find/redis/to?to=xxx@xx.com,可以看到页面会显示如下内容

redis: {"id":"586b81cfea092207cdfd18af","subject":"Test mongodb","text":"nothing need to care.","to":"xxx@xx.com"}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值