关于Redis的n种妙用,不仅仅是缓存
副标题[/!--empirenews.page--]
redis是键值对的数据库,常用的五种数据类型为字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)。 Redis用作缓存,主要两个用途:高性能,高并发,因为内存天然支持高并发。 应用场景分布式锁(string) setnx key value,当key不存在时,将 key 的值设为 value ,返回1。若给定的 key 已经存在,则setnx不做任何动作,返回0。 当setnx返回1时,表示获取锁,做完操作以后del key,表示释放锁,如果setnx返回0表示获取锁失败,整体思路大概就是这样,细节还是比较多的,有时间单开一篇来讲解 计数器(string) 如知乎每个问题的被浏览器次数 ![]()
分布式全局唯一id(string) 分布式全局唯一id的实现方式有很多,这里只介绍用redis实现 每次获取userId的时候,对userId加1再获取,可以改进为如下形式 直接获取一段userId的最大值,缓存到本地慢慢累加,快到了userId的最大值时,再去获取一段,一个用户服务宕机了,也顶多一小段userId没有用到
消息队列(list) 在list里面一边进,一边出即可
新浪/Twitter用户消息列表(list) 假如说小编li关注了2个微博a和b,a发了一条微博(编号为100)就执行如下命令
b发了一条微博(编号为200)就执行如下命令:
假如想拿最近的10条消息就可以执行如下命令(最新的消息一定在list的最左边):
抽奖活动(set)
实现点赞,签到,like等功能(set)
seven关注的人 sevenSub -> {qing, mic, james} 青山关注的人 qingSub->{seven,jack,mic,james} Mic关注的人 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |