大发彩票网首页
        当前位置:大发彩票网-建站教程-数据库教程-Redis-Redis如何存储对象与集合示例详解

        Redis如何存储对象与集合示例详解

        时间:2018-05-05来源:大发彩票网 www.lhltmj.com 作者:源码库 文章热度:

        大发彩票网 www.lhltmj.com 前言

        大家都知道在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术。前者主要是为了减轻数据库压力,大幅度提升性能。后者主要是为了提高用户的体验度,我理解的是再后端做的一个ajax请求(异步),并且像ribbmitmq等消息队列有重试机制等功能。

        这里主要讲redis/303688.html">redis如何把对象,集合存入,并且取出。下面话不多说了,来一起看看详细的介绍吧。

        1.在启动类上加入如下代码

        private Jedis jedis;private JedisPoolConfig config;private JedisShardInfo sharInfo;@Beanpublic Jedis jedis(){//连接redis服务器,192.168.0.100:6379// jedis = new Jedis("192.168.0.100", 6379);// //权限认证// jedis.auth("123456");// 操作单独的文本串config = new JedisPoolConfig(); 
        config.setMaxIdle(1000);//最大空闲时间config.setMaxWaitMillis(1000); //最大等待时间config.setMaxTotal(500); //redis池中最大对象个数sharInfo = new JedisShardInfo("192.168.0.100", 6379); 
        sharInfo.setPassword("123456"); 
        sharInfo.setConnectionTimeout(5000);//链接超时时间jedis = new Jedis(sharInfo);return jedis; 
        } 

        2.在application.yml当中加入redis配置

        spring: 
         redis: 
         database: 0 
         host: 101.132.191.77 
         port: 6379 
         password: 123456 
         pool: 
         max-idle: 8 #连接池最大连接数(使用负值表示没有限制) 
         min-idle: 0 # 连接池中的最小空闲连接 
         max-active: 8 # 连接池最大阻塞等待时间(使用负值表示没有限制) 
         max-wait: -1 # 连接池中的最大空闲连接 
         timeout: 5000 # 连接超时时间(毫秒) 

        3.新建SerializeUtil类,这个类主要是为了将对象序列化redis当中

        import java.io.ByteArrayInputStream; 
        import java.io.ByteArrayOutputStream; 
        import java.io.ObjectInputStream; 
        import java.io.ObjectOutputStream;/** 
        public class SerializeUtil 
        { 
         public static byte[] serialize(Object object) { 
         ObjectOutputStream oos = null; 
         ByteArrayOutputStream baos = null; 
         try {// 序列化baos = new ByteArrayOutputStream(); 
          oos = new ObjectOutputStream(baos); 
          oos.writeObject(object); 
          byte[] bytes = baos.toByteArray(); 
          return bytes; 
          } catch (Exception e) { 
         
          }return null; 
         } 
         public static Object unserialize( byte[] bytes) { 
         ByteArrayInputStream bais = null; 
         try { 
         // 反序列化bais = new ByteArrayInputStream(bytes); 
         ObjectInputStream ois = new ObjectInputStream(bais); 
         return ois.readObject(); 
          } catch (Exception e) { 
         
          }return null; 
         } 
         } 

        4.我封装了一个RedisServiceImpl类,主要是用对redis设值和取值

        import com.ys.util.redis.SerializeUtil; 
        import org.springframework.beans.factory.annotation.Autowired; 
        import org.springframework.data.redis.core.StringRedisTemplate; 
        import org.springframework.stereotype.Service; 
        import redis.clients.jedis.Jedis; 
        import java.util.List; 
        import java.util.Map; 
        import java.util.concurrent.TimeUnit; 
        @Service 
        public class RedisServiceImpl 
         
         {@Autowired 
         
         private StringRedisTemplate stringRedisTemplate; 
         @Autowired 
         private Jedis jedis; 
         public void setStr(String key, String value) { 
         setStr(key, value, null); 
         } 
         public void setStr(String key, Object value, Long time) 
         {if(value == null){ 
         return; 
         }if(value instanceof String){ 
         String obj = (String) value; 
         stringRedisTemplate.opsForValue().set(key, obj); 
         }else if(value instanceof List){ 
         List obj = (List) value; 
         stringRedisTemplate.opsForList().leftPushAll(key,obj); 
         }else if(value instanceof Map){ 
         Map obj = (Map) value; 
         stringRedisTemplate.opsForHash().putAll(key,obj); 
         }if (time != null) 
         stringRedisTemplate.expire(key, time, TimeUnit.SECONDS); 
         } 
         public Object getKey(String key) 
         {return stringRedisTemplate.opsForValue().get(key); 
          } 
         public void delKey(String key) { 
         stringRedisTemplate.delete(key); 
         } 
         public boolean del(String key) 
         {return jedis.del(key.getBytes())>0; 
         } 
        } 

        5.测试redis是否ok,编写redisController类

        import com.ys.service.impl.RedisServiceImpl; 
        import com.ys.vo.IqProduct; 
        import org.springframework.beans.factory.annotation.Autowired; 
        import org.springframework.web.bind.annotation.RequestMapping; 
        import org.springframework.web.bind.annotation.RestController; 
        import java.util.ArrayList; 
        import java.util.Date; 
        import java.util.List; 
        @RestController 
         
        public class RedisServiceController 
         
         { 
        @Autowired 
         
        private RedisServiceImpl redisService; 
        @RequestMapping(value = "/setredis") 
        public String setredis(String keyredis){ 
         redisService.setStr(keyredis,"2018年1月26日"); 
         return "保存成功,请访问getredis查询redis"; 
        } 
        @RequestMapping(value = "/setObj") 
        public String setObj(String keyredis){ 
         IqProduct iqProduct = new IqProduct(); 
         iqProduct.setSort(1); 
         iqProduct.setTimestamp(new Date().getTime()); 
         iqProduct.setProductName("productname"); 
         // list.add(iqProduct); 
         redisService.set(keyredis, iqProduct); 
         return "保存成功,请访问getredis查询redis"; 
         } 
         @RequestMapping(value = "/getObj") 
         public Object getObj(String keyredis){ 
         Object object = redisService.get(keyredis); 
         if(object !=null){ 
         IqProduct iqProduct = (IqProduct) object; 
         System. out.println(iqProduct.getProductName()); 
         System. out.println(iqProduct.getId()); 
         System. out.println(iqProduct.getTimestamp()); 
         }return object; 
        } 
         @RequestMapping(value = "/delObj") 
         public boolean delObj(String keyredis) 
         {boolean del = redisService.del(keyredis); 
          return del; 
         } 
         @RequestMapping(value = "/getredis") 
         public String getredis(String keyredis){ 
         String getredis = (String) redisService.getKey(keyredis); 
         return "redis的key是===>"+getredis; 
         } 
         @RequestMapping(value = "/delredis") 
         public String delredis(String keyredis){ 
         redisService.delKey(keyredis); 
         return "删除成功,请通过getredis进行查询"; 
         } 
         @RequestMapping(value = "/setList") 
         public String setList(String keyredis){ 
         List list = new ArrayList();for (int i = 0;i<10;i++){ 
         IqProduct iqProduct = new IqProduct(); 
         iqProduct.setSort(1); 
         iqProduct.setTimestamp(new Date().getTime()); 
         iqProduct.setProductName("productname"); 
         list.add(iqProduct); 
         } 
         redisService.set(keyredis, list); 
         return "保存成功,请访问getredis查询redis"; 
         } 
         @RequestMapping(value = "/getList") 
         public Object getList(String keyredis){ 
         Object object = redisService.get(keyredis); 
         if(object !=null){ 
         List<IqProduct> iqProducts = (List<IqProduct>) object; 
         for (int i = 0;i<iqProducts.size();i++){ 
         IqProduct iqProduct = iqProducts.get(i); 
         System. out.println(iqProduct.getProductName()); 
         System. out.println(iqProduct.getId()); 
         System. out.println(iqProduct.getTimestamp()); 
         } 
         }return object; 
         } 
         @RequestMapping(value = "/delList") 
         public boolean delList(String keyredis) 
         { 
         boolean del = redisService.del(keyredis);return del; 
         } 
        } 

        6.测试结果

        redis,存储对象集合,存储对象,redis如何存储对象

        总结

        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU源码库的支持。


        注:相关教程知识阅读请移步到Redis频道。
        下一篇:没有了
        相关Redis
        热门标签

        大发彩票网官网 | 大发彩票网平台 |
      • 奖励生二孩家庭,力度可以更大些 2018-09-19
      • 曝詹姆斯邀请杜兰特同去湖人 但遭后者拒绝 2018-09-19
      • 74家财险公司净利润不足6亿元 2018-09-19
      • 长生生物被证监会立案调查 2018-09-19
      • 国企改革"双百行动"正式启动 下半年有望明显提速 2018-09-19
      • “吃鸡”手游现“731部队” 韩开发商下架道歉 2018-09-16
      • 多省不动产登记联网提速 专家称房地产税渐近 2018-09-16
      • 上半年居民消费榜出炉 安徽人均支出8482元排名15 2018-09-16
      • 鍩庡競鍥犱綘鑰屽噣 娴峰皵鍑€姘翠笌浣犱竴璧蜂笀閲忓煄甯傛枃鏄庘€斺€斿噣鍗冭矾 鏆栦竴鍩?鍏泭鍦ㄨ鍔 2018-09-16
      • 为啥卖药的都爱上了P2P? 2018-09-16
      • 烟台市拨付台风灾害救助资金630万元 2018-09-15
      • 浪潮软件(600756)融资融券 2018-09-15
      • 2018未来科学大奖公布:袁隆平李家洋等获奖—新闻—科学网 2018-09-15
      • 航拍巴山大峡谷 探索川东大地的奇妙瑰宝 2018-09-15
      • 河南省公布第一批“一网通办”前提下“最多跑一次”审批服务事项目录最大限度利企便民 2018-09-15