IntelliJ IDEA教程 Finder datetime colors dns vue图表 wps临时文件 java清空数组 less的比较级 python字典类型 python新手教程 配置python环境 java基础 java重写和重载 java编译环境 java判断文件是否存在 java中random java删除目录 linuxcat命令 ip隐藏 crazytalk cfqq网吧任务 黑市商人 js倒计时 烧饼修改器打不开 c语言编程实例 古风头像女动漫 电脑cmd命令大全 vue引入第三方js python数组赋值 茸好珠 快手规则 nastran 速查表 华为杂志锁屏怎么设置 语音转文字转换器 ass转srt 召唤加点90刷图加点 只狼钟 发表评论
当前位置: 首页 > 学习教程  > 编程学习

仿微博社交平台系统设计[二]--使用redis的hash数据结构实现帖子点赞功能

2021/1/9 2:07:52 文章标签: 微博取消赞

背景: Redis基本数据结构 五种数据结构 这五种数据结构分别是STRING(字符串)、LIST(列表)、SET(集合)、HASH(哈希)、ZSET(有序集合); …

背景:

   Redis基本数据结构

     

  五种数据结构

   这五种数据结构分别是STRING(字符串)、LIST(列表)、SET(集合)、HASH(哈希)、ZSET(有序集合);

Redis Hset 命令

语法

redis Hset 命令基本语法如下:

redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE 

实例

实例
redis 127.0.0.1:6379> HSET myhash field1 "foo"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSET website google "www.g.cn"       # 设置一个新域
(integer) 1

redis 127.0.0.1:6379>HSET website google "www.google.com" # 覆盖一个旧域

 点赞表的结构设计

CREATE TABLE `ins_awesome` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ins_id` int(11) NOT NULL COMMENT '帖子id',
  `uid` int(11) NOT NULL COMMENT '点赞人id',
  `awed_uid` int(11) NOT NULL COMMENT '被点赞人id',
  `type` int(11) DEFAULT NULL COMMENT '1是赞 2是取消赞',
  `create_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_at` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_uv` (`ins_id`,`uid`),
  KEY `idx_uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=25193 DEFAULT CHARSET=utf8mb4;

 

redisTemplate的相关api:

/**
	 * Increment {@code value} of a hash {@code hashKey} by the given {@code delta}.
	 *
	 * @param key must not be {@literal null}.
	 * @param hashKey must not be {@literal null}.
	 * @param delta
	 * @return {@literal null} when used in pipeline / transaction.
	 */
	Long increment(H key, HK hashKey, long delta);

具体Java实现

private Long storyIncrease(Integer id, String type) {
    Long l = stringRedisTemplate.opsForHash().increment(storyKey(id), type, 1L);
    stringRedisTemplate.expire(storyKey(id), 3L, TimeUnit.DAYS);
    return l;
  }

为什么用stringredistemplate


本文链接:
http://www.dtmao.cc/news_show_1100318.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?