1. 程式人生 > >redis 基本資料型別及使用

redis 基本資料型別及使用

文章目錄


相對其它 nosql 資料庫的優勢

  1. 支援資料的持久化,可以將記憶體中的資料儲存到磁碟中,下次重啟以後再載入回記憶體 ;
  2. 支援更多的資料型別,除了 KV 以外,還有 list set hash zset
    等 ;
  3. 支援資料的備份,主從模式的資料備份

雜項知識

  1. 單執行緒

  2. 預設是16個數據庫,初始使用第 0 資料庫 ;

    資料庫之間的切換:select dbid

  3. dbsize 檢視當前資料庫 key 的數量 ;

    檢視所有key的內容: keys *

    也支援模糊查詢的 ;

  4. Flushdb 清空當前庫 ;

  5. flushall : 通殺所有庫 ;

  6. 統一密碼:所有的資料庫,都是使用同一個密碼 ;

  7. redis索引,都是從零開始 ;

  8. 埠號為6379的故事:手機鍵盤 MERZ


基本資料型別

  1. String

    redisstring 是二進位制安全的,也就是它可以包含任何東西,比如jpg圖片或者序列化物件 ;

    對應的 value,最多可以儲存 512 M資料 ;

  2. Hash

  3. List ,底層是個連結串列 ;

  4. Set

  5. Zset

對於其中的 key ,每一個 key 就是一個物件 ;


Key 關鍵字

-- 列出所有的key
key * 
-- 判斷某個 key 是否存在
exists key 
-- 剪下操作,將當期的 key 移動到指定的資料庫
move key db
-- 為給定的 key 設定過期時間,按照 秒 計算
expire key s -- 檢視 key 還有多少秒過期,-1 永不過期,-2 已過期 ttl key -- 檢視 key 是什麼型別 type key -- 刪除 key del key

String 型別(單鍵單值)

-- 在 key 末尾追加字串
append 
-- 獲取字串的長度,字元數
strlen
-- key 值每次加/減去 1,下面的幾個數值的操作,value 必須是數值 
incr/decr key
-- 一次性加/減 num 
incrby/decrby key num
-- 獲取指定區間的值,取字串的多少位到多少位 ,角標從 0 開始,-1 表示到最後
getrange key begin end 
-- 從指定位開始,插入 value ,會覆蓋掉後面的資料
setrange key index value 
-- 設定 key 的快取時間
setex key time value 
-- 建立 key 的時候,判斷下是否存在,如果存在,則不建立
setnx key value 
-- 一次性對多個值進行操作,但是如有一個操作失敗,則全部失敗 
mset/mget/msetnx

List 型別 (單鍵多值)

-- 從兩端插入資料
lpush/rpush key values 
-- 遍歷 key 角標從零開始,-1 表示到最後
lrange key begin end 
-- 從兩端取值
lpop/rpop
-- 根據角標獲取對應的值
lindex key index
-- 獲取 key 長度,也就是 value 的個數
llen key 
-- 刪除對應 key 的 N 個 相同的value
lrem key N value 
-- 擷取指定範圍的值,然後再次賦值給 key
ltrim key begin end 
-- 把源右邊的拿走,放到目的的左邊
rpoplpush orignalLsit newList
-- 改變具體下標對應的值
lset key index value
-- 在 key 的某個位置插入 value
linsert key before/after origanl new 

Set 型別 (單鍵多值)

-- 新增一個或者對個值,對於重複新增的值,不會爆錯,但是會自動額過濾掉 ;
sadd key value[s] ;
-- 列出 key 的所有 value 
smembers key
-- 判斷 value 在不在 key 裡面
sismember key value 
-- 獲取集合中的元素個數
scard key
-- 刪除集合中的元素
srem key value
 -- 在 set 裡面隨機出 num 個整數
 srandmember key num
 -- 隨機出棧一個數
 spop key
 -- 將 key1 裡面的某個 value1 新增到 key2 裡面
 smove key1 key2 value1 

-- 差集 以第一個為參照,在第一個裡面,不在後面任何一個裡面
sdiff key1 key2 ...keyN
-- 交集
sinter  key1 key2 ...keyN
-- 並集
sunion key1 key2 ...keyN



Hash型別 (KV模式,V是一個鍵值對)

-- 常用的操作
hset hget hmset hmget hgetall hdel 
-- hash 的key 對應的 鍵值對 數量
hlen 
-- 某個 key 對應的KV裡面,是否存在要找的 K
hexists key K-V-K
-- 獲取 key 對應的鍵值對的所有鍵 
hkeys key
-- 獲取 key 對應的鍵值對的所有值
hvals key 

-- 對key 的 K-V-V 數值進行增減
hincrby/hincrbyfloat key K-V-K num
-- 
hsetnx key K-V-V value



Zset型別 (KV模式,V是一個鍵值對)

-- 新增、建立元素
zadd key score1 value1 score2 value2 ... scoreN valueN 
-- 取值
zrange key begin end [withscores]
-- ( 不包含 還可以選擇限制顯示的數量
zrangebyscore key [(]beginScore [(]endScore [limit beginIndex num ]
-- 刪除元素
zrem key K-V-V
-- 返回 鍵值對的數量
zcard key 
-- 計算在某個區間內的鍵值對的個數
zcount key score1 score2 
-- 獲取 K-V-V 的下標值
zrank key K-V-V
-- 獲取對應的 K-V-V 對應的 score 
zscore key K-V-V 
-- 逆序獲取下標值
zrevrank key K-V-V 
-- 逆序輸出
zrevrange key beginindex endindex
-- 從高到低 輸出對應的分數對應的
zrevrangebyscore key highScore lowScore