日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Cpc

TairCpc是基于CPC(Compressed Probability Counting)壓縮算法開發的數據結構,支持僅占用很小的內存空間對采樣數據進行高性能計算。

背景信息

在大數據實時決策場景中,通常會將業務日志流入實時計算系統完成計算,然后將計算結果存儲至在線存儲系統,最終由實時規則或決策系統進行決策,例如:

  • 防控信用卡欺詐交易:快速判斷刷卡環境是否可信,若發現異常則需第一時間攔截交易。

  • 防控黃牛團伙惡意牟利:實時識別并阻止通過虛擬設備、虛假地址等方式損害平臺利益的行為。

您可以利用TairCpc將實時數據,按不同的去重維度,結構化地存儲到Tair數據庫中,即可在高速的訪問場景中直接獲得結果,實現存儲、計算一體化。同時TairCpc提供多重聚合運算,可以在納秒級聚合數據結果,具備實時風控的能力。

TairCpc簡介

CPC是一種高性能數據去重算法,可以將不同的值作為數據流進行計數,支持將多個數據塊合并、去重,獲得去重后的總計數。相比HLL(Hyperloglog)算法,在相同精度下,CPC大約可節省40%內存空間。

同時,TairCpc在開源CPC算法的基礎上,將誤差率優化至0.008%(開源CPC為0.67%;HLL誤差率為1.95%)。

主要特征

  • 內存占用低,支持增量讀寫,實現IO最小化。

  • 高性能去重,同時擁有超高去重精度。

  • 誤差率穩定收斂。

典型場景

  • 銀行安全系統

  • 秒殺限購

  • 防控用戶(或黃牛團伙)惡意牟利

前提條件

實例為Tair

說明

最新小版本將提供更豐富的功能與穩定的服務,建議將實例的小版本升級到最新,具體操作請參見升級小版本。如果您的實例為集群實例或讀寫分離架構,請將代理節點的小版本也升級到最新,否則可能出現命令無法識別的情況。

注意事項

操作對象為Tair實例中的TairCpc數據。

命令列表

表 1. TairCpc命令

命令

語法

說明

CPC.UPDATE

CPC.UPDATE key item [EX|EXAT|PX|PXAT time]

在指定TairCpc中添加item。若TairCpc不存在則自動新建,若待添加的item已存在于目標TairCpc中,則不會進行操作。

CPC.ESTIMATE

CPC.ESTIMATE key

獲取指定TairCpc去重后的基數估算值,返回值的數據類型為double類型,您可以僅取整數部分(忽略小數點后的數據)。

CPC.UPDATE2EST

CPC.UPDATE2EST key item [EX|EXAT|PX|PXAT time]

在指定TairCpc中添加item,返回更新后的基數估算值。若TairCpc不存在則自動新建。

CPC.UPDATE2JUD

CPC.UPDATE2JUD key item [EX|EXAT|PX|PXAT time]

在指定TairCpc中添加item,并返回更新后的基數估算值和其與更新前的差值。若返回的差值為1則表示寫入成功且不存在重復;若為0則表示已存在當前item。若TairCpc不存在則自動新建。

CPC.ARRAY.UPDATE

CPC.ARRAY.UPDATE key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

在指定TairCpc中,向目標timestamp對應的時間窗口添加item。若TairCpc不存在則自動新建,SIZE為時間窗口個數,WIN為時間窗口的長度(單位為毫秒)。隨著流式數據的寫入,TairCpc會持續向前更新并保存SIZE * WIN時間范圍內的數據,超過該時間范圍的數據會被覆蓋、刪除。SIZEWIN屬性僅在新建TairCpc的時生效。

說明

例如目標key為計算近10分鐘內每分鐘的數據:可以設置SIZE為10(10個時間窗口)、WIN為60000(每個時間窗口為1分鐘)。當目標key中寫入第11分鐘的數據時,第1分鐘的數據會逐漸被覆蓋、刪除。

