redis在 java中操作不同数据类型

//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);
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值