Redis通用常見命令(含面試題)

核心命令

get 根據key取value

set 把key和vlaue存入進去

key和value本事上都是字符串,但在操作的時候可以不用加上引號""

Redis作為鍵值對的結構,key固定就是字符串,value實際上會有多種類型(字符串哈希表,列表,集合,有序集合...)

基本全局命令

keys命令

查找當前數據庫中有 哪些key值, 使用keys pattern命令來查找,pattern格式如下:

?:任意匹配一個字符

*:任意匹配個字符

[ab]:只能匹配a或者b,給出固定的選項

[^a]:排除a,只有a匹配不了

[a-e]:a到e之間的字符都可以匹配

注意:keys的時間復雜度為O(N),在生產環境上一般都會禁止使用keys命令

exists命令

判斷key是否存在,返回值為存在的個數。

exists key [key...] 時間復雜度O(N) 這里的N是指key的個數。

建議:如果要查詢多個key是否存在,建議一起查詢,分開查詢會產生更多輪次的網絡通信,相對來說效率比較低成本比較高。

del命令

刪除指定的key,返回值為存在的個數。

del key [key...] 時間復雜度O(N) 這里的N是指key的個數。

expire命令

作用是給指定的key設置過期時間。key存活時間超出這個限制,就會被自動刪除。

expire key seconds 單位時間是秒

pexpire key milliseconds 單位時間為毫秒

注意:此處設定過期的時間,必須是針對已經存在的key設置,返回值為1設置成功,為0設置失敗

ttl命令

ttl(time to live)查看當前key的過期時間還剩多少,返回正數表示時間,-1表示沒有關聯過期時間,-2表示key不存在。

ttl key 返回當前key離過期時間還剩的秒數

pttl key 返回當前key離過期時間還剩的毫秒數

type命令

一般有none(key不存在), string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希表),stream(redis作為消息隊列時)

type key 返回key對應的value的數據類型。

flushall命令

這個一個清除所有key的命令,非常危險!但在日常學習中可以試一試。

經典面試題

redis的key的過期策略是怎么實現的?

redis的整體策略是

1.定期刪除

每次抽取一部分,進行驗證過期時間,需要保證這個抽取檢查的過程足夠快,控制好抽取的數量和定期抽取時間。(抽取的數量過多導致驗證時間過長容易造成堵塞)

2.惰性刪除

如果當前key設置的過期時間已經到了,但是不會立刻刪除它,這個key仍然存在,當接下來的訪問當中用到了這個key時,于是這次訪問就會讓redis服務器觸發刪除這個key的操作,同時在返回一個nil。(類似于在小賣部中有部分過期的食品沒有及時處理,當消費者選擇了一個商品的時候,老板檢查了一下生產日期,如果過期了就會進行處理)

通過上述策略相結合,redis任然可能存在很多過期key被殘留,redis為了對這樣的問題進行補充,提供了一系列的內存淘汰機制策略。(之后的文章會詳細說到)

兩種比較高效的定時器設計(redis并未采用)

1.優先級隊列

首先設置過期時間越早的,優先級越高。

此時給定時器分配一個線程,只需檢查隊首元素是否過期即可。

避免檢查時間過于頻繁,根據當前時間和隊首元素過期時間設置一個等待。

當添加一個新任務時,喚醒定時器線程,重新檢查隊首元素,調整等待時間。

2.時間輪

需要把時間劃分成很多小段。(劃分的粒度看是實際需求)

在每個小段上都掛著一串鏈表,每個鏈表都代表要執行的任務。

根據設計的時間周器,每過一段時間移動一個小段,然后檢查每個鏈表嘗試執行任務。

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

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

相關文章

react/vue vite ts項目中,自動引入路由文件、 import.meta.glob動態引入路由 無需手動引入

utils/autoRouteHelper.ts // src/utils/autoRouteHelper.ts import { lazy } from "react"; import withLoading from "/components/router/withLoading";/** 自動生成某個文件夾下的子路由 */ interface RouteItem {path: string;element?: any;childre…