CPC.ARRAY.ESTIMATE

CPC.ARRAY.ESTIMATE key timestamp

獲取指定TairCpc中目標timestamp所在時間窗口的基數估算值。

CPC.ARRAY.ESTIMATE.RANGE

CPC.ARRAY.ESTIMATE.RANGE key start_time end_time

獲取指定TairCpc的指定時間段內(包含指定時間點)各個時間窗口的基數估算值。

CPC.ARRAY.ESTIMATE.RANGE.MERGE

CPC.ARRAY.ESTIMATE.RANGE.MERGE key timestamp range

獲取指定TairCpc在指定時間點至往前range(含當前窗口)個時間窗口內,時間窗口合并、去重后的基數估算值。

CPC.ARRAY.UPDATE2EST

CPC.ARRAY.UPDATE2EST key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

在指定TairCpc中,向目標timestamp對應的時間窗口添加item,并返回該時間窗口更新后的基數估算值。若TairCpc不存在則自動新建,新建參數用法與CPC.ARRAY.UPDATE一致。

CPC.ARRAY.UPDATE2JUD

CPC.ARRAY.UPDATE2JUD key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

在指定TairCpc中,向目標timestamp對應的時間窗口添加item,并返回該時間窗口更新后的基數估算值和其與更新前的差值。若返回的差值為1,則表示寫入成功且不存在重復;若為0則表示已存在當前item。若TairCpc不存在則自動新建,新建參數用法與CPC.ARRAY.UPDATE一致。

DEL

DEL key [key ...]

使用原生Redis的DEL命令可以刪除一條或多條TairCpc數據。

說明

本文的命令語法定義如下:

  • 大寫關鍵字:命令關鍵字。

  • 斜體:變量。

  • [options]:可選參數,不在括號中的參數為必選。

  • A|B:該組參數互斥,請進行二選一或多選一。

  • ...:前面的內容可重復。

CPC.UPDATE

類別

說明

語法

CPC.UPDATE key item [EX|EXAT|PX|PXAT time]

時間復雜度

O(1)

命令描述

在指定TairCpc中添加item。若TairCpc不存在則自動新建,若待添加的item已存在于目標TairCpc中,則不會進行操作。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • item:待添加的數據。

  • EX:指定key的相對過期時間,單位為秒,不傳此參數表示不過期。

  • EXAT:指定key的絕對過期時間(Unix時間戳),單位為秒,不傳此參數表示不過期。

  • PX:指定key的相對過期時間,單位為毫秒,不傳此參數表示不過期。

  • PXAT:指定key的絕對過期時間(Unix時間戳),單位為毫秒 ,不傳此參數表示不過期。

返回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.UPDATE foo f1 EX 3600

返回示例:

OK

CPC.ESTIMATE

類別

說明

語法

CPC.ESTIMATE key

時間復雜度

O(1)

命令描述

獲取指定TairCpc去重后的基數估算值,返回值的數據類型為double類型,您可以僅取整數部分(忽略小數點后的數據)。

選項

  • key:Key名稱(TairCpc數據結構)。

返回值

  • 執行成功:返回估算值,數據類型為double類型。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ESTIMATE foo

返回示例:

"19.000027716212127"

CPC.UPDATE2EST

類別

說明

語法

CPC.UPDATE2EST key item [EX|EXAT|PX|PXAT time]

時間復雜度

O(1)

命令描述

在指定TairCpc中添加item,返回更新后的基數估算值。若TairCpc不存在則自動新建。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • item:待添加的數據。

  • EX:指定key的相對過期時間,單位為秒,不傳此參數表示不過期。

  • EXAT:指定key的絕對過期時間(Unix時間戳),單位為秒,不傳此參數表示不過期。

  • PX:指定key的相對過期時間,單位為毫秒,不傳此參數表示不過期。

  • PXAT:指定key的絕對過期時間(Unix時間戳),單位為毫秒 ,不傳此參數表示不過期。

