1. 程式人生 > >【Redis】Redis資料庫及五種資料型別圖解

【Redis】Redis資料庫及五種資料型別圖解

目錄

Redis資料庫:

是什麼?

優勢?

資料型別(五種):

1.字串:

2.hash型別:

3.list型別:

4.set型別:

5.zset型別:


Redis資料庫:

是什麼?

一類新出現的,非關係型的,不支援SQL語法的,不支援事物,||  開源,C語言編寫,支援網路,基於記憶體,可持久化,以Key-Value形式儲存資料,的NoSql資料庫。

優勢?

效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

豐富的資料型別 – Redis支援二進位制的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。

原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。

豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

 

伺服器端的命令為redis-server

客戶端的命令為redis-cli

執行測試命令:ping    ==》    PONG

資料庫沒有名稱,預設有16個,通過0-15來標識,連線redis預設選擇第一個資料庫,使用select來選擇

 

資料型別(五種):

字串string,雜湊hash,列表list,集合set,有序集合zset

 

1.字串:

字串型別是 Redis 中最為基礎的資料儲存型別,它在 Redis 中是二進位制安全的,這意味著該型別可以接受任何格式的資料,如JPEG影象資料或Json物件描述資訊等。在Redis中字串型別的Value最多可以容納的資料長度是512M。

儲存形式:

操作方法:

  • 增:

設定鍵值:set key value

設定鍵值及過期時間,以秒為單位:setex key seconds value

設定多個鍵值:mset key1 value1 key2 value2 ...

  • 刪:

刪除鍵及對應的值:del key1 key2 ...

刪除鍵a2、a3:del a2 a3

  • 改:

設定鍵'a1'的過期時間為3秒:expire 'a1' 3

追加值(通過鍵向已存在的值末尾追加內容):append key value

  • 查:

檢視所有鍵:keys *

檢視名稱中包含a的鍵:keys 'a*'

判斷鍵是否存在,如果存在返回1,不存在返回0:exists key1

檢視鍵對應的value的型別:type key

根據鍵獲取值,如果不存在此鍵則返回nil:get key

根據多個鍵獲取多個值:mget key1 key2 ...

檢視有效時間,以秒為單位:ttl key

 

2.hash型別:

可以理解為首先有一個主key,在這個主key下資料以key-value形式儲存,值的型別也是String

儲存形式:

  • 增:

設定單個屬性:hset key field value

設定多個屬性:hmset key field1 value1 field2 value2 ...

  • 刪:

刪除屬性,屬性對應的值會被一起刪除:hdel key field1 field2 ...

  • 改:

重複set等於更改

  • 查:

獲取指定鍵所有的屬性:hkeys key

獲取單個屬性的值:hget key field

獲取多個屬性的值:hmget key field1 field2 ...

獲取所有屬性的值:hvals key

 

3.list型別:

列表的元素型別為string,按照插入順序排序,元素有索引

儲存形式:

  • 增:

從鍵為'a1'的列表左側新增資料a、b、c:lpush a1 a b c    ==》c、b、a

從鍵為'a1'的列表右側新增資料a、b、c:rpush a1 a b c    ==》a、b、c

在指定元素的前或後新增新元素:linsert key before或after 現有元素 新元素

  • 刪:

將列表中前count次出現的值為value的元素移除

count > 0: 從頭往尾移除

count < 0: 從尾往頭移除

count = 0: 移除所有

lrem key count value

舉例,從'a2'列表右側開始刪除2個'b':lrem a2 -2 b

  • 改:

修改鍵為'a1'的列表中下標為1的元素值為'z':lset a1 1 z

  • 查:

獲取鍵為'a1'的列表所有元素:lrange a1 0 -1

 

4.set型別:

元素為string型別,元素具有唯一性,不重複,沒有修改操作

儲存形式:

  • 增:

新增元素:sadd key member1 member2 ...

  • 刪:

刪除指定元素:srem key

  • 查:

返回所有的元素:smembers key

 

5.zset型別:

有序集合,元素為string型別,元素具有唯一性,每個元素都會關聯一個double(雙精度)型別的score,表示權重,通過權重將元素從左到右排序。

  • 增:

新增:zadd key score1 member1 score2 member2 ...

舉例:向鍵'a1'的集合中新增元素'zhao'、'qian'、'sun'、'li',權重分別為9、6、8、7

zadd a1 9 zhao 6 qian 8 sun 7 li 

  • 刪:

刪除集合'a1'中元素'zhao':zrem a1 zhao

刪除集合'a1'中許可權在2、6之間的元素:zremrangebyscore a1 2 6

  • 查:

獲取鍵'a1'的集合中所有元素:zrange a1 0 -1

獲取鍵'a1'的集合中許可權值在8和9之間的成員:zrangebyscore a1 8 9

獲取鍵'a1'的集合中元素'zhao'的權重:zscore a1 zhao

 

容易出現的問題:

強制關閉Redis快照導致不能持久化。 解決方案:

執行config set stop-writes-on-bgsave-error no 命令後,關閉配置項stop-writes-on-bgsave-error解決該問題。