redis hset使用
首先我来说一下场景:
原来是程序是这样的,在网站上面有一个网友互动的聊天平台 可以发送聊天记录,然后把这些记录都存储到数据库中,初始化的时候从数据库取出来存储到一个static map里面,然后页面发送消息的时候更新这个map以及数据库,每秒取一次,取得是map中的数据。
现在我需要把这个map缓存机制换为redis
//判断redis中是否有这个map redisUtil见前篇
if (redisutil.HASH.hlen("ctl:sub_id:" + sub_id) > 0L) {
cb.setIndex_num((int)redisutil.HASH.hlen("ctl:sub_id:" + sub_id));
}
cb.setIndex_num((int)redisutil.HASH.hlen("ctl:sub_id:" + sub_id));
}
//把插元素到map里面 redisutil类这里三个参数都是byte[]
redisutil.HASH.hset("ctl:sub_id:" + sub_id, cb.getChat_id(),SerializableUtil.serialize(cb));
redisutil.HASH.hset("ctl:sub_id:" + sub_id, cb.getChat_id(),SerializableUtil.serialize(cb));
//获取数据的时候
if ((is_t_audit == 1) && ((int)redisutil.HASH.hlen("atl:sub_id:" + sub_id) > 0))
{
//前面是以参数byte[]形式插入的 但是这里可以用string的方式取出来
Map<String,String> amap = redisutil.HASH.hgetAll("atl:sub_id:" + sub_id);
for (String s : amap.keySet()) {
{
//前面是以参数byte[]形式插入的 但是这里可以用string的方式取出来
Map<String,String> amap = redisutil.HASH.hgetAll("atl:sub_id:" + sub_id);
for (String s : amap.keySet()) {
//这里需要返回byte[]那么参数要为byte[]
byte []temp= redisutil.HASH.hget(("atl:sub_id:" + sub_id).getBytes(),s.getBytes());
ChatBean cb = (ChatBean)SerializableUtil.deserialize(temp);
tL.add(cb);
}
}
byte []temp= redisutil.HASH.hget(("atl:sub_id:" + sub_id).getBytes(),s.getBytes());
ChatBean cb = (ChatBean)SerializableUtil.deserialize(temp);
tL.add(cb);
}
}