//list set zSet Hash 删除所有元素的方法
redisTemplate.delete("name");
/**
* 注入redisTemplate
/
/*
* 单个值得缓存 boundValueOps
*/
@Test
public void setValue() {
redisTemplate.boundValueOps("name").set("zhangsan");
}
@SuppressWarnings("unchecked")
@Test
public void getValue() {
redisTemplate.boundValueOps("name").get();
}
set
@SuppressWarnings("unchecked")
@Test
public void deleValue() {
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:redis/applicationContext-redis.xml")
public class TestSet {
@Autowired
private RedisTemplate<String, String> redisTemplate;
/**
* set单个值得缓存 boundSetOps
* @Ignore 忽略注解:该测试方法不执行
*/
@Test
@Ignore
public void setSet() {
//添加值add
redisTemplate.boundSetOps("name").add("zs");
redisTemplate.boundSetOps("name").add("ls");
redisTemplate.boundSetOps("name").add("ww");
}
@Test
@Ignore
public void getSet() {
//获set取值.members();
Set<String> set = redisTemplate.boundSetOps("name").members();
System.out.println(set);
}
@Test
public void removeValue() {
//remove移除某个缓存的属性值
redisTemplate.boundSetOps("name").remove("zs");
Set<String> set = redisTemplate.boundSetOps("name").members();
System.out.println(set);
}
}
//remove移除某个缓存
redisTemplate.delete("name");
}
list
/**list的存取
* set时无序不重复的,zset是,list是有序可以重复的
* redis list是有左压栈和右压栈的区别的,右压栈是按照最后一个放入在后面,左压栈是最后一个在第一的位置
*
*/
@Test
@Ignore
public void setList() {
//redisTemplate.boundZSetOps("zset").add;
//右压栈
redisTemplate.boundListOps("list").rightPush("zs");
redisTemplate.boundListOps("list").rightPush("ls");
redisTemplate.boundListOps("list").rightPush("ww");
//左压栈
redisTemplate.boundListOps("key").leftPush("one");
redisTemplate.boundListOps("key").leftPush("two");
redisTemplate.boundListOps("key").leftPush("three");
}
//显示list里面的值,range表示范围
@Test
public void getList() {
List<String> range = redisTemplate.boundListOps("list").range(0, 10);
List<String> list = redisTemplate.boundListOps("key").range(0, 100);
System.out.println("range="+range+ " list="+list );
//取出缓存指定的元素,按索引位置查询相应的值
System.out.println(redisTemplate.boundListOps("list").index(1));
}
@Test
@Ignore
public void removeList() {
//删除指定元素的个数,remove 1代表删除一个,ww为删除的元素的对象
redisTemplate.boundListOps("list").remove(1, "ww");
}
hash
/**
* 设置缓存hash的值,hash其实就是Map 是key-value 存储的一种方式
*/
@Autowired
private RedisTemplate<String, ?> redisTemplate;
@Test
@Ignore
public void setHash() {
//向Hash中添加值
redisTemplate.boundHashOps("hash").put("a", 1);
redisTemplate.boundHashOps("hash").put("b", 2);
redisTemplate.boundHashOps("hash").put("c", 3);
redisTemplate.boundHashOps("hash").put("d", 4);
redisTemplate.boundHashOps("hash").put("properties", "properties");
}
@Test
public void getKeyValue() {
//得到所有的key,无序的
//Set<Object> keys = redisTemplate.boundHashOps("hash").keys();
//System.out.println(keys);
//得到所有的value,无序的
//List<Object> values = redisTemplate.boundHashOps("hash").values();
//System.out.println(values);
//根据key得到value
String value = (String) redisTemplate.boundHashOps("hash").get("properties");
System.out.println("value="+value);
//删除key对应的value值
//redisTemplate.boundHashOps("hash").delete("a");
}
//将广告存在一个内,使用hash进行存储并且Hash的使用商品类id别做key
List<TbContent> contentList = (List<TbContent>) redisTemplate.boundHashOps("content").get(categoryId);
缓存更新应该是在更,删,改
@Override
public void update(TbContent content){
//查询原来的categoryId(原类别)
Long categoryId = contentMapper.selectByPrimaryKey(content.getId()).getCategoryId();
//清除之前的缓存数据(原类别)
redisTemplate.boundHashOps("content").delete(categoryId);
//如果修改了categoryId,那么就要清除两次缓存,第一次是类别1的id(原类别),第二次为类别2二的id(现类别)
//判断类别是否改变
if(categoryId.longValue() != content.getCategoryId().longValue()) {
redisTemplate.boundHashOps("content").delete(content.getCategoryId());
}
contentMapper.updateByPrimaryKey(content);
}