亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁(yè) > 知識(shí)庫(kù) > 利用Redis實(shí)現(xiàn)SQL伸縮的方法

利用Redis實(shí)現(xiàn)SQL伸縮的方法

熱門標(biāo)簽:天音通信電話機(jī)器人 高德地圖標(biāo)注商家在哪 江西南昌百應(yīng)電話機(jī)器人 400電話從哪里申請(qǐng)濱州 hbuilder地圖標(biāo)注 隨州營(yíng)銷電話機(jī)器人怎么樣 機(jī)器人電話機(jī)創(chuàng)意繪畫(huà) 400電話申請(qǐng)?jiān)趺纯?/a> 杭州400電話如何申請(qǐng)的

這篇文章主要介紹了利用Redis實(shí)現(xiàn)SQL伸縮的方法,包括講到了鎖和時(shí)間序列等方面來(lái)提升傳統(tǒng)數(shù)據(jù)庫(kù)的性能,需要的朋友可以參考下。

緩解行競(jìng)爭(zhēng)

我們?cè)赟entry開(kāi)發(fā)的早起采用的是sentry.buffers。 這是一個(gè)簡(jiǎn)單的系統(tǒng),它允許我們以簡(jiǎn)單的Last Write Wins策略來(lái)實(shí)現(xiàn)非常有效的緩沖計(jì)數(shù)器。 重要的是,我們借助它完全消除了任何形式的耐久性 (這是Sentry工作的一個(gè)非??山邮艿姆绞?。

操作非常簡(jiǎn)單,每當(dāng)一個(gè)更新進(jìn)來(lái)我們就做如下幾步:

  • 創(chuàng)建一個(gè)綁定到傳入實(shí)體的哈希鍵(hash key)
  • 使用HINCRBY使計(jì)數(shù)器值增加
  • HSET所有的LWW數(shù)據(jù)(比如 "最后一次見(jiàn)到的")
  • 用當(dāng)前時(shí)間戳ZADD哈希鍵(hash key)到一個(gè)"掛起" set

現(xiàn)在每一個(gè)時(shí)間刻度 (在Sentry中為10秒鐘) 我們要轉(zhuǎn)儲(chǔ)(dump)這些緩沖區(qū)并且扇出寫(xiě)道(fanout the writes)。 看起來(lái)像下面這樣:

  • 使用ZRANGE獲取所有的key
  • 為每一個(gè)掛起的key發(fā)起一個(gè)作業(yè)到RabbitMQ

現(xiàn)在RabbitMQ作業(yè)將能夠讀取和清除哈希表,和“懸而未決”更新已經(jīng)彈出了一套。有幾件事情需要注意:

  • 在下面我們想要只彈出一個(gè)設(shè)置的數(shù)量的例子中我們將使用一組排序(舉例來(lái)說(shuō)我們需要那100個(gè)舊集合)。
  • 假使我們?yōu)榱颂幚硪粋€(gè)鍵值來(lái)結(jié)束多道排序的作業(yè),這個(gè)人會(huì)得到no-oped由于另一個(gè)已經(jīng)存在的處理和清空哈希的過(guò)程。
  • 該系統(tǒng)能夠在許多Redis節(jié)點(diǎn)上不斷擴(kuò)展下去僅僅是通過(guò)在每個(gè)節(jié)點(diǎn)上安置把一個(gè)'懸置'主鍵來(lái)實(shí)現(xiàn)。

我們有了這個(gè)處理問(wèn)題的模型之后,能夠確?!按蟛糠智闆r下”每次在SQL中只有一行能夠被馬上更新,而這樣的處理方式減輕了我們能夠預(yù)見(jiàn)到的鎖問(wèn)題??紤]到將會(huì)處理一個(gè)突然產(chǎn)生且所有最終組合在一起進(jìn)入同一個(gè)計(jì)數(shù)器的數(shù)據(jù)的場(chǎng)景,這種策略對(duì)Sentry用處很多。

速度限制

出于哨兵的局限性,我們必須終結(jié)持續(xù)的拒絕服務(wù)攻擊。我們通過(guò)限制連接速度來(lái)應(yīng)對(duì)這種問(wèn)題,其中一項(xiàng)是通過(guò)Redis支持的。這無(wú)疑是在sentry.quotas范圍內(nèi)更直接的實(shí)現(xiàn)。

它的邏輯相當(dāng)直接,如同下面展示的那般:

def incr_and_check_limit(user_id, limit): 
 key = '{user_id}:{epoch}'.format(user_id, int(time() / 60)) 
  
 pipe = redis.pipeline() 
 pipe.incr(key) 
 pipe.expire(key, 60) 
 current_rate, _ = pipe.execute() 
  
 return int(current_rate) > limit 

