Redis-點陣圖

来源:https://www.cnblogs.com/ccaa/archive/2020/02/03/12215075.html
-Advertisement-
Play Games

關於點陣圖,可能大家不太熟悉, 那麼點陣圖能幹啥呢?點陣圖的內容其實就是普通的字元串,也就是byte數組,我們都知道 byte 8 位無符號整數 0 到 255 說個場景。比如你處理一些業務時候,往往會存在 是或者不是 這樣的數據,那麼這種數據還是頻繁去查看和請求,從數據方面和請求次數方面都是非常的大的。 ...


關於點陣圖,可能大家不太熟悉,

那麼點陣圖能幹啥呢?點陣圖的內容其實就是普通的字元串,也就是byte數組,我們都知道

byte 8 位無符號整數 0 到 255

說個場景。比如你處理一些業務時候,往往會存在 是或者不是 這樣的數據,那麼這種數據還是頻繁去查看和請求,從數據方面和請求次數方面都是非常的大的。那麼Redis點陣圖可以幫你解決。每天的記錄只占據一個位,他的存儲格式:0 1 0 1 0 1。在操作方面我們可以使用:get/set, gitbit/setbit等將byte數組看成【位數組】來處理。

說說他的特性:

位數組是自動擴展的,如果超出現有內容範圍,它會自動將位數組進行零擴充。

當然一般這種業務數據,都往往少不了統計,查找,那麼點陣圖指令統計bitcount和查找bitpos。bitcount 用來統計指定位置範圍內 1 的個數,bitpos 用來查找指定範圍內出現的第一個 0 或 1。

bitpos指定的範圍是【start,end】。註意的是start 和 end 參數是位元組索引,也就是說指定的位範圍必須是 8 的倍數,

當然,我們都知道之前指定的點陣圖都是單個位的,當然也有一次操作多個位的,不過必須用管道,不過從3.2版本後。有個bitfield,有三個指令,分別是:get/set/incrby,它們都可以對指定位片段進行讀寫,但是最多只能處理 64 個連續的位,如果超過 64 位,就得使用多個子指令,bitfield 可以一次執行多個子指令。

 BITFIELD mykey INCRBY i5 100 1 GET u4 0

當需要一個整型時,有符號整型需在位數前加i,無符號在位數前加u。例如,u8是一個8位的無符號整型,i16是一個16位的有符號整型。有符號整型最大支持64位,而無符號整型最大支持63位。對無符號整型的限制,是由於當前Redis協議不能在響應消息中返回64位無符號整數。

所謂有符號數是指獲取的位數組中第一個位是符號位,剩下的才是值。如果第一位是 1,那就是負數。無符號數表示非負數,沒有符號位,獲取的位數組全部都是值。有符號數最多可以獲取 64 位,無符號數只能獲取 63 位 (因為 Redis 協議中的 integer 是有符號數,最大 64 位,不能傳遞 64 位無符號值)。如果超出位數限制,Redis 就會告訴你參數錯誤。
 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 生成認證key 私鑰(鑰匙) 公鑰(鎖) 加密伺服器 存在於 代表加密完成 分發密鑰 ...
  • 新年開始,公司啟動遠程辦公,需要遠程vpn到公司, 使用 AnyConnect, "下載地址" ,macos 使用的時候,有很多的問題,最後使用如下的方案解決 1. 打開Network,創建一個VPN連接 點擊create創建 2. 點擊Authentication Settings 設置組別信息 ...
  • 本文最後編輯於2020 2 3 概述 51單片機是比較適合新手入門的一款單片機,結構簡單,易於學習。本博客為筆者自學完單片機後進行的小總結。 單片機我也是學學放放,中間遇到了很多挫折(當然現在也是),我是自學了C語言之後,在大一下學期開始接觸51的,所以,我的51系列blog比較淺顯,因為用單片機的 ...
  • 安裝 配置 打開系統Settings,Region & Language,Manage Installed Languages,安裝中文語言包,然後選擇Keyboard input method system為fcitx; 重啟系統; 在Region & Language,input Sources ...
  • centos系統搭建PXE網路安裝centos+ubuntu+Windows Centos搭建PXE,安裝部署操作系統 一 . 原理: 1.什麼是PXE: PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Se ...
  • SVN倉庫備份和遷移 author: yunqimg(ccxtcxx0) 前言 本文主要是講 SVN 倉庫的全量備份和增量備份,只包括基本操作. 如有疑問請參考 References. 倉庫備份 svnadmin dump 1. 備份方式多樣 2. 如果版本數過多,dump的過程將非常慢 3. 備份 ...
  • 此篇文章為博主在Linux學習過程中的一些記錄,記錄在此方便查閱。 常用命令總結 + ls 顯示目錄內容 (list directory contents) + 不顯示隱藏的文件和子目錄 + 顯示目錄中所有的文件和子目錄(包括隱藏文件) + 顯示目錄中文件和子目錄的詳細信息(包括許可權、大小、創建/修 ...
  • RocksDB介紹RocksDB簡介RocksDB是基於C++語言編寫的嵌入式KV存儲引擎,它不是一個分散式的DB,而是一個高效、高性能、單點的資料庫引擎。它是由Facebook基於Google開源的kv存儲LevelDB開發開發。RocksDB使用LSM存儲引擎。它針對不同的生產環境進行調優,可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...