Redis數據類型和數據隊列

一.Redis數據類型

參考資料:http://www.redis.cn/topics/data-types.html

相關命令參考: http://redisdoc.com/

Redis 是一種基于內存的開源數據結構存儲系統,支持多種數據類型,每種數據類型都有自己特定的操作命令。

  1. String(字符串)

    特點:最基本的數據類型,可以存儲字符串、整數或者浮點數。
    用途:常用于緩存、計數器、計分等場景。
  2. Hash(哈希)

    特點:存儲了鍵值對集合,適合存儲對象。
    用途:存儲和獲取對象的多個字段值,比如存儲用戶信息、商品信息等。
  3. List(列表)

    特點:鏈表結構,可以包含多個字符串元素,支持棧和隊列操作。
    用途:適合用于消息隊列、最近聯系人列表、新聞流等場景。
  4. Set(集合)

    特點:存儲字符串的無序集合,元素唯一。
    用途:適合做唯一值的存儲,比如用戶的標簽、點贊用戶列表等。
  5. Sorted Set(有序集合)

    特點:和集合類似,但每個元素都關聯一個分數(score),可以根據分數進行排序。
    用途:適合做排行榜、范圍查詢等,比如積分排行榜、最熱門文章等。

1.字符串string

字符串是所有編程語言中最常見的和最常用的數據類型,而且也是redis最基本的數據類型之一,而且redis 中所有的 key 的類型都是字符串。常用于保存 Session 信息場景,此數據類型比較常用

格式·:SETkeyvalue [EX seconds] [PX milliseconds] [NX|XX]時間復雜度: O(1)將字符串值 value 關聯到 key?如果 key 已經持有其他值, SET 就覆寫舊值,無視類型。
當 SET 命令對一個帶有生存時間(TTL)的鍵進行設置之后,該鍵原有的 TTL 將被清除。從 Redis 2.6.12 版本開始, SET 命令的行為可以通過一系列參數來修改:
EX seconds :將鍵的過期時間設置為 seconds 秒。執行 SET key value EX seconds 的效果等同于執行 SETEX key seconds value 。PX milliseconds :將鍵的過期時間設置為 milliseconds 毫秒。執行 SET key value PX?milliseconds 的效果等同于執行 PSETEX key milliseconds value 。NX :只在鍵不存在時,才對鍵進行設置操作。執行 SET key value NX 的效果等同于執行 SETNX key value 。
XX :只在鍵已經存在時,才對鍵進行設置操作。

示例:

1.判斷類型 type

type
TYPE key1 ?#判斷類型

2.設置自動過期 ex

ex
SET title ceo ex 3#設置自動過期時間3s OK

3.key不存在時設置,相當于添加? setnx

4.修改(key需要存在)? xx? ? 相當于update

5.刪除key? ? del

6.批量設置多個key? ?mset

? ?批量獲取多個key? ?mget

7.追加數據? ?append

8.返回字符串key對應值的字節數? ?strlen

9.判斷key是否存在

10.查看超時時間

ttl key #查看key的剩余生存時間,如果key過期后,會自動刪除

  • -1#返回值表示永不過期,默認創建的key是永不過期,重新對key賦值,也會從有剩余生命周期變成永不過期

  • -2#返回值表示沒有此key

  • num #key的剩余有效期

11.重新設置key的過期時間

EXPIRE? ?重新設置過期時間

PERSIST? ? 永遠不過期

127.0.0.1:6379> set name cxk ex 20  #建立一個key,過期時間為20秒
OK
127.0.0.1:6379> ttl name
(integer) 19
127.0.0.1:6379> expire name 1000  #重新設置過期時間為1000秒
(integer) 1
127.0.0.1:6379> ttl name
(integer) 998
127.0.0.1:6379> persist name  #永遠不過期
(integer) 1
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> 

2.列表list

列表是一個雙向可讀寫的管道,其頭部是左側,尾部是右側,一個列表最多可以包含2^32-1(4294967295)個元素,下標 0 表示列表的第一個元素,以 1 表示列表的第二個元素,以此類推。也可以使用負數下標,以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素,元素值可以重復,常用于存入日志等場景,此數據類型比較常用

  • 有序

  • 可重復

  • 左右都可以操作

生成列表并插入數據

命令解釋 例子
lpush從左邊添加數據 例子:lpush name zhou wu zheng wang
rpush從右邊添加數據 例子: rpush car benz bmw
llen獲取列表長度 例子: llen 列表名稱
lindex獲取單個元數 例子: lindex name 0 ; lindex name -1
lrange獲取多個元素 例子: lrange name 0 3 第1個到第三個元素
lset修改列表元素 例子: lset name 2 feng 將name的第二個元素改為feng
lpop刪除列表元素 例子: lpop name 刪除左邊第一個
rpop刪除列表元素 例子: rpop name 刪除右邊第一個
ltrim對列表修剪, 例子: ltrim name 1 2 只留下編號為 1 2 的文件
del刪除列表 例子:del name

