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
- redis 与赞和踩
- redis安装与IMagic和Jmagic安装
- redis和memcached的区别与总结
- memcached 和 redis 的区别与选择
- node.js 与 redis 与 express 和session协同工作
- ttserver 与 memcached 与 redis 的共同和区别
- Redis的安装、部署和与Spring Cache整合
- Celery、flower和celery-redis 的安装与使用
- Redis String类型和Hash类型学习笔记与总结
- windows下redis 和 hiredis的编译与使用
- Memcache和Redis的详细理解与比较
- Redis与Memcache的区别和应用场景
- redis存储与读取对象和对象集合
- Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
- Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
- php与redis扩展安装和使用-Redis学习笔记六
- Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
- Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
- Nginx secure_link防盗链模块
- C++ 获取linux和windows系统的用户名
- Hyperledger Fabric 相关概念
- Linux xargs命令详解
- 一文了解各种卷积结构原理及优劣
- redis 与赞和踩
- 线段树-单点更新-hihoCoder1077
- Maven 项目名称红色感叹号的问题总结
- JAVA企业面试题精选 数据库21-30
- 3DSlicer4:模块管理(二)场景视图、体数据、体绘制
- typeof和instanceof在js中的应用
- java中的数组各项遍历的俩个方法
- 自定义简单TextView
- WebView.setVisibility(View.VISIBLE)后自动滚动问题