日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

微博不能關注怎么回事20566 微博不能關注人了是怎么回事

需求分析好友功能是目前社交場景的必備功能之一,一般好友相關的功能包含有:關注/取關、我(他)的關注、我(他)的粉絲、共同關注、我關注的人也關注他等這樣一些功能 。

微博不能關注怎么回事20566 微博不能關注人了是怎么回事


類似于這樣的功能我們如果采用數(shù)據(jù)庫做的話只是單純得到用戶的一些粉絲或者關注列表的話是很簡單也很容易實現(xiàn), 但是如果我想要查出兩個甚至多個用戶共同關注了哪些人或者想要查詢兩個或者多個用戶的共同粉絲的話就會很麻煩 , 效率也不會很高 。
但是如果你用redis去做的話就會相當?shù)暮唵味倚屎芨?。原因是redis自己本身帶有專門針對于這種集合的交集、并集、差集的一些操作 。
微博不能關注怎么回事20566 微博不能關注人了是怎么回事


設計思路總體思路我們采用MySQL + Redis的方式結合完成 。MySQL主要是保存落地數(shù)據(jù),而利用Redis的Sets數(shù)據(jù)類型進行集合操作 。
Sets擁有去重(我們不能多次關注同一用戶)功能 。一個用戶我們存貯兩個集合:一個是保存用戶關注的人 另一個是保存關注用戶的人 。
  • SADD 添加成員: 命令格式: SADD key member [member …] —– 關注
  • SREM 移除某個成員: 命令格式: SREM key member [member …] ——-取關
  • SCARD 統(tǒng)計集合內的成員數(shù): 命令格式: SCARD key ——-關注/粉絲個數(shù)
  • SISMEMBER 判斷是否是集合成員: 命令格式:SISMEMBER key member ———判斷是否關注(如果關注那么只可以點擊取關)
  • SMEMBERS 查詢集合內的成員: 命令格式: SMEMBERS key ——-列表使用(關注列表和粉絲列表)
  • SINTER 查詢集合的交集: 命令格式: SINTER key [key …] ——–共同關注、我關注的人關注了他
數(shù)據(jù)庫表設計這個數(shù)據(jù)庫表的結構比較簡單,主要記錄了用戶id、用戶關注的id和關注狀態(tài) 。
CREATE TABLE `t_follow` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_id` int(11) DEFAULT NULL COMMENT '當前登錄用戶的id',`follow_user_id` int(11) DEFAULT NULL COMMENT '當前登錄用戶關注的用戶的id',`is_valid` tinyint(1) DEFAULT NULL COMMENT '關注狀態(tài),0-沒有關注,1-關注了',`create_date` datetime DEFAULT NULL,`update_date` datetime DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用戶和用戶關注表';新建好友功能微服務添加依賴和配置pom依賴如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>redis-seckill</artifactId><groupId>com.zjq</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>ms-follow</artifactId><dependencies><!-- eureka client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- spring web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- spring data redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- commons 公共項目 --><dependency><groupId>com.zjq</groupId><artifactId>commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- swagger --><dependency><groupId>com.battcn</groupId><artifactId>swagger-spring-boot-starter</artifactId></dependency></dependencies></project>

推薦閱讀