Spring boot集成Redis(1)—進行增加,更新,查詢,批量刪除等操作
阿新 • • 發佈:2018-11-01
緩存 獲取數據 prope XML ray end 序列 www pin 前言:最近工作中使用到了redis緩存,故分享一點自己總結的東西,這篇文章使用的是StringRedisTemplate進行學習,這裏值的說的是,(1)StringRedisTemplate在進行批量刪除操作時我們需對template進行序列化,(2)更新操作與添加操作一樣,接下來上代碼:
1.建立Spring boot項目,引入Redis依賴(pom.xml如下):
1.建立Spring boot項目,引入Redis依賴(pom.xml如下):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>redis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>redis</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2.編寫spring boot配置文件,這裏我配置的內容簡單,如需要其他的配置可以進官網去查
#Redis
spring.redis.host=192.168.100.86
spring.redis.password=admin
spring.redis.port=6379
server.port=8081
3.接下裏我們開始寫測試
(1)建立實體類:
User:
package com.test.redis.entity; public class User { private Integer id; private String name; private String password; public User() { super(); } public User(Integer id, String name, String password) { super(); this.id = id; this.name = name; this.password = password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", password=" + password + "]"; } }
(2)service層,主要對redis的各種操作方法進行定義
RedisService:
package com.test.redis.service; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.stereotype.Service; @Service public class RedisService { @Resource private StringRedisTemplate template; /** * 存儲數據或修改數據 * * @param modelMap * @param mapName */ public void setKey(String mapName, Map<String, Object> modelMap) { HashOperations<String, Object, Object> hps = template.opsForHash(); hps.putAll(mapName, modelMap); } /** * 獲取數據Map * * @param mapName * @return */ public Map<Object, Object> getMapValue(String mapName) { HashOperations<String, Object, Object> hps = this.template.opsForHash(); return hps.entries(mapName); } /** * 獲取數據value * * @param mapName * @param hashKey * @return */ public Object getValue(String mapName, String hashKey) { HashOperations<String, Object, Object> hps = this.template.opsForHash(); return hps.get(mapName, hashKey); } /** * 批量刪除緩存數據 * * @param keys */ public void deleteData(List<String> keys) { // 執行批量刪除操作時先序列化template template.setKeySerializer(new JdkSerializationRedisSerializer()); template.delete(keys); } }
(3)controller層代碼,演示操作(添加與獲取值):
package com.test.redis.web;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.test.redis.entity.User;
import com.test.redis.service.RedisService;
@Controller
public class UserController {
private static final String mapName="mapName";
@Autowired
private RedisService redisService;
@GetMapping( "/add.do")
@ResponseBody
public Map<Object, Object> addUser(HttpServletRequest request){
Map<String, Object> modelMap=new HashMap<String,Object>();
User user=new User();
user.setName("hehename");
user.setPassword("hehePassword");
//存放hash值
modelMap.put("name", user.getName());
modelMap.put("password", user.getPassword());
redisService.setKey(mapName, modelMap);
//獲取map集合
Map<Object, Object> modelMap1= redisService.getMapValue(mapName);
Object value= redisService.getValue(mapName, "name");
System.out.println(" value : "+value);
modelMap1.put("從緩存中根據key取到的value", value);
return modelMap1;
}
}
前臺展示結果:
(4)刪除以及獲取值操作:
@GetMapping( "/delete.do")
@ResponseBody
public Map<Object, Object> deleteUser(HttpServletRequest request){
//獲取即將刪除的key值,這裏我們做的批量刪除
List<String> keys=new ArrayList<>();
keys.add("heheanme");
//開始執行刪除操作
redisService.deleteData(keys);
//獲取map集合
Map<Object, Object> modelMap1= redisService.getMapValue(mapName);
Object value= redisService.getValue(mapName, "name");
System.out.println(" value : "+value);
modelMap1.put("從緩存中根據key取到的value", value);
return modelMap1;
}
前臺顯示結果:
由此可見,操作成功
Spring boot集成Redis(1)—進行增加,更新,查詢,批量刪除等操作