自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官:Redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

運(yùn)維 數(shù)據(jù)庫運(yùn)維 Redis
Redis的散列可以讓用戶將多個鍵值對存儲到一個Redis的鍵里面,散列非常適用于將一些相關(guān)的數(shù)據(jù)存儲在一起。

[[273484]]

string

緩存

簡單key-value存儲

分布式鎖

setnx key value,當(dāng)key不存在時(shí),將 key 的值設(shè)為 value ,返回1

若給定的 key 已經(jīng)存在,則setnx不做任何動作,返回0。

當(dāng)setnx返回1時(shí),表示獲取鎖,做完操作以后del key,表示釋放鎖,如果setnx返回0表示獲取鎖失敗,整體思路大概就是這樣

計(jì)數(shù)器

如知乎每個問題的被瀏覽器次數(shù)

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?
  1. set key 0 
  2. incr key // incr readcount::{帖子id} 每閱讀一次 
  3. get key // get readcount::{帖子id} 獲取閱讀量 

分布式全局唯一id

分布式全局唯一id的實(shí)現(xiàn)方式有很多,這里只介紹用redis實(shí)現(xiàn)

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

 

每次獲取userId的時(shí)候,對userId加1再獲取,可以改進(jìn)為如下形式

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

 

直接獲取一段userId的最大值,緩存到本地慢慢累加,快到了userId的最大值時(shí),再去獲取一段,一個用戶服務(wù)宕機(jī)了,也頂多一小段userId沒有用到

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

hash

redis的散列可以讓用戶將多個鍵值對存儲到一個Redis的鍵里面,散列非常適用于將一些相關(guān)的數(shù)據(jù)存儲在一起。類似map的一種結(jié)構(gòu),將結(jié)構(gòu)化的數(shù)據(jù),比如一個對象(前提是這個對象沒嵌套其他的對象)給緩存到redis中,以后每次讀寫內(nèi)存時(shí),就可以操作hash里的某個字段

list

消息隊(duì)列

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

 

在list里面一邊進(jìn),一邊出即可

  1. ## 實(shí)現(xiàn)方式一 
  2. lpush key value //一直往list左邊放 
  3. brpop key value 10  
  4. //key這個list有元素時(shí),直接彈出,沒有元素被阻塞,直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止,上面例子超時(shí)時(shí)間為10s 
  5.  
  6. ## 實(shí)現(xiàn)方式二 
  7. rpush key value 
  8. blpop key value 10 

新浪/Twitter用戶消息列表

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

 

加入說小編li關(guān)注了2個微博a和b,a發(fā)了一條微博(編號為100)就執(zhí)行如下命令

  1. lpush msg::li 100 

b發(fā)了一條微博(編號為200)就執(zhí)行如下命令:

  1. lpush msg::li 200 

假如想拿最近的10條消息就可以執(zhí)行如下命令(最新的消息一定在list的最左邊):

  1. lrange msg::li 0 9 //下標(biāo)從0開始,[start,stop]是閉區(qū)間,都包含 

set

無序集合,自動去重,將數(shù)據(jù)放到set中就可去重,可以基于JVM的HashSet去重,如果系統(tǒng)部署在多臺機(jī)器上,就可以用redis進(jìn)行全局去重

可以基于set做交集,并集,差集的操作。如把2個人的粉絲列表弄一個交集,就能看到兩個人的共同好友是誰

實(shí)現(xiàn)點(diǎn)贊,簽到,like等功能

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?
  1. // 1001用戶給8001帖子點(diǎn)贊 
  2. sadd like::8001 1001 
  3. srem like::8001 1001 //取消點(diǎn)贊 
  4. sismember like::8001 1001 //檢查用戶是否點(diǎn)過贊 
  5. smembers like::8001 //獲取點(diǎn)贊的用戶列表 
  6. scard like::8001 //獲取點(diǎn)贊用戶數(shù) 

實(shí)現(xiàn)關(guān)注模型,可能認(rèn)識的人

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

 

seven關(guān)注的人

sevenSub -> {qing, mic, james}

青山關(guān)注的人

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

Mic關(guān)注的人

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

  1. //返回sevenSub和qingSub的交集,即seven和青山的共同關(guān)注 
  2. sinter sevenSub qingSub -> {mic,james} 
  3. // 我關(guān)注的人也關(guān)注他,下面例子中我是seven 
  4.  
  5. // qing在micSub中返回1,否則返回0 
  6. sismember micSub qing 
  7. sismember jamesSub qing 
  8.  
  9. // 我可能認(rèn)識的人,下面例子中我是seven 
  10. // 求qingSub和sevenSub的差集,并存在sevenMayKnow集合中 
  11. sdiffstore sevenMayKnow qingSub sevenSub -> {seven,jack} 

電商商品篩選

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?

 

每個商品入庫的時(shí)候即會建立他的靜態(tài)標(biāo)簽列表如,品牌,尺寸,處理器,內(nèi)存

  1. // 將拯救者y700P-001和ThinkPad-T480這兩個元素放到集合brand::lenovo 
  2. sadd brand::lenovo 拯救者y700P-001 ThinkPad-T480 
  3. sadd screenSize::15.6 拯救者y700P-001 機(jī)械革命Z2AIR 
  4. sadd processor::i7 拯救者y700P-001 機(jī)械革命X8TIPlus 
  5.  
  6. // 獲取品牌為聯(lián)想,屏幕尺寸為15.6,并且處理器為i7的電腦品牌(sinter為獲取集合的交集) 
  7. sinter brand::lenovo screenSize::15.6 processor::i7 -> 拯救者y700P-001 

zset

排序的set,可以去重還可以排序,寫進(jìn)去的時(shí)候給一個分?jǐn)?shù),自動根據(jù)根據(jù)分?jǐn)?shù)排序,分?jǐn)?shù)可以自定義排序規(guī)則

redis的zset天生是用來做排行榜的、好友列表, 去重, 歷史記錄等業(yè)務(wù)需求

面試官:redis五種基本數(shù)據(jù)類型的應(yīng)用場景是啥?
  1. // user1的用戶分?jǐn)?shù)為 10 
  2. zadd ranking 10 user1 
  3. zadd ranking 20 user2 
  4. // 取分?jǐn)?shù)最高的3個用戶 
  5. zrevrange ranking 0 2 withscores 

 

責(zé)任編輯:龐桂玉 來源: 今日頭條
相關(guān)推薦

2024-11-04 06:20:00

Redis單線程

2023-07-04 08:41:08

Redis數(shù)據(jù)類型

2023-11-13 08:31:25

SpringRedis存儲

2019-11-11 14:55:25

Redis數(shù)據(jù)類型命令

2020-12-01 11:50:49

數(shù)據(jù)庫Redis面試

2020-11-04 07:34:02

Redis數(shù)據(jù)類型

2021-06-15 09:20:08

Redis數(shù)據(jù)類型

2021-05-31 10:35:34

TCPWebSocket協(xié)議

2024-05-29 14:34:07

2023-04-28 15:05:25

React軟件項(xiàng)目可維護(hù)性

2021-07-12 08:35:24

組件應(yīng)用場景

2021-09-16 07:52:18

算法應(yīng)用場景

2021-07-07 08:36:45

React應(yīng)用場景

2024-03-13 14:57:37

2011-05-26 14:27:56

java

2021-02-25 07:08:30

JavaScript 前端面試題

2021-11-09 08:51:13

模式命令面試

2021-11-05 07:47:56

代理模式對象

2016-08-18 14:13:55

JavaScript基本數(shù)據(jù)引用數(shù)據(jù)

2021-11-10 07:47:49

組合模式場景
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號