SpringBoot+Redis

第一次发表博客(SpringBoot+Redis环境搭建以及Linux系统下Redis的搭建)

最近因为项目需要,需要添加Redis缓存,由于之前没有自己亲手去搭建过,所以在搭建过程中遇到了不少的坑,也发现网上有关于SpringBoot+Redis的博客都是千篇一律,所以自己来总结一下,由于之前没有动手写过博客,所以对于这个格式不是太怎么会用。这篇文章之前发过一次,由于博主不会排版,导致图片不显示,贼是蛋疼,然后就删掉重新整理了一下

1.linux环境下搭建redis

首先需要从redis官网上下载redis的linux版本架包(https://redis.io/),我下载的是redis-3.2.9版本。

在linux的home文件下执行mkdir redis-tar 来新建一个文件夹来存放redis的架包(存放位置和路径可以自定义,下同)
在这里插入图片描述

执行 tar vxf redis-3.2.9.tar.gz 对架包进行解压

进入解压后的架包 cd /redis-3.2.9

执行 make 命令进行编译安装

移动redis-server、redis-cli、redis-conf、redis-benchmark 四个文件移动到 /usr/local/redis 目录下 (如若没有redis文件夹 手动创建一个 mkdir redis)命令如下:

cp redis-server /usr/local/redis
	
cp redis-cli /usr/local/redis
	
cp redis.conf /usr/local/redis
	
cp redis-benchmark /usr/local/redis

然后启动redis服务

./redis-server redis.conf

这个时候回显示redis已经搭建成功,端口号为 6379

2. Redis客户端对linxu下的redis服务进行连接

首先去下载一个redis客户端,安装好
在这里插入图片描述

打开
在这里插入图片描述
当进行测试连接的时候,几秒钟还是连接不上,那么恭喜你中奖了,说明linux上配置的redis还是有一些问题,博主当时也遇到了这个问题,从网上也找了很对,千篇一律,没有正确的 。最后还是找到了一个靠谱的,这里就不一一叙述了,直接上链接 解决客户端不能连接linux上redis服务

3.SpringBoot的配置

走到这里,那么说明你的redis安装好并且能够使用客户端进行连接了,那么下面是最重要的一步就是springcloud上连接linux下的redis了首先我们需要在springcloud的yml配置文件下对redis的链接进行配置,具体的配置如下

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

然后就是RedisConfig文件的配置了

package com.goobird.hivideo.redis;

import java.lang.reflect.Method;
import java.time.Duration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public KeyGenerator KeyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                StringBuilder sb = new StringBuilder();
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (Object obj : params) {
                    sb.append(obj.toString());
                }
                return sb.toString();
            }
        };
    }
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory) {
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();  // 生成一个默认配置,通过config对象即可对缓存进行自定义配置
        config = config.entryTtl(Duration.ofMinutes(1))     // 设置缓存的默认过期时间,也是使用Duration设置
                .disableCachingNullValues();     // 不缓存空值

        // 设置一个初始化的缓存空间set集合
        Set<String> cacheNames =  new HashSet<>();
        cacheNames.add("my-redis-cache1");
        cacheNames.add("my-redis-cache2");

        // 对每个缓存空间应用不同的配置
        Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
        configMap.put("my-redis-cache1", config);
        configMap.put("my-redis-cache2", config.entryTtl(Duration.ofSeconds(120)));

        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)     // 使用自定义的缓存配置初始化一个cacheManager
                .initialCacheNames(cacheNames)  // 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置
                .withInitialCacheConfigurations(configMap)
                .build();
        return cacheManager;
    }

}


还有一点就是记得要添加redis的依赖哦

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

4.对redis进行操作

最后就是对redis进行数据操作了,博主简单的测试了一下,直接上代码

@RequestMapping("/test")
    public void test(){
        Map<Object,Object> map = new HashMap<>();
        //map.put("map","test1");
        map.put("map2","test2");
        redisTemplate.opsForHash().putAll("redisMap",map);
        String s = (String) redisTemplate.opsForHash().get("redisMap", "map2");
        /*BoundHashOperations redisMap = redisTemplate.boundHashOps("redisMap");
        Set keys = redisMap.keys();
        Iterator iterator = keys.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next+"---"+redisMap.get(next));
        }*/
        System.out.println(s);
    }

最后输出的结果为:
在这里插入图片描述

再然后就没有然后拉,结束啦!
服务搭建的过程中,参考了两位大神意见及代码,在万分感谢!
喜欢可以点个赞,原创,转载请注明出处!!!
最后,有疑问的可以和博主私聊!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值