我們所闡明的限制速率的方法是 Redis在高速緩存服務(wù)上最基本的功能之一:增加空的鍵字。在高速緩存服務(wù)中實(shí)現(xiàn)同樣的行為可能最終使用這種方法:

def incr_and_check_limit_memcache(user_id, limit): 
 key = '{user_id}:{epoch}'.format(user_id, int(time() / 60)) 
  
 if cache.add(key, 0, 60): 
  return False 
  
 current_rate = cache.incr(key) 
  
 return current_rate > limit 

事實(shí)上我們最終采取這種策略可以使哨兵追蹤不同事件的短期數(shù)據(jù)。在這種情況下,我們通常對(duì)用戶數(shù)據(jù)進(jìn)行排序以便可以在最短的時(shí)間內(nèi)找到最活躍用戶的數(shù)據(jù)。

基本鎖

雖然Redis的是可用性不高,我們的用例鎖,使其成為工作的好工具。我們沒(méi)有使用這些在哨兵的核心了,但一個(gè)示例用例是,我們希望盡量減少并發(fā)性和簡(jiǎn)單無(wú)操作的操作,如果事情似乎是已經(jīng)在運(yùn)行。這對(duì)于可能需要執(zhí)行每隔一段時(shí)間類似cron任務(wù)非常有用,但不具備較強(qiáng)的協(xié)調(diào)。

在Redis的這樣使用SETNX操作是相當(dāng)簡(jiǎn)單的:

from contextlib import contextmanagerr = Redis()@contextmanagerdef lock(key, nowait=True): 
 while not r.setnx(key, '1'): 
  if nowait: 
   raise Locked('try again soon!') 
  sleep(0.01) 
  
 # limit lock time to 10 seconds 
 r.expire(key, 10) 
  
 # do something crazy 
 yield 
  
 # explicitly unlock 
 r.delete(key) 

而鎖()內(nèi)的哨兵利用的memcached的,但絕對(duì)沒(méi)有理由我們不能在其切換到Redis。
時(shí)間序列數(shù)據(jù)

近來(lái)我們創(chuàng)造一個(gè)新的機(jī)制在Sentry(包含在sentry.tsdb中) 存儲(chǔ)時(shí)間序列數(shù)據(jù)。這是受RRD模型啟發(fā),特別是Graphite。我們期望一個(gè)快速簡(jiǎn)單的方式存儲(chǔ)短期(比如一個(gè)月)時(shí)間序列數(shù),以便于處理高速寫(xiě)入數(shù)據(jù),特別是在極端情況下計(jì)算潛在的短期速率。盡管這是第一個(gè)模型,我們依舊期望在Redis存儲(chǔ)數(shù)據(jù),它也是使用計(jì)數(shù)器的簡(jiǎn)單范例。

在目前的模型中,我們使用單一的hash map來(lái)存儲(chǔ)全部時(shí)間序列數(shù)據(jù)。例如,這意味所有數(shù)據(jù)項(xiàng)在都將同一個(gè)哈希鍵擁有一個(gè)數(shù)據(jù)類型和1秒的生命周期。如下所示:

{ 
 
  "type enum>:epoch>:shard number>": { 
 
    "id>": count> 
 
  }} 

因此在這種狀況,我們需要追蹤事件的數(shù)目。事件類型映射到枚舉類型"1".該判斷的時(shí)間是1s,因此我們的處理時(shí)間需要以秒計(jì)。散列最終看起來(lái)是這樣的:

 { 
 
  "1:1399958363:0": { 
 
    "1": 53, 
 
    "2": 72, 
 
  }} 

一個(gè)可修改模型可能僅使用簡(jiǎn)單的鍵并且僅在存儲(chǔ)區(qū)上增加一些增量寄存器。

"1:1399958363:0:1": 53 

我們選擇哈希映射模型基于以下兩個(gè)原因:

我們可以將所有的鍵設(shè)為一次性的(這也可能產(chǎn)生負(fù)面影響,但是目前為止是穩(wěn)定的)

大幅壓縮鍵值,這是相當(dāng)重要的處理

此外,離散的數(shù)字鍵允許我們?cè)趯⑻摂M的離散鍵值映射到固定數(shù)目的鍵值上,并在此分配單一存儲(chǔ)區(qū)(我們可以使用64,映射到32個(gè)物理結(jié)點(diǎn)上)

