Java秒杀实战(五) SpringBoot框架集成Redis

本文介绍了Redis在Linux系统的安装和SpringBoot集成Redis的方法。在Linux上,需下载包、解压移动、编译安装并修改配置文件。SpringBoot集成时,要添加依赖、配置文件,编写配置类,抽象接口实现多态设置属性,注入配置到容器并在控制器调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Linux系统安装Redis】

官网下载redis包,上传到linux服务器上。

1.解压并移动目录

tar -zxvf redis-4.0.10.tar.gz           mv redis-4.0.10 /usr/local/redis   cd /usr/local/redis/

2.译并把编译后的可执行文件添加到启动目录

make -j 4        make install

3.修改配置文件redis.conf

绑定允许访问的ip:bind 0.0.0.0 //允许任意服务器访问

允许后台执行:daemonize yes

需要密码登陆:requirepass 123465

./install_server.sh来安装redis系统服务,然后配置config以及log路径.

【SpringBoot集成Redis】

1.添加pom依赖

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>
 
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.38</version>
		</dependency>

2.配置application.properties添加配置

# redis
redis.host=192.168.**.**
redis.port=6379
redis.timeout =3 //连接超时时间
redis.password=123456
redis.poolMaxTotaol=10 //最大链接数
redis.poolMaxldle=500 //最大空闲数
redis.poolMaxWait=500//最大等待数

3.编写RedisConfig文件

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created by 张伟光 on 2019/5/14.
 */
@Component
@ConfigurationProperties(prefix = "redis")
public class RedisConfig {
    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getPoolMaxTotaol() {
        return poolMaxTotaol;
    }

    public void setPoolMaxTotaol(int poolMaxTotaol) {
        this.poolMaxTotaol = poolMaxTotaol;
    }

    public int getPoolMaxldle() {
        return poolMaxldle;
    }

    public void setPoolMaxldle(int poolMaxldle) {
        this.poolMaxldle = poolMaxldle;
    }

    public int getPoolMaxWait() {
        return poolMaxWait;
    }

    public void setPoolMaxWait(int poolMaxWait) {
        this.poolMaxWait = poolMaxWait;
    }

    private String host;
    private int port;
    private int timeout;

    public int getTimeout() {
        return timeout;
    }

    public void setTimeout(int timeout) {
        this.timeout = timeout;
    }

    private String password;
    private int poolMaxTotaol;
    private int poolMaxldle;
    private int poolMaxWait;


    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }
}

4.抽象出来一个接口,让实现接口的类重新设置时间以及标识key的标头信息。

package com.imooc.miaosha.redis;
 
public interface KeyPrefix {
		
	public int expireSeconds();
	
	public String getPrefix();
	
}

实现接口,然后通过多态的形式实现设置redis属性,例如redis过期时间。

​
package com.imooc.miaosha.redis;
 
public abstract class BasePrefix implements KeyPrefix{
	
	private int expireSeconds;
	
	private String prefix;
	
	public BasePrefix(String prefix) {//0代表永不过期
		this(0, prefix);
	}
	
	public BasePrefix( int expireSeconds, String prefix) {
		this.expireSeconds = expireSeconds;
		this.prefix = prefix;
	}
	
	public int expireSeconds() {//默认0代表永不过期
		return expireSeconds;
	}
 
	public String getPrefix() {
		String className = getClass().getSimpleName();
		return className+":" + prefix;
	}
 
}

​

再建一个userKey来继承基础的Prefix,实现设置自己的标头信息。

package com.imooc.miaosha.redis;

/**
 * Created by 张伟光 on 2019/5/14.
 */
public class UserKey extends BasePrefix{
    public UserKey( String prefix) {
        super(prefix);
    }
    public static UserKey getById = new UserKey("id");
    public static UserKey getByName = new UserKey("name");
}

在连接redis数据库的时候需要一个jedisPool的bean来将redis配置注入到spring容器中。

package com.imooc.miaosha.redis;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
 
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
 
@Service
public class RedisPoolFactory {
 
	@Autowired
	RedisConfig redisConfig;
	
	@Bean
	public JedisPool JedisPoolFactory() {
		JedisPoolConfig poolConfig = new JedisPoolConfig();
		poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
		poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
		poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000);
		JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(),
				redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0);
		return jp;
	}
	
}

最后在控制器里面进行调用

	@RequestMapping("/redis/get")
	@ResponseBody
	public Result<User> redisGet() {
		User user = redisService.get(UserKey.getById, "" + 1, User.class);
		return Result.success(user);
	}
 
	@RequestMapping("/redis/set")
	@ResponseBody
	public Result<Boolean> redisSet() {
		User user = new User(11, "wings");
		redisService.set(UserKey.getById, "" + 1, user);// UserKey:id1
		return Result.success(true);
	}

【总结】

      引用redis的方式是通过抽象出一个接口,然后去实现这个接口,然后再去继承这个类,来实现实现配置不同的key的标头,例如userKey,其中档你调service的时候,用的是实例化接口作为形参。
      

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值