package com.elab.redis.spring;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.elab.redis.CacheTemplate;
import com.elab.redis.RedisSpringBoot;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.io.IOException;
import java.util.List;

/**
 * springData
 *
 * @author ： liukx
 * @time ： 2020/7/15 - 11:12
 */
public class SpringDataTest extends RedisSpringBoot {

    @Autowired
    private CacheTemplate cacheTemplate;

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void set() throws IOException {

//        cacheTemplate.set().add("aaa","a","b","c");
//
//
//        RLock xxx = cacheTemplate.getRedissonClient().getLock("xxx");
//        cacheTemplate.string().set("abc", "cccc");
//        Object abc = cacheTemplate.string().get("abc");
//        System.out.println("--->" + abc);
//
//        redisTemplate.opsForValue().set("kkx", "abc");
//
//        Map<String, String> map = new HashMap<>();
//        map.put("lkx", "xxx");
//        map.put("xxx", "sss");
//        redisTemplate.opsForValue().set("obj", map);
//        Map<String, String> xiong = (Map<String, String>) redisTemplate.opsForValue().get("obj");
//        System.out.println(xiong);

//        // 存储值
//        cacheTemplate.map().put("aaa", "a-key", "v-value");
//        cacheTemplate.map().put("aaa", "b-key", "b-value");
//        cacheTemplate.map().put("aaa", "c-key", "c-value");
//        cacheTemplate.map().put("aaa", "d-key", "d-value");
//
//        // 获取key的hashkey的值
//        String val = (String) cacheTemplate.map().get("aaa", "d-key");
//        String val = (String) cacheTemplate.map().get("aaa", "fff");

        String key = "data_center:material_labels_key:1";
        Object value = cacheTemplate.string().get(key);

        List<JSONObject> jsonObjects = JSON.parseArray(value.toString(), JSONObject.class);
        jsonObjects.forEach((str) -> {
            String materialsId = str.getString("materialsId");
            cacheTemplate.map().put("data_center:material_labels_key:1111", materialsId, str.toJSONString());
        });

        System.out.println(jsonObjects.toArray());

        // 获取hash的key的所有值
//        Map<String, Object> dataMap = cacheTemplate.map().entries("data_center:material_labels_key:1");
//        System.out.println(dataMap.toString());
//        System.out.println(val);

        System.out.println("OK");
        System.in.read();

    }
}