現(xiàn)在通過(guò)使用 Nydus和它的map()(依賴于一個(gè)工作區(qū))(),數(shù)據(jù)查詢已經(jīng)完成。這次操作的代碼是相當(dāng)健壯的,但幸好它并不龐大。

def get_range(self, model, keys, start, end, rollup=None): 
 """ To get a range of data for group ID=[1, 2, 3]: Start and end are both inclusive. >>> now = timezone.now() >>> get_keys(tsdb.models.group, [1, 2, 3], >>>   start=now - timedelta(days=1), >>>   end=now) """ 
 normalize_to_epoch = self.normalize_to_epoch 
 normalize_to_rollup = self.normalize_to_rollup 
 make_key = self.make_key 
  
 if rollup is None: 
  rollup = self.get_optimal_rollup(start, end) 
  
 results = [] 
 timestamp = end 
 with self.conn.map() as conn: 
  while timestamp >= start: 
   real_epoch = normalize_to_epoch(timestamp, rollup) 
   norm_epoch = normalize_to_rollup(timestamp, rollup) 
  
   for key in keys: 
    model_key = self.get_model_key(key) 
    hash_key = make_key(model, norm_epoch, model_key) 
    results.append((real_epoch, key, conn.hget(hash_key, model_key))) 
  
   timestamp = timestamp - timedelta(seconds=rollup) 
  
 results_by_key = defaultdict(dict) 
 for epoch, key, count in results: 
  results_by_key[key][epoch] = int(count or 0) 
  
 for key, points in results_by_key.iteritems(): 
  results_by_key[key] = sorted(points.items()) 
 return dict(results_by_key) 

歸結(jié)如下:

  • 生成所必須的鍵。
  • 使用工作區(qū),提取所有連接操作的最小結(jié)果集(Nydus負(fù)責(zé)這些)。
  • 給出結(jié)果,并且基于指定的時(shí)間間隔內(nèi)和給定的鍵值將它們映射到當(dāng)前的存儲(chǔ)區(qū)內(nèi)。

以上就是如何利用Redis實(shí)現(xiàn)SQL伸縮的方法,希望對(duì)大家的學(xué)習(xí)有所幫助。

您可能感興趣的文章:
  • 在Ruby on Rails上使用Redis Store的方法
  • python操作redis的方法
  • php-redis中的sort排序函數(shù)總結(jié)
  • Redis sort 排序命令詳解
  • 圖文介紹PHP添加Redis模塊及連接
  • 在Mac下如何安裝phpredis擴(kuò)展
  • 詳解Redis中的雙鏈表結(jié)構(gòu)
  • Redis中的動(dòng)態(tài)字符串學(xué)習(xí)教程
  • Windows下Redis的安裝使用圖解
  • Redis的11種Web應(yīng)用場(chǎng)景簡(jiǎn)介
  • 用Redis實(shí)現(xiàn)微博關(guān)注關(guān)系

