1. 程式人生 > 實用技巧 >springboot中redis操作String 物件 list 和Set

springboot中redis操作String 物件 list 和Set

pom檔案中加入spring-boot-starter-redis依賴,使使用整合的RedisTemplate和StringRedisTemplate來操作,序列化使用jackson的ObjectMapper。

注入三個操作類

 @Autowired
  private RedisTemplate redisTemplate;

  @Autowired
  private StringRedisTemplate stringRedisTemplate;

  @Autowired
  private ObjectMapper objectMapper;

  1.redis操作String和物件

很簡單,只要將key和value直接插入即可,使用StringRedisTemplate直接替換redisTemplate就好

     String content = "redis_op_string_key";
      String key = "redis_op_string_val";
      ValueOperations valueOperations = redisTemplate.opsForValue();
      valueOperations.set(key,content);//插入
      Object result = valueOperations.get(key);//取出

  2.redis操作物件

User user = new User(123,"test","測試");
final String content = objectMapper.writeValueAsString(user);//序列化
final String key = "redis_op_object";
 ValueOperations valueOperations = redisTemplate.opsForValue();
     valueOperations.set(key,content);

     Object result = valueOperations.get(key);

     
if (null != result){ User obj = objectMapper.readValue(result.toString(),User.class); log.info("讀取內容:{}",obj); }

3.redis操作list

 List<Person> list  = new ArrayList<>();
      list.add(new Person(1,21,"張三","阿修羅","塔山1號"));
      list.add(new Person(2,22,"李四","阿修","塔山2號"));
      list.add(new Person(3,23,"王五","羅","塔山3號"));
      final String key ="redis:test:list";
      ListOperations listOperations = redisTemplate.opsForList();

      for(Person p:list){
          listOperations.leftPush(key,p);
      }
      log.info("------取出redis中的list----");

      Object res = listOperations.rightPop(key);
      Person resp;
     while(res != null){
         resp=(Person)res;
          log.info(resp.toString());
          res=listOperations.rightPop(key);
      }

4.redis操作set

 List<PhoneUser> list=new ArrayList<>();
      list.add(new PhoneUser("103",130.0));
      list.add(new PhoneUser("101",120.0));
      list.add(new PhoneUser("102",80.0));
      list.add(new PhoneUser("105",70.0));
      list.add(new PhoneUser("106",50.0));
      list.add(new PhoneUser("104",150.0));
      log.info("構造一組無序的使用者手機充值物件列表:{}",list);
      final String key = "redis:sSet:key";
      ZSetOperations zSetOperations = redisTemplate.opsForZSet();
      for (PhoneUser p:list){
          zSetOperations.add(key,p,p.getFare());
      }
      Long size = zSetOperations.size(key);
      Set<PhoneUser> range = zSetOperations.range(key,0L,size);
      Set<Person> reverRange = zSetOperations.reverseRange(key,0L,size);
      for (PhoneUser u:range){
          log.info("快取讀取排序後的列表:"+u);
      }