【Redis】 String類型的內部編碼與使用環境

文章目錄

  • 🍃前言
  • 🌴內部編碼
  • 🎄典型使用場景
    • 🚩緩存功能
    • 🚩計數(Counter)功能
    • 🚩共享會話(Session)
    • 🚩驗證碼功能
  • ?總結

🍃前言

本篇文章重點內容如下:

  1. 了解String類型的三種內部編碼
  2. 了解String類型的典型使用環境

🌴內部編碼

雖然我們使用的是 String 類型的數據,但是Redis底層是如何存儲的呢?

起始 Reids 對字符串類型的有三種內部編碼方式:

  • int:8 個字節的?整型。
  • embstr:?于等于 39 個字節的字符串。
  • raw:?于39 個字節的字符串。

🎄典型使用場景

🚩緩存功能

緩存功能是?較典型的緩存使?場景,其中 Redis 作為緩沖層,MySQL 作為存儲層,絕?部分請求的數據都是從 Redis 中獲取。由于 Redis 具有?撐?并發的特性,所以緩存通常能起到加速讀寫和降低后端壓?的作?

🚩計數(Counter)功能

許多應?都會使? Redis 作為計數的基礎?具,它可以實現快速計數、查詢緩存的功能,同時數據可以異步處理或者落地到其他數據源。

例如視頻?站的視頻播放次數可以使? Redis 來完成:??每播放?次視頻,相應的視頻播放數就會?增 1。

🚩共享會話(Session)

?個分布式 Web 服務將??的 Session 信息(例如??登錄信息)保存在各?的服務器中,但這樣會造成?個問題:出于負載均衡的考慮,分布式服務會將??的訪問請求均衡到不同的服務器上,并且通常?法保證??每次請求都會被均衡到同?臺服務器上,這樣當??刷新?次訪問是可能會發現需要重新登錄,這個問題是???法容忍的。

為了解決這個問題,可以使? Redis 將??的 Session 信息進?集中管理,在這種模式下,只要保證 Redis 是?可?和可擴展性的,?論??被均衡到哪臺Web 服務器上,都集中從 Redis 中查詢、更新 Session 信息。

🚩驗證碼功能

很多應?出于安全考慮,會在每次進?登錄時,讓??輸??機號并且配合給?機發送驗證碼,然后讓??再次輸?收到的驗證碼并進?驗證,從?確定是否是??本?。為了短信接?不會頻繁訪問,會限制??每分鐘獲取驗證碼的頻率,例如?分鐘不能超過 5 次。此功能也可使用Redis來進行實現

偽代碼實現如下:

