Linux中使用redis(七)SpringBoot整合redis

目录

一、springboot整合单节点redis

1、添加依赖

2、添加配置application.yml配置

3、添加配置

4、工具类

测试

5、发布与订阅

二、哨兵-主备读写分离

1、导包

2、配置yml

3、添加配置文件

4、工具类(同一.4工具类)

三、集群

1、添加Spring Boot和Redis依赖

2、修改配置文件

3、创建RedisTemplate实例

4、测试Redis集群


一、springboot整合单节点redis

1、添加依赖

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

关闭防火墙

如果 Redis 服务器部署在本地( 127.0.0.1 ),则无需关闭防火墙,Spring Boot 项目可以直接连接本地的 Redis 服务器。

如果 Redis 服务器部署在远程主机,则需要关闭防火墙或者开放 Redis 服务端口(默认 6379 ),否则 Spring Boot 项目无法连接远程 Redis 服务器。

setenforce 0          #setenforce 0 表示关闭selinux防火墙
systemctl stop firewalld.service      #关闭防火墙*
​
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld.service

2、添加配置application.yml配置

spring:
  redis:
    database: 0
    host: 192.168.100.128 #虚拟机IP地址
    port: 6379 #reids服务端口号
    password: 
    lettuce:
      pool:
         # 连接池中的最大空闲连接 默认8      
        max-idle: 8
        # 连接池中的最小空闲连接 默认0
        min-idle: 0
        # 连接池最大连接数 默认8 ,负数表示没有限制
        max-active: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认-1
        max-wait: -1
    timeout: 30000

3、添加配置

package pri.gitonline.redis.configuration;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 
/**
 * redis配置类
 * @author gitonline
 *
 */
 
@Configuration
public class RedisConfiguration {
 
   /**
    * springboot2.x 使用LettuceConnectionFactory 代替 RedisConnectionFactory
    * application.yml配置基本信息后,springboot2.x  RedisAutoConfiguration能够自动装配
    * LettuceConnectionFactory 和 RedisConnectionFactory 及其 RedisTemplate
    * @param redisConnectionFactory
    * @return
    */
   @Bean
   public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory){
       RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
       // key采用String的序列化方式
       redisTemplate.setKeySerializer(new StringRedisSerializer());
       redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
       redisTemplate.setHashKeySerializer(new StringRedisSerializer());
       redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
       redisTemplate.setConnectionFactory(redisConnectionFactory);
       return redisTemplate;
   }
 
}

4、工具类

package pri.gitonline.redis.service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
​
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
 
 
/**
* Redis工具类
*/
 
@Component
public final class RedisUtil {
   @Autowired
   private RedisTemplate<String, Object> redisTemplate;
   // =============================common============================
   /**
    * 指定缓存失效时间
    * @param key 键
    * @param time 时间(秒)
    * @return
    */
   public boolean expire(String key, long time) {
       try {
           if (time > 0) {
               redisTemplate.expire(key, time, TimeUnit.SECONDS);
           }
           return true;
       } catch (Exception e) {
           e.printStackTrace();
           return false;
       }
   }
   /**
    * 根据key 获取过期时间
    * @param key 键 不能为null
    * @return 时间(秒) 返回0代表为永久有效
    */
   public long getExpire(String key) {
       return redisTemplate.getExpire(key, TimeUnit.SECONDS);
   }
   /**
    * 判断key是否存在
    * @param key 键
    * @return true 存在 false不存在
    */
   public boolean hasKey(String key) {
       try {
           return redisTemplate.hasKey(key);
       } catch (Exception e) {
           e.printStackTrace();
           return false;
       }
   }
   /**
    * 删除缓存
    * @param key 可以传一个值 或多个
    */
   @SuppressWarnings("unchecked")
   public void del(String... key) {
       if (key != null && key.length > 0) {
           if (key.length == 1) {
               redisTemplate.delete(key[0]);
           } else {
               redisTemplate.delete((Collection<String>) CollectionUtils.arrayToList(key));
           }
       }
   }
   // ============================String=============================
   /**
    * 普通缓存获取
    * @param key 键
    * @return 值
    */
   public Object get(String key) {
       return key == null ? null : redisTemplate.opsForValue().get(key);
   }
   /**
    * 普通缓存放入
    * @param key 键
    * @param value 值
    * @return true成功 false失败
    */
   public boolean set(String key, Object val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值