Springboot整合Redis(三) : 整合Redis

一、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()  方法后,数据就会被删除,其他情况大家可以自己一一测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值