提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
简单介绍一下,springboot项目中如何使用redis。
一、引入redis依赖
<!-- redis依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
二、配置application.properties
#redis配置
#Redis服务器地址
spring.redis.host=127.0.0.1
#Redis服务器连接端口
spring.redis.port=6379
#Redis数据库索引(默认为0)
spring.redis.database=0
#连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=50
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=3000
#连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=20
#连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=2
#连接超时时间(毫秒)
spring.redis.timeout=5000
三、编写配置类
1、操作string
工具类代码:
package com.example.myblog.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 读取数据
*/
public String getString(final String key) {
return redisTemplate.opsForValue().get(key);
}
/**
* 写入数据
*/
public boolean setString(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 更新数据
*/
public boolean getAndSetString(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().getAndSet(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 删除数据
*/
public boolean delete(final String key) {
boolean result = false;
try {
redisTemplate.delete(key);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
测试类代码:
package com.example.myblog;
import com.example.myblog.util.RedisUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class MyblogApplicationTests {
@Autowired
private RedisUtil redisUtil;
@Test
public void testString(){
Boolean flag = null;
//插入string
flag = redisUtil.setString("testString","testString");
System.out.println(flag);
String result = "";
//获取string
result = redisUtil.getString("testString");
System.out.println(result);
//修改string
flag = redisUtil.getAndSetString("testString","rename");
System.out.println(flag);
//获取string
result = redisUtil.getString("testString");
System.out.println(result);
//栓除string
flag = redisUtil.delete("testString");
result = redisUtil.getString("testString");
System.out.println(result);
}
}
测试结果:
2、操作list
工具类代码:
/**
* 读取数据
*/
public String getList(final String key,long index) {
return redisTemplate.opsForList().index("testList",index);
}
/**
* 写入数据
*/
public long setList(final String key, String value) {
long result = 0;
try {
result = redisTemplate.opsForList().leftPush("testList","testList1");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 更新数据
*/
public boolean getAndSetList(final String key,Long index, String value) {
boolean result = false;
try {
redisTemplate.opsForList().set(key,index,value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
测试类代码:
@Test
public void testList(){
Long flag = null;
//插入list
flag = redisUtil.setList("testList","testList1");
System.out.println(flag);
flag = redisUtil.setList("testList","testList2");
System.out.println(flag);
String result = "";
//获取list
result = redisUtil.getList("testList",1);
System.out.println(result);
//修改list
Boolean flag1 = null;
long index = 1;
flag1 = redisUtil.getAndSetList("testList",index,"hello");
System.out.println(flag);
//获取list
result = redisUtil.getList("testList",1);
System.out.println(result);
//删除list
flag1 = redisUtil.delete("testList");
result = redisUtil.getString("testList");
System.out.println(result);
}
测试结果:
3、操作hash
工具类代码:
/**
* 读取数据
*/
public Object getHash(final String key, String hashKey) {
return redisTemplate.opsForHash().get(key,hashKey);
}
/**
* 写入数据、更新数据
*/
public void setHash(final String key, String hashKey, String value) {
try {
redisTemplate.opsForHash().put(key,hashKey,value);
} catch (Exception e) {
e.printStackTrace();
}
}
测试类代码:
@Test
public void testHash(){
//插入hash
redisUtil.setHash("testHash","hashKey1","hashValue1");
Object result = new Object();
//获取hash
result = redisUtil.getHash("testHash","hashKey1");
System.out.println(result);
redisUtil.setHash("testHash","hashKey1","hello");
//修改hash
result = redisUtil.getHash("testHash","hashKey1");
System.out.println(result);
Boolean flag = null;
//删除hash
flag = redisUtil.delete("testHash");
result = redisUtil.getHash("testHash","hashKey1");
System.out.println(result);
}
测试结果:
4、操作set
工具类代码:
/**
* 读取数据
*/
public Set<String> getSet(final String key) {
return redisTemplate.opsForSet().members(key);
}
/**
* 插入数据
*/
public long setSet(final String key, String[] values) {
long flag = 0;
try {
flag = redisTemplate.opsForSet().add(key,values[0],values[1]);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
测试类代码:
@Test
public void testSet(){
//插入hash
long flag1 = 0;
String[] values = {"testSet1","testSet2"};
flag1 = redisUtil.setSet("testSet",values);
System.out.println(flag1);
Set result = new HashSet();
//获取hash
result = redisUtil.getSet("testSet");
System.out.println(result);
Boolean flag = null;
//删除set
flag = redisUtil.delete("testSet");
result = redisUtil.getSet("testSet");
System.out.println(result);
}
测试结果:
5、操作zset
工具类代码:
/**
* 读取数据
*/
public Set<String> getZset(final String key) {
return redisTemplate.opsForZSet().range(key,0,2);
}
/**
* 插入数据
*/
public boolean setZset(final String key, String value,long index) {
boolean flag = true;
try {
flag = redisTemplate.opsForZSet().add(key,value,index);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
测试类代码:
@Test
public void testZSet(){
//插入ZSet
Boolean flag1 = true;
flag1 = redisUtil.setZset("testZset","testZset",1);
System.out.println(flag1);
Set result = new HashSet();
//获取ZSet
result = redisUtil.getZset("testZset");
System.out.println(result);
//删除ZSet
Boolean flag = null;
flag = redisUtil.delete("testZset");
result = redisUtil.getSet("testZset");
System.out.println(result);
}
测试结果:
完整代码
工具类代码:
package com.example.myblog.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Set;
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<String,String> redisTemplate;
/**
* 读取缓存
*/
public Set<String> getZset(final String key) {
return redisTemplate.opsForZSet().range(key,0,2);
}
/**
* 插入数据
*/
public boolean setZset(final String key, String value,long index) {
boolean flag = true;
try {
flag = redisTemplate.opsForZSet().add(key,value,index);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 读取缓存
*/
public Set<String> getSet(final String key) {
//可以多个值
return redisTemplate.opsForSet().members(key);
}
/**
* 插入数据
*/
public long setSet(final String key, String[] values) {
long flag = 0;
try {
flag = redisTemplate.opsForSet().add(key,values[0],values[1]);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 读取缓存
*/
public Object getHash(final String key, String hashKey) {
return redisTemplate.opsForHash().get(key,hashKey);
}
/**
* 写入缓存、更新缓存
*/
public void setHash(final String key, String hashKey, String value) {
try {
redisTemplate.opsForHash().put(key,hashKey,value);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 读取缓存
*/
public String getList(final String key,long index) {
return redisTemplate.opsForList().index("testList",index);
}
/**
* 写入缓存
*/
public long setList(final String key, String value) {
long result = 0;
try {
result = redisTemplate.opsForList().leftPush("testList","testList1");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 更新缓存
*/
public boolean getAndSetList(final String key,Long index, String value) {
boolean result = false;
try {
redisTemplate.opsForList().set(key,index,value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 读取缓存
*/
public String getString(final String key) {
return redisTemplate.opsForValue().get(key);
}
/**
* 写入缓存
*/
public boolean setString(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 更新缓存
*/
public boolean getAndSetString(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().getAndSet(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 删除缓存
*/
public boolean delete(final String key) {
boolean result = false;
try {
redisTemplate.delete(key);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
测试类代码:
package com.example.myblog;
import com.example.myblog.util.RedisUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashSet;
import java.util.Set;
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class MyblogApplicationTests {
@Autowired
private RedisUtil redisUtil;
@Test
public void test(){
this.testString();
this.testList();
this.testHash();
this.testSet();
this.testZSet();
}
@Test
public void testString(){
Boolean flag = null;
//插入string
flag = redisUtil.setString("testString","testString");
System.out.println(flag);
String result = "";
//获取string
result = redisUtil.getString("testString");
System.out.println(result);
//修改string
flag = redisUtil.getAndSetString("testString","rename");
System.out.println(flag);
//获取string
result = redisUtil.getString("testString");
System.out.println(result);
flag = redisUtil.delete("testString");
result = redisUtil.getString("testString");
System.out.println(result);
}
@Test
public void testList(){
Long flag = null;
//插入list
flag = redisUtil.setList("testList","testList1");
System.out.println(flag);
flag = redisUtil.setList("testList","testList2");
System.out.println(flag);
String result = "";
//获取list
result = redisUtil.getList("testList",1);
System.out.println(result);
//修改list
Boolean flag1 = null;
long index = 1;
flag1 = redisUtil.getAndSetList("testList",index,"hello");
System.out.println(flag);
//获取list
result = redisUtil.getList("testList",1);
System.out.println(result);
flag1 = redisUtil.delete("testList");
result = redisUtil.getString("testList");
System.out.println(result);
}
@Test
public void testHash(){
//插入hash
redisUtil.setHash("testHash","hashKey1","hashValue1");
Object result = new Object();
//获取hash
result = redisUtil.getHash("testHash","hashKey1");
System.out.println(result);
redisUtil.setHash("testHash","hashKey1","hello");
//修改hash
result = redisUtil.getHash("testHash","hashKey1");
System.out.println(result);
//删除
Boolean flag = null;
flag = redisUtil.delete("testHash");
result = redisUtil.getHash("testHash","hashKey1");
System.out.println(result);
}
@Test
public void testSet(){
//插入Set
long flag1 = 0;
String[] values = {"testSet1","testSet2"};
flag1 = redisUtil.setSet("testSet",values);
System.out.println(flag1);
Set result = new HashSet();
//获取Set
result = redisUtil.getSet("testSet");
System.out.println(result);
//获取Set
Boolean flag = null;
flag = redisUtil.delete("testSet");
result = redisUtil.getSet("testSet");
System.out.println(result);
}
@Test
public void testZSet(){
//插入ZSet
Boolean flag1 = true;
flag1 = redisUtil.setZset("testZset","testZset",1);
System.out.println(flag1);
Set result = new HashSet();
//获取ZSet
result = redisUtil.getZset("testZset");
System.out.println(result);
//删除ZSet
Boolean flag = null;
flag = redisUtil.delete("testZset");
result = redisUtil.getSet("testZset");
System.out.println(result);
}
}
测试结果:
总结
上面简单地介绍了springboot项目中如何使用redis进行缓存。简单测试了常用的插入、修改、查询、删除的方法,redis接口中还有很多方法,就不一一列举测试了,有兴趣可以多去看看源码。