面试官:Redis五种基本数据类型的应用场景是啥?
副标题[/!--empirenews.page--]
string 缓存 简单key-value存储 分布式锁 setnx key value,当key不存在时,将 key 的值设为 value ,返回1 若给定的 key 已经存在,则setnx不做任何动作,返回0。 当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示获取锁失败,整体思路大概就是这样 计数器 如知乎每个问题的被浏览器次数 ![]()
分布式全局唯一id 分布式全局唯一id的实现方式有很多,这里只介绍用redis实现 ![]() 每次获取userId的时候,对userId加1再获取,可以改进为如下形式 ![]() 直接获取一段userId的最大值,缓存到本地慢慢累加,快到了userId的最大值时,再去获取一段,一个用户服务宕机了,也顶多一小段userId没有用到
hashredis的散列可以让用户将多个键值对存储到一个Redis的键里面,散列非常适用于将一些相关的数据存储在一起。类似map的一种结构,将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存到redis中,以后每次读写内存时,就可以操作hash里的某个字段 list消息队列 ![]() 在list里面一边进,一边出即可
新浪/Twitter用户消息列表 ![]() 加入说小编li关注了2个微博a和b,a发了一条微博(编号为100)就执行如下命令
b发了一条微博(编号为200)就执行如下命令:
假如想拿最近的10条消息就可以执行如下命令(最新的消息一定在list的最左边):
set无序集合,自动去重,将数据放到set中就可去重,可以基于JVM的HashSet去重,如果系统部署在多台机器上,就可以用redis进行全局去重 可以基于set做交集,并集,差集的操作。如把2个人的粉丝列表弄一个交集,就能看到两个人的共同好友是谁 实现点赞,签到,like等功能 ![]()
实现关注模型,可能认识的人 ![]() seven关注的人 sevenSub -> {qing, mic, james} 青山关注的人 qingSub->{seven,jack,mic,james} Mic关注的人 MicSub->{seven,james,qing,jack,tom}
电商商品筛选 ![]() 每个商品入库的时候即会建立他的静态标签列表如,品牌,尺寸,处理器,内存
zset排序的set,可以去重还可以排序,写进去的时候给一个分数,自动根据根据分数排序,分数可以自定义排序规则 redis的zset天生是用来做排行榜的、好友列表, 去重, 历史记录等业务需求 ![]()
(编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |