一、POM.XML 依赖Redis包
二、设置配置文件application.properties
三、Redis缓存配置类
四、Redis工具类
@Component
public class RedisUtils {
@Autowired
RedisTemplate<String, Object> redisTemplate;
/**
* 写入缓存
* @param key
* @param object
* @return
*/
public boolean set(String key,Object object) {
boolean b = false;
try {
redisTemplate.opsForValue().set(key, object);
b=true;
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
/**
* 写入有时效性的缓存
* @param key
* @param object
* @param timeout 时效,秒
* @return
*/
public boolean set(String key,Object object, Long timeout) {
boolean b = false;
try {
redisTemplate.opsForValue().set(key, object);
redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
b=true;
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
/**
* 读取缓存
*
* @param key
* @return
*/
public String get(final String key) {
Object result = null;
redisTemplate.setValueSerializer(new StringRedisSerializer());
result = redisTemplate.opsForValue().get(key);
if(result==null){
return null;
}
return result.toString();
}
/**
* 读取实体对象的缓存
* @param key
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public <T extends INsModel> T getObject(String key,Class<T> clazz){
this.redisTemplate.setValueSerializer(new
Jackson2JsonRedisSerializer<T>(clazz));
return (T)this.redisTemplate.opsForValue().get(key);
}
/**
* 删除缓存
* @param key
* @return
*/
public boolean delete(String key) {
boolean b = false;
try {
redisTemplate.delete(key);
} catch (Exception e) {
e.printStackTrace();
}
return b;
}
/**
* 批量删除
* @param keys
*/
public void delete(String... keys) {
for (String key : keys) {
this.delete(key);
}
}
/**
* 判断缓存中是否有对应的value
*
* @param key
* @return
*/
public boolean containsKey(final String key) {
return redisTemplate.hasKey(key);
}
/**
* 缓存MAP
* @param key
* @param value
* @return
*/
public boolean setMap(String key, Map<String, String> value) {
boolean result = false;
try {
redisTemplate.opsForHash().putAll(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 缓存有时效性得MAP
* @param key
* @param value
* @param timeout 时效,秒
* @return
*/
public boolean setMap(String key, Map<String, String> value,Long timeout) {
boolean result = false;
try {
redisTemplate.opsForHash().putAll(key, value);
redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 获取MAP缓存
* @param key
* @return
*/
public Map<Object,Object> getMap(String key) {
Map<Object, Object> result =new HashMap<Object,Object>();
try {
result= redisTemplate.opsForHash().entries(key);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
五、测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes= {DemoApplication.class})
public class DemoApplicationTests {
@Autowired
RedisUtils redisUtils;
@Test
public void setRedis() {
redisUtils.set("edu", "本科");
}
@Test
public void setUsersRedis() {
Users users = new Users();
users.setTname("huangm");
users.setSex("男");
users.setAge(30);
redisUtils.set("users", users);
}
@Test
public void setMap() {
Map<String, String> map = new HashMap<>();
map.put("name", "zhangs");
map.put("age", "30");
map.put("sex", "men");
map.put("edu", "本科");
redisUtils.setMap("map", map);
}
@Test
public void delete() {
redisUtils.delete("users","edu","map");
}
}
执行上面3个赋值方法后,Redis里面就会写入3个数据信息,如下图
执行delete() 方法后,数据就会被删除,其他情况大家可以自己一一测试。