javaee论坛
金科官网
关闭此广告

普通会员

4

帖子

0

回复

12

积分

楼主
发表于 2017-09-05 22:46:05 | 查看: 185 | 回复: 0

Spring4整合Redis(二)

       各位大牛!小弟小白一个,只是喜欢将自己整合的一些东西分享给同僚们如果有不对的地方欢迎批评指导,如果你觉得我写的东西不入流可以右上角点×,给小白一些机会我不可能一直白下去,我也在努力学习,把更好的东西分享给大家,我们一起努力!!!


接着Spring4整合Redis(一)来说

六.Spring4整合Redis基本大功告成

     6.1测试redis模板(注意不是RedisCache而是redisTemplate)       

            package com.jk.oa.redis.service;

            import java.util.ArrayList;

            import java.util.List;

            import java.util.Map;

            import org.springframework.beans.factory.annotation.Autowired;

            import org.springframework.dao.DataAccessException;

            import org.springframework.data.redis.connection.RedisConnection;

            import org.springframework.data.redis.core.BoundHashOperations;

            import org.springframework.data.redis.core.HashOperations;

            import org.springframework.data.redis.core.RedisCallback;

            import org.springframework.data.redis.core.RedisTemplate;

            import org.springframework.data.redis.core.ValueOperations;

            import org.springframework.data.redis.serializer.RedisSerializer;

            import org.springframework.stereotype.Service;

            

            import com.jk.oa.pojo.User;

            

            @Service

            public class TestServiceImpl implements TestService{

                //通过注解自动注入redisTemplate

             @Autowired

             private RedisTemplate redisTemplate;


                

        @Override

             public void addRedis(Map<String,Object> map) {

                        //通过主键生成策略获得自增主键

             Long in = redisTemplate.opsForValue().increment("nextId",1);

                        //将主键存入next_id_list

             redisTemplate.opsForList().leftPush("next_id_list",in.toString());

                        // redisTemplate.opsForHash();可以操作Hash数据;

             HashOperations<String, Object, Object>  hash = redisTemplate.opsForHash();

                         // 将前台传过来的map中在加入userId数据 

             map.put("userId", in.toString());

                        //将数据存入redis   Hash类型

             hash.putAll("hash_naxt_"+in, map);

             }

             @Override

             public List showTestRedis() {

             List list = new ArrayList();

                        //通过redisTemplate.opsForList();可以操作list数据类型的数据

                        //这里求出了next_id_list这个key中所有的数据(这里通过面存的只是Id,通过Id在下面查hash的数据如果这里不                         //太清楚参考菜鸟联盟的redis增删改查)(0,-1)代表取得所有

             List<String> range = redisTemplate.opsForList().range("next_id_list", 0, -1);

             User user=null;

                        //循环我们查出来的List(里面只有Id)

             for (String id : range) {

                                //通过id查询hash的数据

             Map en = redisTemplate.opsForHash().entries("hash_naxt_"+id);

                                //放入list

             list.add(en);

             }

             return list;

             }

            

                    }   

     6.2  测试@Cacheable以及实际应用

        import org.springframework.cache.annotation.Cacheable;//此注解的包

        ----------------------------------------------------

        下面是我的action层

        

        @RequestMapping("showApplyPage")

@ResponseBody

@Cacheable(value="redis",key="'showApplyPage'+#whereMap.get('page')")

public PageEntity showApplyPage(HttpServletRequest req,HttpServletResponse re,@RequestParam Map<String,Object>             whereMap){

User user =(User)req.getSession().getAttribute("user");

whereMap.put("userId",user.getUserId());

PageEntity pe = purchaseservice.showApplyPage(whereMap);

return pe;

}

         标红是唯一的重点

                     value就是我们在配置文件中配置的那个,key就是我们要存在redis的key注意key中字符串一定要用单引号,变       key 的变量也就是参数要用“#”的形式修饰这个参数

         @Cacheable(value="redis",key="'showApplyPage'+#whereMap.get('page')")

    这样就可以不用我们在进行判断来讲查出来的数据放入redis通过这个注解可以直接存入redis;


        Ok至此Spring整合redis告一段落(这些离不了宁哥的帮助)!

                感谢宁哥!!

        大家如果有什么问题可以在下面留言!!


                                                                                                                                                     -------金科教育,联系电话:010-8044-3291

普通会员

0

帖子

0

回复

18

积分
沙发
发表于 2017-09-06 07:42:45

还是宁哥牛牛,张嘴就来。有句话怎么说来着?电脑在手、天下我有。。呃····    是他有

普通会员

0

帖子

1029

回复

50

积分
板凳
发表于 2017-09-07 14:18:24

看我头像

普通会员

0

帖子

0

回复

46

积分
地板
发表于 2017-09-13 08:27:39

6666666666

普通会员

0

帖子

0

回复

46

积分
地板
发表于 2017-09-13 08:27:39

6666666666

普通会员

0

帖子

0

回复

46

积分
5#
发表于 2017-09-13 08:27:40

6666666666

普通会员

0

帖子

0

回复

46

积分
5#
发表于 2017-09-13 08:27:40

6666666666

普通会员

0

帖子

0

回复

46

积分
5#
发表于 2017-09-13 08:27:40

6666666666

普通会员

0

帖子

0

回复

46

积分
7#
发表于 2017-09-13 08:27:40

6666666666

普通会员

0

帖子

0

回复

46

积分
9#
发表于 2017-09-13 08:27:40

6666666666

普通会员

0

帖子

0

回复

46

积分
9#
发表于 2017-09-13 08:27:40

6666666666

您需要登录后才可以回帖 登录 | 立即注册

技术链接: csdneye51cto

技术支持 金科教育 V1.0 © 2016-2017

 京ICP备17040661号-2