SpringBoot整合Redis
- 1. redis介紹
- 2. 安裝Redis
- 3. Spring Boot整合Redis
- 3.1 依賴匯入
- 3.2 在Application.yml配置redis
- 3.3 redis常用APi介紹
1. redis介紹
Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言撰寫、支持網路、可基于記憶體亦可持久化的日志型、Key-Value資料庫,并提供多種語言的API,從2010年3月15日起,Redis的開發作業由VMware主持,從2013年5月開始,Redis的開發由Pivotal贊助,
2. 安裝Redis
自行安裝
3. Spring Boot整合Redis
3.1 依賴匯入
<!--引入redis依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.4.0</version>
</dependency>
<!--由于使用到了fastJson,所以引入相關的依賴-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
3.2 在Application.yml配置redis
spring:
redis:
host: 127.0.0.1 #配置redis的主機地址,需要修改成自己的
database: 5
port: 6379
password: #設定自己的密碼
jedis:
pool:
max-active: 50 # 如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實體,則此時pool 的狀態為exhausted(耗盡)
max-idle: 20 # 連接池中的最大空閑連接,默認值也是8,
min-idle: 5 # 連接池中的最小空閑連接,默認值也是0,
# max-wait: 5 # 等待可用連接的最大時間,單位毫秒,默認值為-1,表示永不超時,如果超過等待時間,則直接 拋出JedisConnectionException
3.3 redis常用APi介紹
redis提供了RedisTemplate 和 StringRedisTemplate模板,我下面使用的是StringRedisTemplate進行演示:
@Component
public class RedisService {
@Resource
private StringRedisTemplate stringRedisTemplate;
//string 型別
/*
新建一個 RedisService,注入 StringRedisTemplate,使用 stringRedisTemplate.opsForValue()
可以獲取 ValueOperations<String, String> 物件,通過該物件即可讀寫 redis 資料庫了,
*/
public void setRediskv(String key,String value){
ValueOperations<String, String> forValue = stringRedisTemplate.opsForValue();
forValue.set(key,value);
}
public String getRediskv(String key){
String s = stringRedisTemplate.opsForValue().get(key);
return s;
}
//String型別存盤物件,存盤前要把物件轉化為json資料型別
public void setRedisObj(User user){
ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
stringStringValueOperations.set("user", JSON.toJSONString(user));
}
public User getRedisObj(){
ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
String user = stringStringValueOperations.get("user");
User user1 = JSONObject.parseObject(user, User.class);
return user1;
}
//list型別
/*
使用 stringRedisTemplate.opsForList() 可以獲取 ListOperations<String, String> listOperations redis 串列物件,該串列是個簡單的字串串列,可以支持從左側添加,也可以支持
從右側添加,一個串列最多包含 2 ^ 32 -1 個元素,
*/
public void setRedisList(){
ListOperations<String, String> stringStringListOperations = stringRedisTemplate.opsForList();
stringStringListOperations.leftPush("list","ljz1");
stringStringListOperations.leftPush("list","ljz2");
stringStringListOperations.leftPush("list","ljz3");
stringStringListOperations.leftPush("list","ljz4");
}
public String getRedisList(){
ListOperations<String, String> stringStringListOperations = stringRedisTemplate.opsForList();
String list = stringStringListOperations.leftPop("list");
return list;
}
//hash型別
/*
hash 型別其實原理和 string 一樣的,但是有兩個 key,使用 stringRedisTemplate.opsForHash()
可以獲取 HashOperations<String, Object, Object> 物件,比如我們要存盤訂單資訊,所有訂單
資訊都放在 order 下,針對不同用戶的訂單物體,可以通過用戶的 id 來區分,這就相當于兩個 key
了,
*/
public void setRedisHash(){
HashOperations<String, Object, Object> stringObjectObjectHashOperations = stringRedisTemplate.opsForHash();
stringObjectObjectHashOperations.put("hash0","name0","ljz0");
stringObjectObjectHashOperations.put("hash1","name1","ljz1");
stringObjectObjectHashOperations.put("hash2","name2","ljz2");
}
public Object getRedisHash(){
HashOperations<String, Object, Object> stringObjectObjectHashOperations = stringRedisTemplate.opsForHash();
Object o = stringObjectObjectHashOperations.get("hash0", "name0");
return o;
}
}
測驗用例:
package liz.com.springtest.controller;
import liz.com.springtest.entity.User;
import liz.com.springtest.redis.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author linjiazeng
* @version 1.0
* @date 2020/12/23 10:52
**/
@RestController
@RequestMapping("redis")
public class RedisController {
@Autowired
private RedisService redisService;
//測驗String型別
@GetMapping("setRedis/{key}/{name}")
public String setReids(@PathVariable String key,@PathVariable String name ){
redisService.setRediskv(key,name);
return "success";
}
@GetMapping("getRedis/{key}")
public String getReids(@PathVariable String key){
String redis = redisService.getRediskv(key);
return redis;
}
//測驗物件型別
@GetMapping("setRedisObj")
public String setRedisObj(){
User user = new User();
user.setName("ljz");
user.setAge("18");
user.setSex("男");
redisService.setRedisObj(user);
return "success";
}
@GetMapping("getRedisObj")
public User getRedisObj(){
return redisService.getRedisObj();
}
//測驗list型別
@GetMapping("setRedisList")
public String setRedisList(){
redisService.setRedisList();
return "success";
}
@GetMapping("getRedisList")
public String getRedisList(){
return redisService.getRedisList();
}
//測驗hash
@GetMapping("getRedisHash")
public Object getRedisHash(){
return redisService.getRedisHash();
}
@GetMapping("setRedisHash")
public String setRedisHash(){
redisService.setRedisHash();
return "success";
}
}
部分測驗結果如下:
測驗的時候現使用http://localhost:8080/redis/setRedisObj把資料快取到reids,然后再訪問http://localhost:8080/redis/getRedisObj

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/239653.html
標籤:其他
下一篇:MySQL優化建議