LPUSH和RPUSH都可以插入列表

LPUSHkeyvalue [value …]
時間復雜度: O(1)
將一個或多個值 value 插入到列表 key 的表頭

如果有多個 value 值,那么各個 value 值按從左到右的順序依次插入到表頭:比如說,對空列表
mylist 執行命令 LPUSH mylist a b c ,列表的值將是 c b a ,這等同于原子性地執行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三個命令。

如果 key 不存在,一個空列表會被創建并執行 LPUSH 操作。當 key 存在但不是列表類型時,返回一個錯誤。

RPUSH key value [value …]
時間復雜度: O(1)
將一個或多個值 value 插入到列表 key 的表尾(最右邊)

如果有多個 value 值,那么各個 value 值按從左到右的順序依次插入到表尾:比如對一個空列表 mylist 執行 RPUSH mylist a b c ,得出的結果列表為 a b c ,等同于執行命令 RPUSH mylist a 、
RPUSH mylist b 、 RPUSH mylist c 。

如果 key 不存在,一個空列表會被創建并執行 RPUSH 操作。當 key 存在但不是列表類型時,返回一個錯誤。

示例:

新建列表

127.0.0.1:6379> lpush name zhou wang qiu sun
(integer) 4
127.0.0.1:6379> type name
list
127.0.0.1:6379> llen name
(integer) 4
127.0.0.1:6379> lrange name 0 -1
1) "sun"
2) "qiu"
3) "wang"
4) "zhou"
#數據是從右往左添加的,所以看到的是sun開始

#從左往右邊加 數據
127.0.0.1:6379>  rpush name xu wu zheng han
(integer) 8
127.0.0.1:6379> lrange name 0 -1
1) "sun"
2) "qiu"
3) "wang"
4) "zhou"
5) "xu"
6) "wu"
7) "zheng"
8) "han"

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

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

相關文章

Games101學習筆記 Lecture17 Materials and Appearances

Lecture17 Materials and Appearances 材質 BRDF一、Diffuse/Lambertian Material二、Glossy Material三、Ideal reflective/ refractive Material (BSDF)1.鏡面反射2.鏡面折射3.菲涅爾項 Fresnel 四、Microfacet BRDF 微表面五、Isotropic / Anisotropic Materials (BRDFs)An…

博客標題:C++中的繼承:構建面向對象的基石

目錄 ?編輯 引言 繼承的基本形式 示例1:基本繼承 繼承的類型 示例2:不同類型的繼承 多重繼承 示例3:多重繼承 繼承與多態性 示例4:繼承與多態 結論 結尾 引言 在面向對象編程(OOP)中&#xff…

【持續集成_03課_Linux部署Sonar+Gogs+Jenkins】

一、通過虛擬機搭建Linux環境-CnetOS 1、安裝virtualbox,和Vmware是一樣的,只是box更輕量級 1)需要注意內存選擇,4G 2、啟動完成后,需要獲取服務器IP地址 命令 ip add 服務器IP地址 通過本地的工具,進…

新手教學系列——crontab 使用不當引發的服務器性能問題

起因及癥狀 最近,我們的一臺服務器隨著運行時間的增加,逐漸出現了壓力過大的問題。具體表現為數據庫連接數飆升至 4000+,Redis 頻繁超時,系統報錯文件打開數過多等。針對這些問題,我們逐一檢查了數據庫連接池、Redis 連接池以及系統的 ulimit 配置,但都未能找到問題的根…

第241題| 確定極限中參數問題 | 武忠祥老師每日一題

解題思路:確定極限中的參數的方法是求這個極限;求極限根據類型選方法。 形可以用到三種方法:洛必達,等價,泰勒。 先觀察題目,將看成一個整體,同時,并令,整理之后如下: 這里也要想辦…

mysql怎么調整緩沖區大小

MySQL中調整緩沖區大小是數據庫性能優化的重要一環。緩沖區大小直接影響了數據庫的讀寫性能和響應速度。以下是一些常見的MySQL緩沖區及其調整方法: 一、InnoDB緩沖池(InnoDB Buffer Pool) InnoDB緩沖池是InnoDB存儲引擎用來緩存表數據和索…

代碼隨想錄第7天 454 、 383 、15、18

代碼隨想錄第7天 454. 四數相加 II 思路就是先統計nums1和num2各個元素之和出現的次數&#xff0c;然后遍歷num3和nums4各個元素之和&#xff0c;看其相反數是否在map中&#xff0c;若在加上出現次數 class Solution { public: int fourSumCount(vector<int> &num…

nginx.conf配置文件

1、全局模塊 worker_processes 1; 工作進程數&#xff0c;一般設置成服務器內核數的2倍&#xff08;一般不超過8個&#xff0c;超過8個反而會降低性能&#xff0c;一般是4個&#xff0c;1-2個也可以&#xff09; 處理進程的過程必然涉及配置文件和展示頁面&#xff0c;也就是…

