Redis的各個數據的類型基本命令

什麼是Redis:

概念

Redis (REmote DIctionary Server) 是用 C 語言開發的一個開源的高性能鍵值對(key-value)數據庫。

特徵
1. 數據間沒有必然的關聯關係
2. 內部採用單線程機制進行工作
3. 高性能。官方提供測試數據,50個併發執行100000 個請求,讀的速度是110000 次/s,寫的速度是81000次/s。
4. 多數據類型支持

  • 字符串類型   string
  •  列表類型   list
  • 散列類型   hash
  • 集合類型   set
  • 有序集合類型   sorted_set

4. 持久化支持。可以進行數據災難恢復

在什麼情況下使用Redis?

  • 爲熱點數據加速查詢(主要場景),如熱點商品、熱點新聞、熱點資訊、推廣類等高訪問量信息等
  • 任務隊列,如秒殺、搶購、購票排隊等
  • 即時信息查詢,如各位排行榜、各類網站訪問統計、公交到站信息、在線人數信息(聊天室、網站)、設備信號等
  • 時效性信息控制,如驗證碼控制、投票控制等
  • 分佈式數據共享,如分佈式集羣架構中的 session 分離
  • 消息隊列
  • 分佈式鎖

 

Redis 的基本操作:

信息添加

功能:設置 key,value 數據

命令:
set kye value
例如: set name “李四”

  

信息查詢

功能:根據 key 查詢對應的 value,如果不存在,返回空(nil)

命令:
get key

範例:
get name

  

清除屏幕信息

功能:清除屏幕中的信息

命令
clear

 

退出客戶端命令行模式

功能:退出客戶端

命令
quit
exit
<ESC>

  

幫助

功能:獲取命令幫助文檔,獲取組中所有命令信息

命令
help 命令名稱

help @組名

 


 

key 基本操作

刪除指定key

del key

獲取key是否存在

exists key

獲取key的類型

type key

爲指定key設置有效期

expire key seconds

pexpire key milliseconds

expireat key timestamp

pexpireat key milliseconds-timestamp

獲取key的有效時間

ttl key

pttl key

切換key從時效性轉換爲永久性

persist key

爲key改名

rename key newkey

renamenx key newkey

對所有key排序

sort

其他key通用操作

help @generic

查詢key

keys pattern

* 匹配任意數量的任意符號

? 配合一個任意符號

[] 匹配一個指定符號  

  


db 基本操作

切換數據庫

select index

其他操作

quit

ping

echo message

數據移動

move key db

數據清除

dbsize

flushdb

flushall

  


  

string 類型

  • 存儲的數據:單個數據,最簡單的數據存儲類型,也是最常用的數據存儲類型
  • 存儲數據的格式:一個存儲空間保存一個數據
  • 存儲內容:通常使用字符串,如果字符串以整數的形式展示,可以作爲數字操作使用string 

string 類型數據的基本操作

 

添加/修改

set key value

獲取數據

get key

刪除數據

del key

添加/修改多個數據

mset key1 value1 key2 value2

獲取多個數據

mget key1 key2

獲取數據字符個數(字符串長度)

strlen key

