redis安装配置及springboot集成
暂时只有windows环境,后续补充linux
Windows环境
一、安装与配置
1.redis简介
redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。默认端口6379。
redis是一种高级的key:value存储系统,其中value支持五种数据类型:
1.字符串(strings) 2.字符串列表(lists) 3.字符串集合(sets) 4.有序字符串集合(sorted sets) 5.哈希(hashes)
注意事项:
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率; 2.key也不要太短,太短的话,key的可读性会降低; 3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。
具体redis命令语句直接在网上搜索即可。
2.下载
直接redis官网下载Download | Redis就完了(找个vpn不然github不一定能访问到),要是说没有vpn那就私我。
3.安装及配置
压根不需要直接解压缩就OK啦。
4.使用
redis分为服务端和客户端,exe文件双击启动。
二、springboot集成
1.依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.redis配置
server:
port: 8080
spring:
#redis相关配置
redis:
database: 5
# 配置redis的主机地址,需要修改成自己的
host: 127.0.0.1
port: 6379
# 默认密码为空
password:
timeout: 5000
jedis:
pool:
# 连接池中的最大空闲连接,默认值也是8。
max-idle: 500
# 连接池中的最小空闲连接,默认值也是0。
min-idle: 50
# 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)
max-active: 1000
# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
max-wait: 2000
3.redis模板
redis有两个模板:RedisTemplate 和 StringRedisTemplate。我们不使用 RedisTemplate,RedisTemplate 提供给我们操作对象,操作对象的时候,我们通常是以 json 格式存储,但在存储的时候,会使用 Redis 默认的内部序列化器;导致我们存进里面的是乱码之类的东西。
所以使用 StringRedisTemplate 模板。
4.具体事例
这里只放string类型。
先做一个service,里面放置一些可以使用的redis方法
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class RedisService {
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 删除多个key
* @param keyList
*/
public void delListKey(List<String> keyList){
stringRedisTemplate.delete(keyList);
}
/**
* 删除key
* @param key
*/
public void delKey(String key){
stringRedisTemplate.delete(key);
}
/**
* set redis: string类型
* @param key key
* @param value value
*/
public void setString(String key, String value){
ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
valueOperations.set(key, value);
}
/**
* get redis: string类型
* @param key key
* @return
*/
public String getString(String key){
return stringRedisTemplate.opsForValue().get(key);
}
/**
* incrByString redis: string类型
* 将某个key增加num
* @param key
* @param num
*/
public void incrByString(String key,Integer num){
stringRedisTemplate.opsForValue().increment(key, num);
}
/**
* incrString redis: string类型
* 将某个key增加1
* @param key
*/
public void incrString(String key){
stringRedisTemplate.opsForValue().increment(key);
}
/**
* decrByString redis: string类型
* 将某个key减少num
* @param key
* @param num
*/
public void decrByString(String key,Integer num){
stringRedisTemplate.opsForValue().decrement(key,num);
}
/**
* decrString redis: string类型
* 将某个key减少1
* @param key
*/
public void decrString(String key){
stringRedisTemplate.opsForValue().decrement(key);
}
}
然后直接调动使用。
import com.hyq.rediskafka.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class redisController {
@Autowired
private RedisService redisService;
@RequestMapping("/getRedisData")
public void getRedisData(){
redisService.setString("hyqCount","20");
redisService.incrString("hyqCount");
String hyqCountIncr = redisService.getString("hyqCount");
System.out.println(hyqCountIncr);
redisService.decrString("hyqCount");
String hyqCountDecr = redisService.getString("hyqCount");
System.out.println(hyqCountDecr);
redisService.decrByString("hyqCount",5);
String hyqCountDecrBy = redisService.getString("hyqCount");
System.out.println(hyqCountDecrBy);
redisService.delKey("hyqCount");
String hyqCountDel = redisService.getString("hyqCount");
System.out.println(hyqCountDel);
}
}