String 發送驗證碼(phoneNumber) {key = "shortMsg:limit:" + phoneNumber;// 設置過期時間為 1 分鐘(60 秒)// 使? NX,只在不存在 key 時才能設置成功bool r = Redis 執?命令:set key 1 ex 60 nxif (r == false) {// 說明之前設置過該?機的驗證碼了long c = Redis 執?命令:incr keyif (c > 5) {// 說明超過了?分鐘 5 次的限制了// 限制發送return null;}}// 說明要么之前沒有設置過?機的驗證碼;要么次數沒有超過 5 次String validationCode = ?成隨機的 6 位數的驗證碼();validationKey = "validation:" + phoneNumber;// 驗證碼 5 分鐘(300 秒)內有效Redis 執?命令:set validationKey validationCode ex 300;// 返回驗證碼,隨后通過?機短信發送給??return validationCode ;
}
// 驗證??輸?的驗證碼是否正確
bool 驗證驗證碼(phoneNumber, validationCode) {validationKey = "validation:" + phoneNumber;String value = Redis 執?命令:get validationKey;if (value == null) {// 說明沒有這個?機的驗證碼記錄,驗證失敗return false;}if (value == validationCode) {return true;} else {return false;}
}

?總結

關于《【Redis】 String類型的內部編碼與使用環境》就講解到這兒,感謝大家的支持,歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯可以點一下關注,點贊,收藏支持一下

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15291.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity-Sprite Atlas+UGUI系統的運行原理

每日一句:別聽世俗耳語,看自己的風景就好 目錄 SA的原理: SA的優點: SA的缺點: DrawCall是什么? 批處理是什么? 我們先了解一下UGUI系統的運行原理吧! 提到圖集優化&#xff0…

cocosCreator動態生成二維碼

cocosCreator 版本:3.7.2 開發語言:typeScript 我們在游戲開發中,經常會生成一個專屬于玩家個人的二維碼,比如說推廣、充值等功能。 接到這個任務,在網上找了下,還是有很多教程的。但是這些教程大部分都是用…

Ollydbg動態分析MessageBoxA輸出hellow world

一、目的 找到main函數找到調用的MessageBoxA函數 測試源碼 #include <iostream> #include <windows.h>int main() {MessageBoxA(NULL, "Hellow World", "Title", MB_OK);return 1; }二、快捷鍵 指令快捷鍵說明RestartCtrlF2重新開始調試S…

buu[HCTF 2018]WarmUp(代碼審計)

buu[HCTF 2018]WarmUp&#xff08;代碼審計&#xff09; 題目 訪問source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

MySQL基礎學習: SET FOREIGN_KEY_CHECKS = 0

文章目錄 一、介紹二、使用方法三、注意事項 一、介紹 在MySQL中&#xff0c;SET FOREIGN_KEY_CHECKS 0; 是一個特殊的命令&#xff0c;用于臨時禁用外鍵約束檢查。這在你執行一些涉及多個表并且可能違反外鍵約束的批量操作時非常有用。 為什么需要禁用外鍵約束檢查&#xf…

電腦鍵盤如何練習盲打?

電腦鍵盤如何練習盲打&#xff1f;盲打很簡單&#xff0c;跟著我做&#xff0c;今天教會你。 請看【圖1】&#xff1a; 【圖1】中&#xff0c;紅色方框就是8個基準鍵位&#xff0c;打字時我們左右手的8個手指就是放在這8個基準鍵位上&#xff0c;F鍵和J鍵上各有一個小突起&…

Spring6基礎筆記

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 輕量級開源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并創立&#xff0c;其目的是用于簡化 Java 企業級應用的開發難度和開發周期。Spring的用途不僅限于服務器端的開發…

mysql圖形化界面及將mysql注冊成后臺程序

安裝圖形化界面版本 右鍵新建數據庫 字符集使用utf8防止以后數據庫中存在中文字符導致亂碼 將mysql注冊成后臺程序 cmd進入命令行界面 切換路徑到cd /mysql/bin 將mysql注冊成后臺程序 mysqld.exe --install mysql1 (失敗&#xff0c;說明沒有權限) 以管理員身份打開成功…

ASP.NET防止流量攻擊的措施

請求速率限制&#xff1a; // 在 Global.asax.cs 文件中 Application_BeginRequest 方法中添加以下代碼 protected void Application_BeginRequest() {// 檢查請求頻率&#xff0c;限制每個 IP 地址的請求次數if (RequestThrottler.IsRequestLimitExceeded(Context.Request.Use…

如何跨過robots協議的限制爬取內容?

在討論如何“跨過robots協議的限制爬取內容”之前&#xff0c;重要的是強調遵循網絡禮儀和法律法規的必要性。robots協議&#xff08;Robots Exclusion Standard&#xff09;是網站所有者向網絡爬蟲&#xff08;包括搜索引擎和其他自動化工具&#xff09;傳達其爬取意愿的一種方…

SYSTEM文件夾介紹(sys文件夾、deley文件夾、USART 文件夾、SysTick、printf函數、fputc函數、半主機模式)

參考 http://t.csdnimg.cn/P9H6x 一、sys文件夾介紹 在上述介紹的 sys 文件夾中&#xff0c;涉及了一些與系統控制、中斷管理、低功耗模式、棧頂地址設置、系統時鐘初始化以及緩存配置等相關的函數。以下是對每個功能的簡要分析&#xff1a; 1.中斷類函數&#xff1a; sys_n…

CCF20230901——坐標變換(其一)

CCF20230901——坐標變換&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

uniapp 高德地圖與百度地圖精準定位,高德地圖定位報錯

目前我這邊測試發現的問題 UNIAPP 獲取定位的代碼 在這里插入代碼片 data的參數 data() {return {id: 0, // 使用 marker點擊事件 需要填寫idtitle: map,latitude: 39.909,longitude: 116.39742,covers: [{latitude: 39.909,longitude: 116.39742,width: 50,height: 50,iconPa…

負反饋系統中運放的相位裕度仿真、環路增益的stb仿真

這里沒目錄標題 一、引言二、巴克豪森判據、最壞情況下的相位裕度、相位裕度三、相位裕度與開環&#xff0c;環路&#xff0c;閉環增益的關系四、環路增益、閉環增益和相位的仿真4.1 運放為雙入單出時4.1.1 系統的閉環增益4.1.2 stb仿真系統的環路增益和相位裕度&#xff08;環…

Python項目:數據可視化_下載數據【筆記】

源自《Python編程&#xff1a;從入門到實踐》 作者&#xff1a; Eric Matthes 02 下載數據 2.1 sitka_weather_07-2021_simple.csv from pathlib import Path import matplotlib.pyplot as plt import csv from datetime import datetimepath Path(D:\CH16\sitka_weather_0…

python web自動化(Allure報告)

Allure詳細安裝請看之前的博客 1.Allure配置與?? 運??例&#xff0c;?成allure報告 pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/ 運??例&#xff0c;?成allure報告 # main.py import os import pytest if __name__ __m…

SpringBoot如何實現熱部署

熱部署 使用SpringBoot提供的DevTools實現熱部署 原理&#xff1a;實時監控classpath下文件的變化&#xff08;即編譯后的target目錄&#xff09;&#xff0c;如果發生變化則自動重啟 配置&#xff1a;添加DevTools的依賴即可&#xff08;需要開啟IDEA的自動編譯&#xff09…

ROS學習記錄:用C++實現IMU航向鎖定

前言 獲取IMU數據的C節點 在了解了如何獲取到IMU的姿態信息&#xff08;鏈接在上面&#xff09;后&#xff0c;接下來嘗試實現讓一個節點在訂閱IMU數據的時候&#xff0c;還能發布運動控制指令&#xff0c;使機器人能對姿態變化做出反應&#xff0c;達到一個航向鎖定的效果。 …

神奇動物在哪里,但導演是微軟

大數據產業創新服務媒體 ——聚焦數據 改變商業 一說到計算機視覺&#xff0c;大多數人第一時間聯想到的便是“人臉識別”、“自動駕駛“、道路檢測”等跟我們日常生活息息相關的關鍵詞。而在2024年的5月末&#xff0c;微軟在GitHub上面上傳了這樣一個計算機視覺的項目&#x…

2024年華為OD機試真題-停車場車輛統計-C++-OD統一考試(C卷D卷)

題目描述: 特定大小的停車場,數組cars[]表示,其中1表示有車,0表示沒車。車輛大小不一,小車占一個車位(長度1),貨車占兩個車位(長度2),卡車占三個車位(長度3),統計停車場最少可以停多少輛車,返回具體的數目。 輸入描述: 整型字符串數組cars[],其中1表示有車,0…