追加信息到原始信息後部(如果原始信息存在就追加,否則新

append key val

設置數值數據增加指定範圍

incr key (加一)

incrby key  (可以指定數值,如果爲數值是負數那就是減操作)

incrementincrbyfloat key increme  (小數)

設置數值數據減少指定範圍的值

decr key(減一)

decrby key increme(可以指定數值,如果爲負數那就是增加操作)

設置數據具有指定的生命週期

setex key seconds value (單位爲秒)

psetex key milliseconds value (單位爲毫秒)

string 類型數據操作的注意事項  

  • 數據操作不成功的反饋與數據正常操作之間的差異 數據未獲取到(nil)等同於null
    • ① 表示運行結果是否成功
      • (integer) 0 → false 失敗
      • (integer) 1 → true 成功
    • ② 表示運行結果值
      • (integer) 3 → 3 3個
      • (integer) 1 → 1 1個
  • 數據最大存儲量512MB
  • 數值計算最大範圍(java中的long的最大值)92233720368547758

 

hash 類型

  • 新的存儲需求:對一系列存儲的數據進行編組,方便管理,典型應用存儲對象信息 
  • 需要的存儲結構:一個存儲空間保存多個鍵值對數據
  • hash類型:底層使用哈希表結構實現數據存儲

hash 類型數據的基本操作

添加/修改數據

hset key field value

獲取數據

hget key field  (單個)

hgetall key(所有)

刪除數據  

hdel key field1 [field2]

添加/修改多個數據

hmset key field1 value1 field2 value2 …  

獲取多個數據

hmget key field1 field2 … 

獲取哈希表中字段的數量

hlen key

獲取哈希表中是否存在指定的字段 

hexists key field

獲取哈希表中所有的字段名或字段值

hkeys key(獲取key值)

hvals key(獲取value值)

設置指定字段的數值數據增加指定範圍的值

hincrby key field increment(整數)

hincrbyfloat key field increment(小數)

hash 類型數據操作的注意事項

  • hash類型下的value只能存儲字符串,不允許存儲其他數據類型,不存在嵌套現象。如果數據未獲取到, 對應的值爲(nil) hash 類型數據操作的注意事項  每個 hash 可以存儲 2 32 - 1 個鍵值對
  • hash類型十分貼近對象的數據存儲形式,並且可以靈活添加刪除對象屬性。但hash設計初衷不是爲了存 儲大量對象而設計的,切記不可濫用,更不可以將hash作爲對象列表使用 
  • hgetall 操作可以獲取全部屬性,如果內部field過多,遍歷整體數據效率就很會低,有可能成爲數據訪問 瓶

 

 


 

 

list 類型

  • 數據存儲需求:存儲多個數據,並對數據進入存儲空間的順序進行區分
  • 需要的存儲結構:一個存儲空間保存多個數據,且通過數據可以體現進入順序 
  • list類型:保存多個數據,底層使用雙向鏈表存儲結構實現

list 類型數據基本操作

添加/修改數據

lpush key value1 [value2] …… (從左開始)

rpush key value1 [value2] ……(從右開始)

獲取數據

lrange key start stop

lindex key index

llen key 

獲取並移除數據 

lpop key(左)

rpop key(右)

規定時間內獲取並移除數據

blpop key1 [key2] timeout

brpop key1 [key2] timeout

brpoplpush source destination timeout

移除指定數據

lrem key count value

list 類型數據操作注意事項

  • list中保存的數據都是string類型的,數據總容量是有限的,最多2 32 - 1 個元素 (4294967295)。
  • list具有索引的概念,但是操作數據時通常以隊列的形式進行入隊出隊操作,或以棧的形式進行入棧出棧操作 
  • 獲取全部數據操作結束索引設置爲-1 
  • list可以對數據進行分頁操作,通常第一頁的信息來自於list,第2頁及更多的信息通過數據庫的形式加載  

 

set 類型  

  • 新的存儲需求:存儲大量的數據,在查詢方面提供更高的效率
  • 需要的存儲結構:能夠保存大量的數據,高效的內部存儲機制,便於查詢 
  • set類型:與hash存儲結構完全相同,僅存儲鍵,不存儲值(nil),並且值是不允許重複的

set 類型數據的基本操作  

添加數據

sadd key member1 [member2]

獲取全部數據

smembers key 

刪除數據

srem key member1 [member2]

獲取集合數據總量  

scard key

判斷集合中是否包含指定數據

sismember key member

隨機獲取集合中指定數量的數據

srandmember key [count]

隨機獲取集合中的某個數據並將該數據移出集合

spop key [count]

求兩個集合的交、並、差集

sinter key1 [key2](交集)

sunion key1 [key2](並集)

sdiff key1 [key2](差集)

求兩個集合的交、並、差集並存儲到指定集合中

sinterstore destination key1 [key2](交)

sunionstore destination key1 [key2](並)

sdiffstore destination key1 [key2] (差)

將指定數據從原始集合中移動到目標集合中

smove source destination member 

set 類型數據操作的注意事項  

  • set 類型不允許數據重複,如果添加的數據在 set 中已經存在,將只保留一份 set 類型數據操作的注意事項
  • set 雖然與hash的存儲結構相同,但是無法啓用hash中存儲值的空間

 


 

sorted_set 類型  

  • 新的存儲需求:數據排序有利於數據的有效展示,需要提供一種可以根據自身特徵進行排序的方式
  • 需要的存儲結構:新的存儲模型,可以保存可排序的數據
  • sorted_set類型:在set的存儲結構基礎上添加可排序字段

sorted_set 類型數據的基本操作

添加數據

zadd key score1 member1 [score2 member2]

獲取全部數據

zrange key start stop [WITHSCORES]

zrevrange key start stop [WITHSCORES]

刪除數據

zrem key member [member ...]

按條件獲取數據

zrangebyscore key min max [WITHSCORES] [LIMIT]

zrevrangebyscore key max min [WITHSCORES]

條件刪除數據

zremrangebyrank key start stop

zremrangebyscore key min max

獲取集合數據總量

zcard key

zcount key min max

集合交、並操作

zinterstore destination numkeys key [key ...]

zunionstore destination numkeys key [key ...]

獲取數據對應的索引(排名)

zrank key member

zrevrank key membe

score值獲取與修改

zscore key member

zincrby key increment member

獲取當前系統時間

time

sorted_set 類型數據操作的注意事項  

  • score保存的數據存儲空間是64位,如果是整數範圍是-9007199254740992~9007199254740992 
  • score保存的數據也可以是一個雙精度的double值,基於雙精度浮點數的特徵,可能會丟失精度,使用時 候要慎重 
  • sorted_set 底層存儲還是基於set結構的,因此數據不能重複,如果重複添加相同的數據,score值將被反 復覆蓋,保留最後一次修改的結果 

 

學習的視頻是:https://www.bilibili.com/video/av76235738/?spm_id_from=333.788.videocard.3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章