0
点赞
收藏
分享

微信扫一扫

Redis缓存实现中通过Gson将Map格式转换为字符串进行存储

产品喵dandan米娜 2022-02-11 阅读 76
package com.jt;

import com.google.gson.Gson;
import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;

public class JedisTests {

    /**
     * 基于gson中的api对象,将map转换为json格式字符串
     * 然后将其存储到redis,并在存储时候,指定key的有效期
     * 然后再将redis中的json数据读出,转化为map对象,进行输出
     */
    @Test
    public void testStringOper02(){
        //1.连接
        Jedis jedis = new Jedis("192.168.126.128", 6379);
        //2.1生成map对象
        Map<String, Object> userMap = new HashMap<>();
        userMap.put("id", 200);
        userMap.put("username", "Jack");
        //2.2将map对象转换为json字符串
        Gson gson = new Gson();
        String jsonStr = gson.toJson(userMap);
        //2.3存储字符串
        String token = UUID.randomUUID().toString();
        jedis.setex(token, 5, jsonStr);
        //2.4读取
        jsonStr = jedis.get(token);
        System.out.println(jsonStr);
        //2.5转换成map
        Map map = gson.fromJson(jsonStr, Map.class);
        System.out.println(map);
        //3.释放资源
        jedis.close();

    }

    public void testStringOper01(){
        Jedis jedis = new Jedis("192.168.126.128", 6379);
        //2.1存储数据
        jedis.hset("point1", "x","100");
        jedis.hset("point1", "y","100");
        //2.2查询
        Map<String, String> ponit1 = jedis.hgetAll("ponit1");
        System.out.println(ponit1);
        //2.3判断key存在
        jedis.hexists("point1", "x");
        jedis.exists("point1");
    }

    @Test
    public void testListOper01(){
        Jedis jedis = new Jedis("192.168.126.128", 6379);
        //先进先出 队
        jedis.lpush("lst1", "A","b","c","d");
        String lst1 = jedis.lpop("lst1");
        System.out.println(lst1);
        //先进后出
        jedis.lpush("lst2", "A","b","c","d");
        String lst2 = jedis.rpop("lst2");
        System.out.println(lst2);
    }



    @Test
    public void testGetConnection(){
        //连接redis
        Jedis jedis = new Jedis("192.168.126.128",6379);
        //2.读写redis中String类型的数据
        jedis.set("name", "dhq");
        jedis.get("name");
        jedis.incr("num");
        jedis.set("age", "10");
        jedis.expire("age", 1);
        Set<String> keys = jedis.keys("name");
        System.out.println(keys);
        //3.释放资源
        jedis.close();
    }
}

redis在liunx中的常用命令:redis-cli  

redis的默认端口号:6379

举报

相关推荐

0 条评论