SpringBoot2.x(九)整合Redis实战

Redis安装和配置

下载

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

 

启动

  • 启动服务端:src/redis-server
  • 启动客户端:src/redis-cli

redis.conf配置

客户端IP限制

redis服务端默认只能被本地客户端连接。如果你想通过外网连接,需要在 redis.conf中修改如下配置

bind 127.0.0.1 47.98.121.1  #多个IP以空格分隔

 

这样公网IP为 47.98.121.1的主机也可访问本机的redis服务了。

你也可以多配置几个 bind

bind 127.0.0.1
bind 47.98.121.1

 

取消客户端IP限制

如果你想任意主机都能连接本机redis服务,那么你需要做如下两步配置:

1.    注释以 bind开头的行

#bind 127.0.0.1
#bind 47.98.121.1
 

2.  redis3.2以后的版本还需要关闭保护模式(仍然是修改 redis.conf):

protected-mode no

 

设置连接密码

如果你觉得任意主机都能连接本机redis不太安全,又不想把主机白名单写死(bind),那么你可以设置一个连接密码,在 redis.conf中通过 /requirepass搜索:

requirepass 123456	#在这里设置连接密码

SpringBoot2.x整合Redis

引入依赖

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

 

添加整合配置

  • application.properties
#=========redis基础配置=========
spring.redis.database=0
#默认通过172.0.0.1:6379连接redis
spring.redis.host=172.0.0.1
spring.redis.port=6379
spring.redis.password=xxx	//如果在服务端redis.conf中设置了requirepass则需要配置此项
# 连接超时时间 单位 ms(毫秒)
spring.redis.timeout=3000

#=========redis线程池设置=========
# 连接池中的最大空闲连接,默认值也是8。
spring.redis.pool.max-idle=200

#连接池中的最小空闲连接,默认值也是0。
spring.redis.pool.min-idle=200

# 如果赋值为-1,则表示不限制;pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
spring.redis.pool.max-active=2000

# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时
spring.redis.pool.max-wait=1000

 

opsForXXX

Operations for xxx(redis中的数据类型)

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootMybatisApplicationTests {

    @Autowired
	private StringRedisTemplate redisTemplate;
    
    @Test
    public void testSetVal() {
        redisTemplate.opsForValue().set("name", "anwen");
    }

    @Test
    public void testGetVal() {
        String name = redisTemplate.opsForValue().get("name");
        System.out.println(name);	//anwen
    }
}

 

  • 注入 StringRedisTemplate
  • 调用 opsForXxxboundXxxOps

Redis工具类封装

json转换工具类

通过 starter-web引入 jackson依赖,编写json转换工具类

package top.zhenganwen.springbootmybatis.util;

import java.io.IOException;

import org.springframework.util.StringUtils;

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUtils {

    private static ObjectMapper objectMapper = new ObjectMapper();
    
    //对象转字符串
    public static <T> String obj2String(T obj){
        if (obj == null){
            return null;
        }
        try {
            return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    //字符串转对象
    public static <T> T string2Obj(String str,Class<T> clazz){
        if (StringUtils.isEmpty(str) || clazz == null){
            return null;
        }
        try {
            return clazz.equals(String.class)? (T) str :objectMapper.readValue(str,clazz);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

 

封装redisTemplate

package top.zhenganwen.springbootmybatis.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;

import java.util.concurrent.TimeUnit;

@Repository
public class RedisClient {

    @Autowired
    private StringRedisTemplate redisTemplate;

    public boolean set(String key, String val) {
        try {
            redisTemplate.opsForValue().set(key, val);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public Object getStr(String key) {
        return key == null ? null : redisTemplate.opsForValue().get(key);
    }

    //TODO lIST、MAP结构的set和get

    /**
     * 功能描述:设置某个key过期时间
     *
     * @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
     * @return
     */
    public long getExpire(String key) {
        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
    }


    /**
     * 递增
     *
     * @param key 键
     * @return
     */
    public long incr(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, delta);
    }


    /**
     * 递减
     *
     * @param key   键
     * @param delta 要减少几
     * @return
     */
    public long decr(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, -delta);
    }
}

 

测试

@Test
public void testGetVal() {
    System.out.println(redisClient.getStr("name"));	//anwen
}

Redis常用图形用户界面

Redis Desktop Manager下载地址

 

学习资料搜索

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值