返回值

  • 執行成功:返回更新后的估算值,數據類型為double類型。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.UPDATE2EST foo f3

返回示例:

"3.0000004768373003"

CPC.UPDATE2JUD

類別

說明

語法

CPC.UPDATE2JUD key item [EX|EXAT|PX|PXAT time]

時間復雜度

O(1)

命令描述

在指定TairCpc中添加item,并返回更新后的基數估算值和其與更新前的差值。若返回的差值為1則表示寫入成功且不存在重復;若為0則表示已存在當前item。若TairCpc不存在則自動新建。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • item:待添加的數據。

  • EX:指定key的相對過期時間,單位為秒,不傳此參數表示不過期。

  • EXAT:指定key的絕對過期時間(Unix時間戳),單位為秒,不傳此參數表示不過期。

  • PX:指定key的相對過期時間,單位為毫秒,不傳此參數表示不過期。

  • PXAT:指定key的絕對過期時間(Unix時間戳),單位為毫秒 ,不傳此參數表示不過期。

返回值

  • 執行成功:返回更新后的估算值和該值與更新前的差值,數據類型均為double類型。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.UPDATE2JUD foo f20

返回示例:

1) "20.000027716212127"    // 更新后,TairCpc的估算值為20。
2) "1.0000014901183398"    // 20 - 19 = 1

CPC.ARRAY.UPDATE

類別

說明

語法

CPC.ARRAY.UPDATE key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

時間復雜度

O(1)

命令描述

在指定TairCpc中,向目標timestamp對應的時間窗口添加item。若TairCpc不存在則自動新建,SIZE為時間窗口個數,WIN為時間窗口的長度(單位為毫秒)。隨著流式數據的寫入,TairCpc會持續向前更新并保存SIZE * WIN時間范圍內的數據,超過該時間范圍的數據會被覆蓋、刪除。SIZEWIN屬性僅在新建TairCpc的時生效。

說明

例如目標key為計算近10分鐘內每分鐘的數據:可以設置SIZE為10(10個時間窗口)、WIN為60000(每個時間窗口為1分鐘)。當目標key中寫入第11分鐘的數據時,第1分鐘的數據會逐漸被覆蓋、刪除。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • timestamp:指定的Unix時間戳,單位為毫秒。

  • item:待添加的數據。

  • EX:指定key的相對過期時間,單位為秒,不傳此參數表示不過期。

  • EXAT:指定key的絕對過期時間(Unix時間戳),單位為秒,不傳此參數表示不過期。

  • PX:指定key的相對過期時間,單位為毫秒,不傳此參數表示不過期。

  • PXAT:指定key的絕對過期時間(Unix時間戳),單位為毫秒 ,不傳此參數表示不過期。

  • SIZE:時間窗口個數,默認為10,范圍為[1,1000],建議設置在120以內。

  • WIN:時間窗口的長度(單位為毫秒),默認為60000毫秒(1分鐘)。

返回值

  • OK:表示執行成功。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ARRAY.UPDATE foo 1645584510000 f1 SIZE 120 WIN 10000

返回示例:

OK

CPC.ARRAY.ESTIMATE

類別

說明

語法

CPC.ARRAY.ESTIMATE key timestamp

時間復雜度

O(1)

命令描述

獲取指定TairCpc中目標timestamp所在時間窗口的基數估算值。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • timestamp:指定的Unix時間戳,單位為毫秒。

返回值

  • 執行成功:返回對應時間窗口的基數估算值。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ARRAY.ESTIMATE foo 1645584532000

返回示例:

"2"

CPC.ARRAY.ESTIMATE.RANGE

類別

說明

語法

CPC.ARRAY.ESTIMATE.RANGE key start_time end_time

時間復雜度

O(1)

命令描述

獲取指定TairCpc的指定時間段內(包含指定時間點)各個時間窗口的基數估算值。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • start_time:查詢的開始時間(Unix時間戳),單位為毫秒。

  • end_time:查詢的結束時間(Unix時間戳),單位為毫秒。

