redis存儲集合的方法的hset()和hget()方法,這兩個方法是采用哈希表的方式來實現(xiàn)的,在哈希表中給定一個哈希碼來存儲集合浴麻,而set()和get()方法只是通過獲取key來獲取它的value的值佣耐,相對于hset和hget方法,有點類似于二維直角坐標(biāo)系和三維直角坐標(biāo)系的區(qū)別屈留。
redis設(shè)計類:
public class MusicRedis {
private final JedisPool jedisPool;
public MusicRedis(String ip,int port){
jedisPool = new JedisPool(ip,port);
}
public long hset(String hkey,String key,String value){
Jedis jedis = jedisPool.getResource();
long result = jedis.hset(hkey,key,value);
jedis.close();
return result;
}
public String hget(String hkey,String key){
Jedis jedis = jedisPool.getResource();
String result = jedis.hget(hkey,key);
jedis.close();
return result;
}
}
在測試類中的代碼如下:
public void testRedis(){
musicList.setTopic("1");
List<MusicList> lists = new ArrayList<>();
List<MusicList> tt = new ArrayList<>();
for (int i =0;i<10 ;i++)
lists.add(musicList);
redis.hset("qqqq","musiclist",new Gson().toJson(lists));
String result = redis.hget("qqqq","musiclist");
if (!StringUtil.isBlank(result)){
tt = new Gson().fromJson(result,new TypeToken<List<MusicList>>(){}.getType());
}
for (MusicList m : tt){
System.out.println(m);
}
}
測試結(jié)果如下圖所示:
image.png
使用網(wǎng)頁使用redis前后進(jìn)行時間測試,因為第一次為連接數(shù)據(jù)庫测蘑,時間600MS較長灌危,扣除這一次
測試代碼段:
image.png
第一次測試結(jié)果:
image.png
第二次測試結(jié)果:
image.png
第三次測試結(jié)果:
image.png
后面幾次訪問該網(wǎng)頁,redisAfter的時間都是1MS沒有變了碳胳,可以看出來使用redis緩存在時間上比沒使用緩存好很多勇蝙。