在写redis工具类中存取map时候,一直写不对,查找资料是要序列化和反序列化,是和存取对象一样的,同一个序列化,但是在使用的时候一直出错,提示类型不对,后来问一个老哥。他用我的代码就能跑出来,我自己缺一直报错,很奇怪,最后发现我自己完全搞混了redis的数据类型的概念。靠。真是无语自己,我要求存一个map类型的,我先在redis客户端手动添加一个集合map 存值为1.w,随便瞎存的,然后用我写的方法可劲去查询,一直报类型错误
//读Map
public static Map GetMap(String key) {
Jedis jedis = null;
Map obj = null;
try {
jedis = getJedis();
byte[] byt=jedis.get(key.getBytes());
Map map=(Map) unserizlize(byt);
return map;
}finally {
//方法归还
releaseResource(jedis);
}
}
后来查到有直接可以读取map值得方法,是redis自带的hgetAll(),就有用自带方法去测试
public static void main(String[] args) {
Jedis jedis = null;
try {
jedis = getJedis();
Map<String, String> map2 = jedis.hgetAll("keyMap");
System.out.println(map2);
} finally {
releaseResource(jedis);
}
发现还是拿不到,报空指针异常,很奇怪,我去redis客户端再三检查 ,是有值得,名字也没有问题,但是一直就是报错空的,md,老子值呢,然后再去网上找资料,发现自己手动在客户端添加的不是一个map类型的,是一个集合的,曹。能查出来就够就怪了,自己的理解概念完全错了。set是集合的,map是哈希的,非要把map定义集合,能不错吗,,,,赶紧去好好看看redis的五大数据类型的概念,好好理解下,真的是,被自己蠢哭!!!