返回值

  • 執行成功:返回目標時間窗口的基數估算值。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ARRAY.ESTIMATE.RANGE foo 1645584510000 1645584550000

返回示例:

1) "2"
2) "0"
3) "1"
4) "0"
5) "0"

CPC.ARRAY.ESTIMATE.RANGE.MERGE

類別

說明

語法

CPC.ARRAY.ESTIMATE.RANGE.MERGE key timestamp range

時間復雜度

O(1)

命令描述

獲取指定TairCpc在指定時間點至往前range(含當前窗口)個時間窗口內,時間窗口合并、去重后的基數估算值。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • timestamp:查詢的開始時間(Unix時間戳),單位為毫秒。

  • range:查詢的時間窗口個數。

返回值

  • 執行成功:返回目標key在指定時間段內去重后的基數估算值。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ARRAY.ESTIMATE.RANGE.MERGE foo 1645584510000 3

返回示例:

"6"

CPC.ARRAY.UPDATE2EST

類別

說明

語法

CPC.ARRAY.UPDATE2EST key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

時間復雜度

O(1)

命令描述

在指定TairCpc中,向目標timestamp對應的時間窗口添加item,并返回該時間窗口更新后的基數估算值。若TairCpc不存在則自動新建,新建參數用法與CPC.ARRAY.UPDATE一致。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • timestamp:指定的Unix時間戳,單位為毫秒。

  • item:待添加的數據。

  • EX:指定key的相對過期時間,單位為秒,不傳此參數表示不過期。

  • EXAT:指定key的絕對過期時間(Unix時間戳),單位為秒,不傳此參數表示不過期。

  • PX:指定key的相對過期時間,單位為毫秒,不傳此參數表示不過期。

  • PXAT:指定key的絕對過期時間(Unix時間戳),單位為毫秒 ,不傳此參數表示不過期。

  • SIZE:時間窗口個數,默認為10,范圍為[1,1000],建議設置在120以內。

  • WIN:時間窗口的長度(單位為毫秒),默認為60000毫秒(1分鐘)。

返回值

  • 執行成功:返回目標時間窗口更新后的估算值。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ARRAY.UPDATE2EST foo 1645584530000 f3

返回示例:

"3"

CPC.ARRAY.UPDATE2JUD

類別

說明

語法

CPC.ARRAY.UPDATE2JUD key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

時間復雜度

O(1)

命令描述

在指定TairCpc中,向目標timestamp對應的時間窗口添加item,并返回該時間窗口更新后的基數估算值和其與更新前的差值。若返回的差值為1,則表示寫入成功且不存在重復;若為0則表示已存在當前item。若TairCpc不存在則自動新建,新建參數用法與CPC.ARRAY.UPDATE一致。

選項

  • key:Key名稱(TairCpc數據結構),用于指定命令調用的TairCpc對象。

  • timestamp:指定的Unix時間戳,單位為毫秒。

  • item:待添加的數據。

  • EX:指定key的相對過期時間,單位為秒,不傳此參數表示不過期。

  • EXAT:指定key的絕對過期時間(Unix時間戳),單位為秒,不傳此參數表示不過期。

  • PX:指定key的相對過期時間,單位為毫秒,不傳此參數表示不過期。

  • PXAT:指定key的絕對過期時間(Unix時間戳),單位為毫秒 ,不傳此參數表示不過期。

  • SIZE:時間窗口個數,默認為10,范圍為[1,1000],建議設置在120以內。

  • WIN:時間窗口的長度(單位為毫秒),默認為60000毫秒(1分鐘)。

返回值

  • 執行成功:返回目標時間窗口更新后的估算值和該值與更新前的差值。

  • 其它情況返回相應的異常信息。

示例

命令示例:

CPC.ARRAY.UPDATE2JUD foo 1645584530000 f7

返回示例:

1) "8"            // 更新后,TairCpc的估算值為8。
2) "1"            // 8 - 7 = 1