redis 与赞和踩

来源:互联网 发布:ec6108v9怎么安装软件 编辑:程序博客网 时间:2024/05/21 21:42

前言

  • 系统到了要实现赞和踩的阶段了;

REDIS

  • 总是听nosql,但还真不懂啊原来nosql真的和传统数据库不一样;是依赖与传统中的集合来的
  • redis的应用与集合的特性
    • hash:在一个hash表里面,键是string,值又是一个hash,然后就可以加很多很多东西;因为hash表本身就可以扩容的嘛;好处就是可以随着对象随便的增多属性或者减少属性;
    • set 和普通的set一样,用于去重,求交集啥的,都是很厉害的;比如我们的点赞功能,把一群人放在一个集合里,算一下有多少,就得到赞数
    • sortedset 排序的set,相当于优先队列,搞个什么排行榜的不错
    • list 一个普通的双向队列,最普通的列表呗
    • kv ,过期时间啥的

代码

  • 赞与踩
  • 我们实际存了一个hash,键呢就是内容类别+内容编号,比如是问题类,第几个,这样就确定是某一个集合,然后userId作为value,就将用户加入到这个集合中;既然是集合,自然可以去重,交集,并集啥的;
@Controllerpublic class LikeController {    private static final Logger logger = LoggerFactory.getLogger(LikeController.class);    @Autowired    LikeService likeService;    @Autowired    HostHolder hostHolder;    /**     * 点赞函数,很简单的代码,判断一下用户登没登陆     * 然后执行点赞操作,最后返回json串     * @param commentId     * @return     */    @RequestMapping(path = {"/like"}, method = {RequestMethod.POST})    @ResponseBody    public String like(@RequestParam("commentId") int commentId) {        if (hostHolder.getUser() == null) {            return WendaUtil.getJSONString(999);        }        long likeCount = likeService.like(hostHolder.getUser().getId(), EntityType.ENTITY_COMMENT, commentId);        return WendaUtil.getJSONString(0, String.valueOf(likeCount));    }    /**     * 踩的操作     * @param commentId     * @return     */    @RequestMapping(path = {"/dislike"}, method = {RequestMethod.POST})    @ResponseBody    public String dislike(@RequestParam("commentId") int commentId) {        if (hostHolder.getUser() == null) {            return WendaUtil.getJSONString(999);        }        long likeCount = likeService.disLike(hostHolder.getUser().getId(), EntityType.ENTITY_COMMENT, commentId);        return WendaUtil.getJSONString(0, String.valueOf(likeCount));    }}
  • 建立与redis的连接,然后重写各种方法
@Servicepublic class JedisAdapter implements InitializingBean {    private JedisPool jedisPool;    private static final Logger logger = LoggerFactory.getLogger(JedisAdapter.class);    public static void print(int index, Object object) {        System.out.println(String.format("%d,%s", index, object.toString()));    }    @Override    public void afterPropertiesSet() throws Exception {        jedisPool = new JedisPool("redis://localhost:6379/10");    }    /**     * 向redis中添加键值对     * @param key     * @param value     * @return     */    public long sadd(String key, String value) {        Jedis jedis = null;        try {            jedis = jedisPool.getResource();            return jedis.sadd(key, value);        } catch (Exception e) {            logger.error("发生异常");        }finally {            if (jedis != null) {                jedis.close();            }        }        return 0;    }    public long srem(String key, String value) {        Jedis jedis = null;        try {            jedis = jedisPool.getResource();            return jedis.srem(key, value);        } catch (Exception e) {            logger.error("发生异常");        }finally {            if (jedis != null) {                jedis.close();            }        }        return 0;    }    public long scard(String key) {        Jedis jedis = null;        try {            jedis = jedisPool.getResource();            return jedis.scard(key);        } catch (Exception e) {            logger.error("发生异常");        }finally {            if (jedis != null) {                jedis.close();            }        }        return 0;    }    public boolean sismember(String key,String value) {        Jedis jedis = null;        try {            jedis = jedisPool.getResource();            return jedis.sismember(key,value);        } catch (Exception e) {            logger.error("发生异常");        }finally {            if (jedis != null) {                jedis.close();            }        }        return false;    }}
阅读全文
0 0
原创粉丝点击