標(biāo)簽:常德 保定 石嘴山 葫蘆島 鶴崗 招商 沈陽(yáng) 昆明

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用Redis實(shí)現(xiàn)SQL伸縮的方法》,本文關(guān)鍵詞  利用,Redis,實(shí)現(xiàn),SQL,伸縮,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用Redis實(shí)現(xiàn)SQL伸縮的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于利用Redis實(shí)現(xiàn)SQL伸縮的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    一级女性全黄久久生活片| 国产伦精品一区二区三区在线观看 | 亚洲精品永久一区| 日本在线www| 精品在线免费播放| 国产一区二区精品久久91| 毛片高清| a级精品九九九大片免费看| 欧美另类videosbestsex久久| 日日爽天天| 欧美另类videosbestsex视频| 久久精品欧美一区二区| 亚洲精品永久一区| 免费国产一级特黄aa大片在线| 国产91视频网| 日韩在线观看视频免费| 欧美国产日韩在线| 成人影院一区二区三区| 国产精品1024永久免费视频 | 在线观看导航| 国产美女在线一区二区三区| 国产a视频| 国产成人欧美一区二区三区的| 精品在线观看一区| 欧美激情伊人| 成人影院久久久久久影院| 日韩欧美一二三区| 日韩中文字幕在线观看视频| 高清一级淫片a级中文字幕 | 成人a大片在线观看| 香蕉视频久久| 亚洲第一视频在线播放| 久草免费资源| 国产91素人搭讪系列天堂| 精品国产三级a| 国产视频一区二区在线观看| 国产麻豆精品视频| 沈樵在线观看福利| 一a一级片| 精品美女| 日本免费区| 成人影院一区二区三区| 亚洲精品久久久中文字| 免费的黄色小视频| 黄视频网站在线看| 二级特黄绝大片免费视频大片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区高清视频| 久久精品大片| 精品国产一区二区三区久久久蜜臀 | 中文字幕Aⅴ资源网| 亚洲第一色在线| 韩国三级视频在线观看| 久久精品成人一区二区三区| 韩国毛片 免费| 高清一级毛片一本到免费观看| 四虎影视久久久免费| 国产不卡在线观看视频| 成人在免费观看视频国产| 国产一区免费在线观看| 国产91精品系列在线观看| 国产视频一区二区三区四区| 美国一区二区三区| 九九九国产| 日本在线www| 国产精品免费久久| 日韩avdvd| 日韩在线观看视频免费| 精品在线观看一区| 九九精品在线播放| 99久久精品国产国产毛片 | 一级片片| 免费毛片播放| 尤物视频网站在线观看| 亚洲精品久久玖玖玖玖| 国产网站在线| 999精品影视在线观看| 日韩av东京社区男人的天堂| 99久久精品费精品国产一区二区| 国产a免费观看| 亚洲 欧美 成人日韩| 可以免费看毛片的网站| 国产不卡在线观看| 999精品在线| 精品视频在线看| 午夜在线亚洲男人午在线| 人人干人人草| 久久久久久久免费视频| 国产一区二区精品久久91| 国产91素人搭讪系列天堂| 久久久久久久网| 亚洲第一视频在线播放| 成人免费观看的视频黄页| 美女免费精品视频在线观看| 国产原创中文字幕| 成人免费观看男女羞羞视频| 久久久久久久男人的天堂| 国产不卡精品一区二区三区| 免费的黄色小视频| 久久国产一久久高清| 沈樵在线观看福利| 国产不卡在线观看| 成人a级高清视频在线观看| 日韩一级黄色| 日韩中文字幕在线亚洲一区| 成人a大片在线观看| 日韩在线观看免费完整版视频| 午夜欧美福利| 色综合久久天天综合绕观看| 日韩专区亚洲综合久久| 亚洲第一色在线| 国产一区二区精品久久91| 九九热国产视频| 精品视频在线观看一区二区三区| 欧美1区| 欧美激情中文字幕一区二区| 999久久狠狠免费精品| 日韩中文字幕一区| 欧美激情影院| 国产福利免费视频| 精品视频在线看| 久久精品成人一区二区三区| 久久99中文字幕| 国产视频网站在线观看| 欧美激情影院| 可以免费看毛片的网站| 亚洲精品久久久中文字| 一级片片| 国产网站免费视频| 高清一级片| 亚洲wwwwww| 欧美大片一区| 国产一区二区精品久| a级毛片免费观看网站| 国产麻豆精品hdvideoss| 亚洲精品永久一区| 久久99青青久久99久久| 91麻豆国产| 国产一区二区精品在线观看| 999久久久免费精品国产牛牛| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚洲精品久久久中文字| 韩国三级视频在线观看| 四虎久久影院| 人人干人人插| 九九热精品免费观看| 99久久精品费精品国产一区二区| 日韩一级精品视频在线观看| 欧美大片一区| 国产91精品系列在线观看| 国产伦精品一区二区三区在线观看 | 免费国产在线观看| 国产成人精品一区二区视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 999久久狠狠免费精品| 精品国产香蕉在线播出 | 日韩女人做爰大片| 国产美女在线观看| 91麻豆精品国产综合久久久| 国产视频一区二区在线播放| 免费国产在线视频| 99久久精品国产麻豆| 欧美激情影院| 99热精品在线| 九九久久国产精品| 99热精品在线| 九九精品影院| 在线观看成人网| 天天做日日干| 日韩综合| 国产高清视频免费观看| 日本在线www| 亚洲不卡一区二区三区在线| 可以免费看毛片的网站| 亚洲 欧美 成人日韩| 精品国产一区二区三区久久久蜜臀| 精品国产亚洲人成在线| 亚洲女初尝黑人巨高清在线观看| 欧美大片一区| 韩国毛片| 国产网站免费观看| 亚久久伊人精品青青草原2020| 国产精品自拍在线观看| 日韩免费在线视频| 精品视频在线观看一区二区三区| 国产极品精频在线观看| 国产伦精品一区二区三区在线观看| 四虎影视久久久| 国产亚洲免费观看| 久久99中文字幕久久| 四虎久久精品国产| 91麻豆精品国产高清在线| 国产成人精品综合在线| 色综合久久天天综合| 日韩欧美一二三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产不卡福利| 精品久久久久久影院免费| 午夜在线亚洲男人午在线| 九九九国产|