LeetCode 騰訊精選練習50——002 兩數相加
阿新 • • 發佈:2021-01-21
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); }