Redis相关

1)常用方法

     addZSet(String key, double score, String value)  向set中添加数据,score为权重,表示按照该值排序

     Set<String> getZSet(String key, int start, int end) 向set中取数据

     delZSet(String key, String member) 向set中删除数据,member只能是String,不能是json数据

     delZSetByScore(String key,double start,double end) 通过权重删除ZSet中的数据,start=end时表示删除权重为多少的数据

      如果addZSet方法添加的value是一个json数据的话,那么使用delZSet的话不行,要用delZSetByScore.


2)  假如有如下页面:

 

  

 

      前台需要的是按时间排序好的数据,这样就不能只把json数据从redis中取出传到前台了。

      这里想到的方法是插入一条数据时在redis中存入map数据,map的值为日期,value为json数据。

      如下:

 

      

                Date date = sign.getInsertTime();
		SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
		String signDate = s.format(date);
		Map map = new HashMap();
		
		
		if (RedisUtil.getString("sign_" + sign.getUserName()) != null) {  //如果该用户在redis中有数据的话
			map = JsonUtil.getMapFromJson(RedisUtil.getString("sign_"
					+ sign.getUserName()));   //取出该用户的map(日期,json数据)的值

			JSONArray json = JSONArray.parseArray(JSONArray.toJSONString(map.get(signDate))); //signDate表示该条签名的发表日期,这里是要看该map中是否已经有该日期了,但是其实
                                                                                              //有没有的结果都是要把sign对象插入到json中去
			json.add(sign);
			map.put(signDate, json);  //如果之前map中有该日期了,则重新给该日期赋值,如果没有则直接赋值


		} else {
		    map.put(signDate, JSONArray.toJSON(sign));//把sign对象赋值给该日期
		}

		RedisUtil.addString("sign_" + sign.getUserName(), JSONObject
				.toJSON(map).toString());

 

    当删除一条数据时,如下:

   

Map map = new HashMap();
			Date date = sign.getInsertTime();
			SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
			String signDate = s.format(date);

			if (RedisUtil.getString("sign_" + sign.getUserName()) != null) {
				map = JsonUtil.getMapFromJson(RedisUtil.getString("sign_"
						+ sign.getUserName()));

				JSONArray json = JSONArray.parseArray(JSONArray.toJSONString(map.get(signDate)));
				List list = JsonUtil.getDTOList(json.toString(), SpaceSign.class);  //json转换成list
				for(int i=0;i<list.size();i++){
					SpaceSign spaceSign = (SpaceSign)list.get(i);
					if(spaceSign.getId()==signId){
						list.remove(i);//删除该对象
					}
				}
				json = JSONArray.parseArray(JSONArray.toJSONString(list)); //重新生成json对象
				
				if(!json.isEmpty()){
				  map.put(signDate, json);  //如果删除该对象后该日期依然有json数据,那么重新给该日期赋值
				}
				else{
				  map.remove(signDate);  //如果删除该对象后该日期已无json数据,那么直接从map中删除该日期
				}
			}
			RedisUtil.addString("sign_" + sign.getUserName(), JSONObject
					.toJSONString(map));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值