当前位置: 首页 >> 我们的头条 >> 哈尔滨中央大街,item,何泓姗-摩尔搜索-ai技术-vr视角-国际顶尖团队组成的搜索团队 >> 正文

哈尔滨中央大街,item,何泓姗-摩尔搜索-ai技术-vr视角-国际顶尖团队组成的搜索团队

2019年07月12日 14:42:51     作者:admin     分类:我们的头条     阅读次数:161    

string

缓存

简略key-value存储

分布式锁

setnx key value,当key不存在时,将 key 的值设为 value ,回来1

若给定的 key 现已存在,则setnx不做任何动作,回来0。

当setnx回来1时,表明获取锁,做完操作今后del key,表明开释锁,假设setnx回来0表明获取锁失利,全体思路大约便是这样

计数器

如知乎每个问题的被浏览器次数

set key 0
incr key // incr readcount::{帖子id} 每阅览一次
get key // get readcount::{帖子id} 获取阅览量

分布式大局仅有id

分布式大局仅有id的完成方法有许多,这儿只介绍用redis完成

每次获取userId的时分,对userId加1再获取,能够改善为如下方法

直接获取一段userId的最大值,缓存到本地渐渐累加,快到了userId的最大值时,再去获取一段,一个用户服务宕机了,也顶多一小段userId没有用到

set userId 0
incr usrId //回来1
incrby userId 1000 //回来10001

hash

redis的散列能够让用户将多个键值对存储到一个Redis的键里边,散列十分适用于将一些相关的数据存储在一起。相似map的一种结构,将结构化的数据,比方一个目标(条件是这个目标没嵌套其他的目标)给缓存到redis中,今后每次读写内存时,就能够操作hash里的某个字段

list

音讯行列

在list里边一边进,一边出即可

## 完成方法一
lpush key value //一直往list左面放
brpop key value 10
//key这个list有元素时,直接弹出,没有元素被堵塞,直到等候超时或发现可弹出元素停止,上面比如超时时刻为10s

## 完成方法二
rpush key value
blpop key value 10

新浪/Twitter用户音讯列表

参加说小编li重视了2个微博a和b,a发了一条微博(编号为100)就履行如下指令

lpush msg::li 100

b发了一条微博(编号为200)就履行如下指令:

lpush msg::li 200

假设想拿最近的10条音讯就能够履行如下指令(最新的音讯一定在list的最左面):

lrange msg::li 0 9 //下标从0开端,[start,stop]是闭区间,都包括

set

无序调集,主动去重,将数据放到set中就可去重,能够依据JVM的HashSet去重,假设体系布置在多台机器上,就能够用redis进行大局去重

能够依据set做交集,并集,差集的操作。如把2个人的粉丝列表弄一个交集,就能看到两个人的一起老友是谁

完成点赞,报到,like等功能

// 1001用户给8001帖子点赞
sadd like::8001 1001
srem like::8001 1001 //撤销点赞
sismember like::8001 1001 //查看用户是否点过赞
smembers like::8001 //获取点赞的用户列表
scard like::8001 //获取点赞用户数

完成重视模型,或许知道的人

seven重视的人

sevenSub -> {qing, mic, james}

青山重视的人

qingSub->{seven,jack,mic,james}

Mic重视的人

MicSub->{seven,james,qing,jack,tom}

//回来sevenSub和qingSub的交集,即seven和青山的一起重视
sinter sevenSub qingSub -> {mic,james}
// 我重视的人也重视他,下面比如中我是seven

// qing在micSub中回来1,不然回来0
sismember micSub qing
sismember jamesSub qing

// 我或许知道的人,下面比如中我是seven
// 求qingSub和sevenSub的差集,并存在sevenMayKnow调集中
sdiffstore sevenMayKnow qingSub sevenSub -> {seven,jack}

电商产品挑选

每个产品入库的时分即会树立他的静态标签列表如,品牌,尺度,处理器,内存

// 将解救者y700P-001和ThinkPad-T480这两个元素放到调集brand::lenovo
sadd brand::lenovo 解救者y700P-001 ThinkPad-T480
sadd screenSize::15.6 解救者y700P-001 机械革新Z2AIR
sadd processor::i7 解救者y700P-001 机械革新X8TIPlus

// 获取品牌为联想,屏幕尺度为15.6,而且处理器为i7的电脑品牌(sinter为获取调集的交集)
sinter brand::lenovo screenSize::15.6 processor::i7 -> 解救者y700P-001

zset

排序的set,能够去重还能够排序,写进去的时分给一个分数,主动依据依据分数排序,分数能够自定义排序规矩

redis的zset天然生成是用来做排行榜的、老友列表, 去重, 历史记录等事务需求

// user1的用户分数为 10
zadd ranking 10 user1
zadd ranking 20 user2
// 取分数最高的3个用户
zrevrange ranking 0 2 withscores

除非特别注明,本文『哈尔滨中央大街,item,何泓姗-摩尔搜索-ai技术-vr视角-国际顶尖团队组成的搜索团队』来源于互联网、微信平台、QQ空间以及其它朋友推荐等,非本站作者原创。 本站作者admin不对本文拥有版权,如有侵犯,请投诉。我们会在72小时内删除。 但烦请转载时请标明出处:“本文转载于『摩尔搜索-ai技术-vr视角-国际顶尖团队组成的搜索团队』,原文地址:http://www.moe-search.com/articles/3298.html