【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的时候,用的是实例化接口作为形参。