高斯過程的定義

高斯過程 1. 高斯過程的定義2. 協方差矩陣的構建3. 協方差矩陣的性質3.1. 計算挑戰3.2. 解決方法 1. 高斯過程的定義 高斯過程可以看作是對函數的分布&#xff0c;它假定任何有限數量的函數值的集合服從一個多元高斯分布。給定輸入數據點集合 { x 1 , x 2 , … , x n } \left…

2024.7.9作業

1、提示并輸入一個字符串&#xff0c;統計該字符串中字母、數字、空格以及其他字符的個數 #include <stdio.h> #include <string.h> int main(int argc,const char *argv[]) { char arr[30]{0}; int zm0,kg0,sz0,qt0; printf("請輸入字符串&…

OpenStack是一個開源的云計算平臺

OpenStack是一個開源的云計算平臺&#xff0c;由多個組件組成&#xff0c;這些組件協同工作&#xff0c;提供包括計算、網絡、存儲和身份服務在內的基礎設施即服務(IaaS)。OpenStack最初由NASA和Rackspace合作開發&#xff0c;目的是創建一個開放源代碼的云操作系統。 OpenSta…

智慧光伏一站式解決方案

光伏電站智慧化管理平臺&#xff0c;將現代先進的數字信息技術、通信技術、互聯網技術、云計算技術、大數據挖掘技術與光伏技術高度融合而形成。可以滿足光伏企業對電站的高發電量、低初始投資、低運維成本等需求&#xff0c;從開發到運維的25年生命周期內&#xff0c;實現高收…

使用clion刷leetcode

如何優雅的使用clion刷leetcode 安裝插件&#xff1a;LeetCode Editor) 插件配置&#xff1a; 這樣我們每打開一個項目&#xff0c;就會創建類似的文件 我們的項目結構&#xff1a; 我們在題解文件中導入頭文件myHeader.h并將新建的文件添加到cmakelists.txt文件&#xff0c;…

2024前端面試真題【JS篇】

DOM DOM&#xff1a;文本對象模型&#xff0c;是HTML和XML文檔的編程接口。提供了對文檔的結構化的表述&#xff0c;并定義可一種方式可以使從程序中對該結構進行訪問&#xff0c;從而改變文檔的結構、樣式和內容。 DOM操作 創建節點&#xff1a;document.createElement()、do…

hnust 1965: 深度優先搜索

hnust 1965: 深度優先搜索 題目描述 輸入一個圖&#xff0c;用鄰接矩陣存儲&#xff08;實際上也可以選擇鄰接表&#xff09;&#xff0c;并實現DFSTraverse操作。 拷貝前面已經實現的代碼&#xff0c;主函數必須如下&#xff0c;完成剩下的部分。 int main() { Graph g; Cre…

RTOS系統 -- 調試大法之FreeRTOS在M4上實現coredump功能

FreeRTOS內核崩潰&#xff08;coredump&#xff09;及異常打印技術 技術背景 在嵌入式系統中&#xff0c;FreeRTOS是一款廣泛使用的實時操作系統。FreeRTOS本身并不包含默認的coredump機制&#xff0c;但我們可以通過自定義異常處理函數來實現異常打印和coredump功能。通過捕…

了解PPO算法(Proximal Policy Optimization)

Proximal Policy Optimization (PPO) 是一種強化學習算法&#xff0c;由 OpenAI 提出&#xff0c;旨在解決傳統策略梯度方法中策略更新過大的問題。PPO 通過引入限制策略更新范圍的機制&#xff0c;在保證收斂性的同時提高了算法的穩定性和效率。 PPO算法原理 PPO 算法的核心…

Oracle數據庫自帶的內置表和視圖、常用內部視圖

文章目錄 一.Oracle數據庫自帶的內置表和視圖1.dba_開頭表2.user_開頭表3.v$開頭表4.all_開頭表5.session_開頭表6.index_開頭表 三.按組分的幾組重要的性能視圖1.System的over view2.某個session的當前情況3.SQL的情況4.Latch/lock/ENQUEUE5.IO方面的 分類類別關系群集、表、視…

【docker 把系統盤空間耗沒了!】windows11 更改 ubuntu 子系統存儲位置

系統&#xff1a;win11 ubuntu 22 子系統&#xff0c;docker 出現問題&#xff1a;系統盤突然沒空間了&#xff0c;一片紅 經過排查&#xff0c;發現 AppData\Local\packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\ 這個文件夾竟然有 90GB 下面提供解決辦法 步…

Spring-AOP(二)

作者&#xff1a;月下山川 公眾號&#xff1a;月下山川 1、什么是AOP AOP&#xff08;Aspect Oriented Programming&#xff09;是一種設計思想&#xff0c;是軟件設計領域中的面向切面編程&#xff0c;它是面向對象編程的一種補充和完善&#xff0c;它以通過預編譯方式和運行期…