Linux簡單了解歷史

一、引言Linux是計算機經久不衰的一個計算機操作系統,在那個unix、蘋果macOS、微軟Window神仙打架的年代拼出自己的一席之地。最初的Linux完全就是一個unix的一個翻版,并且最開始的版本(0.01)就是一個差不多一萬行簡單到不能再簡單的版本。那現在Linux是…

lua(xlua)基礎知識點記錄二

1. 關于lua函數傳參參數在lua中給function傳遞參數的時候一般分為兩種情況:值傳遞和引用傳遞值傳遞:值傳遞:數字、字符串、布爾值、nil等基本類型通過值傳遞。函數內部接收的是外部變量的副本,修改副本不會影響原始變量。 雖然我們…

分治算法---歸并

1、排序數組 class Solution {vector<int> tmp; public:vector<int> sortArray(vector<int>& nums) {tmp.resize(nums.size());mergeSort(nums,0,nums.size() - 1);return nums;}void mergeSort(vector<int>& nums, int left , int right){if…

《計算機網絡》實驗報告三 UDP協議分析

目 錄 1、實驗目的 2、實驗環境 3、實驗內容 3.1 DNS查詢UDP數據分析 3.2 QQ通信UDP數據分析 4、實驗結果與分析 4.1 DNS查詢UDP數據分析 4.2 QQ通信UDP數據分析 4.3 根據捕獲的數據包&#xff0c;分析UDP的報文結構&#xff0c;將UDP協議中個字段名&#xff0c;字段…

Mysql 學習總結(90)—— Mysql 8.0 25 條性能優化實戰指南

1. 內存配置優化 # my.cnf 關鍵內存參數 innodb_buffer_pool_size = 8G # 建議設置為物理內存的70-80% innodb_log_buffer_size = 64M # 日志緩沖區大小 query_cache_size = 0 # MySQL 8.0已移除,確保關閉 tmp_table_size = 256M # 臨時表大小 max_…

嵌入式通信DQ單總線協議及UART(一)

文章目錄一、DS18B20--DQ單總線1.1 單總線時序結構分析1.1.1 初始化&#xff1a;1.1.2 發送一位1.1.3 接收一位1.1.5 發送字節1.1.6 操作流程1.1.7 數據幀的理解1.1.8 數據幀的理解二、UART2.1 同步通信和異步通信2.2 雙工通信2.3 串行通信常用數據校驗方式2.3.1 奇偶檢驗2.3.2…

2025年SEVC SCI2區,利用增強粒子群算法(MR-MPSO)優化MapReduce效率和降低復雜性,深度解析+性能實測

目錄1.摘要2.MapReduce-Modified Particle Swarm Optimization (MR-MPSO)3.結果展示4.參考文獻5.算法輔導應用定制讀者交流1.摘要 大數據的迅猛增長帶來了嚴峻的數據管理挑戰&#xff0c;尤其是在數據分布不均的龐大數據庫中。由于這種不匹配&#xff0c;傳統軟件系統的效率大…

10-day07文本分類

文本分類使用場景文本分類任務 文本分類-機器學習貝葉斯算法應用在NLP中的應用 用貝葉斯公式處理文本分類任務 一個合理假設&#xff1a; 文本屬于哪個類別&#xff0c;與文本中包含哪些詞相關 任務&#xff1a; 知道文本中有哪些詞&#xff0c;預測文本屬于某類別的概率 貝葉斯…

Apache SeaTunnel詳解與部署(最新版本2.3.11)

目錄 一、概述 1.1、軟件介紹 1.2、解決問題? 1.3、軟件特性? 1.4、使用用戶 1.5、產品對比 二、架構 2.1、運行流程 2.2、連接器? 2.3、引擎 2.3.1、設計理念 2.3.2、集群管理? 2.3.3、核心功能? 2.3.4、引擎對比 三、軟件部署 3.1、Docker部署 3.2、發…

pytorch | minist手寫數據集

一、神經網絡神經網絡&#xff08;Neural Network&#xff09;是一種受生物神經系統&#xff08;尤其是大腦神經元連接方式&#xff09;啟發的機器學習模型&#xff0c;是深度學習的核心基礎。它通過模擬大量 “人工神經元” 的互聯結構&#xff0c;學習數據中的復雜模式和規律…

[C/C++安全編程]_[中級]_[如何避免出現野指針]

場景 在Rust里不會出現野指針的情況&#xff0c;那么在C里能避免嗎&#xff1f; 說明 野指針是指指向無效內存地址的指針&#xff0c;訪問它會導致未定義行為&#xff0c;可能引發程序崩潰、數據損壞或安全漏洞。它是 C/C 等手動內存管理語言中的常見錯誤&#xff0c;而 Rust…

機器學習基礎:從數據到智能的入門指南

一、何謂機器學習? 在我們的日常生活中&#xff0c;機器學習的身影無處不在。當你打開購物軟件&#xff0c;它總能精準推薦你可能喜歡的商品&#xff1b;當你解鎖手機&#xff0c;人臉識別瞬間完成&#xff1b;當你使用語音助手&#xff0c;它能準確理解你的指令。這些背后&a…

steam游戲搬磚項目超完整版實操分享

大家好&#xff0c;我是阿陽&#xff0c;今天再次最詳細的給大家綜合全面的分析講解下steam搬磚&#xff0c;可以點擊后面跳轉往期文章了再次解下阿陽網客&#xff1a;關于steam游戲搬磚項目&#xff0c;我想說&#xff01;最早是21年5月份公開朋友圈&#xff0c;初次接觸是在2…

vue2 面試題及詳細答案150道(21 - 40)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

原生前端JavaScript/CSS與現代框架(Vue、React)的聯系與區別(詳細版)

原生前端JavaScript/CSS與現代框架&#xff08;Vue、React&#xff09;的聯系與區別&#xff0c;以及運行環境和條件 目錄 引言原生前端技術概述 JavaScript基礎CSS基礎 現代框架概述 Vue.jsReact 聯系與相似性主要區別對比運行環境和條件選擇建議總結 引言 在現代Web開發中&…

基于機器視覺的邁克耳孫干涉環自動計數系統設計與實現

基于機器視覺的邁克耳孫干涉環自動計數系統設計與實現 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站。 摘要 本文設計并實現了一種基于機器視覺的邁克耳孫干涉環自動計數系統。該系統…

設計模式筆記(1)簡單工廠模式

最近在看程杰的《大話設計模式》&#xff0c;在這里做一點筆記。 書中主要有兩個角色&#xff1a; 小菜&#xff1a;初學者&#xff0c;學生&#xff1b; 大鳥&#xff1a;小菜表哥&#xff0c;大佬。 也按圖中的對話形式 01 簡單工廠模式 要求&#xff1a;使用c、Java、C#或VB…

Vue3 學習教程,從入門到精通,Vue 3 聲明式渲染語法指南(10)

Vue 3 聲明式渲染語法指南 本文將詳細介紹 Vue 3 中的聲明式渲染語法&#xff0c;涵蓋所有核心概念&#xff0c;并通過一個完整的案例代碼進行演示。案例代碼中包含詳細注釋&#xff0c;幫助初學者更好地理解每個部分的功能和用法。 目錄 簡介聲明式渲染基礎 文本插值屬性綁…

React hooks——useReducer

一、簡介useReducer 是 React 提供的一個高級 Hook&#xff0c;用于管理復雜的狀態邏輯。它類似于 Redux 中的 reducer 模式&#xff0c;適合處理包含多個子值、依賴前一個狀態或邏輯復雜的狀態更新場景。與 useState 相比&#xff0c;useReducer 提供更結構化的狀態管理方式。…