加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

关于Redis的n种妙用,不只仅是缓存

发布时间:2019-06-25 16:10:28 所属栏目:编程 来源:IT界的小柠檬
导读:redis是键值对的数据库,常用的五种数据范例为字符串范例(string),散列范例(hash),列表范例(list),荟萃范例(set),有序荟萃范例(zset)。 Redis用作缓存,首要两个用途:高机能,高并发,由于内存自然支持高并发。 应用场景 漫衍式锁(string
副问题[/!--empirenews.page--]

关于Redis的n种妙用,不只仅是缓存

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)

如知乎每个题目的被赏识器次数

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)
  1. set key 0 
  2. incr key // incr readcount::{帖子id} 每阅读一次 
  3. get key // get readcount::{帖子id} 获取阅读量 

漫衍式全局独一id(string)

漫衍式全局独一id的实现方法有许多,这里只先容用redis实现

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)

每次获取userId的时辰,对userId加1再获取,可以改造为如下情势

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)

直接获取一段userId的最大值,缓存到当地逐步累加,快到了userId的最大值时,再去获取一段,一个用户处事宕机了,也顶多一小段userId没有效到

  1. set userId 0 
  2. incr usrId //返回1 
  3. incrby userId 1000 //返回10001 

动静行列(list)

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

  1. # 实现方法一 
  2. # 一向往list左边放 
  3. lpush key value  
  4. # key这个list有元素时,直接弹出,没有元素被阻塞,直到守候超时或发明可弹出元素为止,上面例子超时时刻为10s 
  5. brpop key value 10  
  6. # 实现方法二 
  7. rpush key value 
  8. blpop key value 10 

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)

新浪/Twitter用户动静列表(list)

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)

若是说小编li存眷了2个微博a和b,a发了一条微博(编号为100)就执行如下呼吁

  1. lpush msg::li 100 

b发了一条微博(编号为200)就执行如下呼吁:

  1. lpush msg::li 200 

若是想拿最近的10条动静就可以执行如下呼吁(最新的动静必然在list的最左边):

  1. # 下标从0开始,[start,stop]是闭区间,都包括 
  2. lrange msg::li 0 9  

抽奖勾当(set)

  1. # 介入抽奖勾当 
  2. sadd key {userId}  
  3. # 获取全部抽奖用户,大轮盘转起来 
  4. smembers key  
  5. # 抽取count名中奖者,并从抽奖勾当中移除 
  6. spop key count  
  7. # 抽取count名中奖者,不从抽奖勾当中移除 
  8. srandmember key count 

实现点赞,签到,like等成果(set)

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)

 
  1. # 1001用户给8001帖子点赞 
  2. sadd like::8001 1001 
  3. # 打消点赞 
  4. srem like::8001 1001 
  5. # 搜查用户是否点过赞 
  6. sismember like::8001 1001  
  7. # 获取点赞的用户列表 
  8. smembers like::8001  
  9. # 获取点赞用户数 
  10. scard like::8001  
  11. 实现存眷模子,也许熟悉的人(set) 

关于Redis的n种妙用,不只仅是缓存(附有自学资料分享哦)

seven存眷的人

sevenSub -> {qing, mic, james}

青山存眷的人

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

Mic存眷的人

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读