redis學習筆記

2021-10-04 11:36:26 字數 4239 閱讀 8014

redis是什麼

redis是乙個key-value等多種資料結構的儲存系統,可用於快取,事件訂閱,發布,高速佇列等場景

該資料庫使用ansi c語言編寫,支援網路,提供字串,雜湊,列表,佇列,集合結構直接訪問,基於記憶體,可持久化。

異常快 - redis非常快,每秒可執行大約110000次的設定(set)操作,每秒大約可執行81000次的讀取/獲取(get)操作。

支援豐富的資料型別 - redis支援開發人員常用的大多數資料型別,例如列表,集合,排序集和雜湊等等。這使得redis很容易被用來解決各種問題,因為我們知道哪些問題可以更好使用地哪些資料型別來處理解決。

操作具有原子性 - 所有redis操作都是原子操作,這確保如果兩個客戶端併發訪問,redis伺服器能接收更新的值。

多實用工具 - redis是乙個多實用工具,可用於多種用例,如:快取,訊息佇列(redis本地支援發布/訂閱),應用程式中的任何短期資料,例如,web應用程式中的會話,網頁命中計數等。

redis的應用場景有哪些

redis資料型別

一共支援5種資料型別 string(字串) , hash(雜湊) ,list(列表) set(集合)  zset(sorted set有序集合)。

(1)string(字串)

他是最基本型別 乙個鍵對應乙個值 需要注意的是乙個鍵值最大儲存為512m

set key "he"

get key

"he"

getset key "nihao"

"he"

mset key1 "ni" key2 "nihao" key3 "hello"

get key1

"ni"

get key2

"nihao"

(2)hash(雜湊)

hash是乙個鍵值對集合,是乙個string型別的field和value的對映表,適用於儲存物件

hset redishash 1 "001"

(integer) 1

hget redishash 1

"001"

hmset redishash 1 "001" 2 "002"

hget redishash 1

"001"

hget redishsh 2

"002"

hmget redishash 1  2

"001"

"002"

(3)表(列表)

是redis最簡單的字串列表,他是按插入順序排序

lpush  word hi

(integer) 1

lpush word hello

(integer) 2

rpush word  world

(integer) 3

lrange word 0 2

"hello"

"hi"

"world"

llen word

(integer) 3

(4)組 (集合)

是字串型別的無序集合,也不可重複!! 無序 不可重複

sadd redis redisset 

(integer) 1

sadd redis redisset1

(integer) 2

sadd redis redisset2

(integer) 3

smember redis

"redisset1"

"redisset"

"redisset2"

sadd redis redisset2

(integer) 0

smembers redis 

"redisset1"

"redisset"

"redisset2"

smembers redis

"redisset1"

"redisset3"

"redisset"

"redisset2"

srem redis redisset

(integer) 1

smember redis

"redisset1"

"redisset3"

"redisset2"

(5)zset (sorted set 有序集合)

是string 型別的有序集合,也不可重複

有序集合中的每個元素都需要指定乙個分數 根據分數進行公升序降序 如果多個元素有相同的分數,則按照字典順序公升序排序 sorted set 因此非常適合做排行排名

zadd nosql 0 001

(integer) 1

zadd nosql 0 002

(integer) 1

zadd nosql 0 003

(integer) 1

zcount nosql 0 0

(integer) 3

zcount nosql 0 3 

(integer) 3

zrem nosql 002

(integer) 1

zcount nosql 0 3

(integer) 2

zscore nosql 003

"0"zrangebyscore nosql 0 10

"001"

"003"

zadd nosql 1 003

(integer) 0

zadd nosql 1 004

(integer) 1

zangebyscore nosql 0 10 

"001"

"003"

"004"

zadd nosql 3 005

(integer) 1

zadd nosql 2 006

(integer) 1

zangebyscore nosql 0 10

"001"

"002"

"003"

"006"

"005"

5,redis的服務相關的命令

slect#選擇資料庫(資料庫編號0-15)

退出#退出連線

資訊#獲得服務的資訊與統計

monitor#實時監控

config get#獲得服務配置

flushdb#刪除當前選擇的資料庫中的key

flushall#刪除所有資料庫中的鍵

6,redis的發布與訂閱

redis的發布與訂閱(發布/訂閱)是它的一種訊息通訊模式,一方傳送資訊,一方接收資訊。

下圖是三個客戶端同時訂閱同乙個頻道

下圖是有新資訊傳送給頻道1時,就會將訊息傳送給訂閱它的三個客戶端

7,redis的持久化

redis持久有兩種方式:快照(快照),僅附加檔案(aof)

快照(快照)

1,將儲存在記憶體的資料以快照的方式寫入二進位制檔案中,如預設dump.rdb中

2,儲存900 1 

#900秒內如果超過1個key被修改,則啟動快照儲存

3,儲存300 10 

#300秒內如果超過10個key被修改,則啟動快照儲存

4,儲存60 10000 

#60秒內如果超過10000個重點被修改,則啟動快照儲存

僅附加檔案(aof)

#完全依賴作業系統,效率最佳,效果沒法保證

8,redis的效能測試

自帶相關測試工具

實際測試同時執行100萬的請求

redis 學習筆記

本文寫作源於最近產品中部分功能用到了redis redis在功能上是乙個與memecache類似的軟體,但它比memecache提供了更強大的功能。redis本質上是乙個key value型別的記憶體資料庫。其value可以是string,list,set,sorted set,hash。很多地方都...

redis學習筆記

1.redis的無序集合 sadd命令產生乙個無序集合 smembers檢視集合元素 sismember用於檢視集合是否存在,匹配項包括集合名和元素個數。匹配成功返回1,匹配失敗返回0 2.有序集合 zadd 生成乙個有序集合。zrange檢視正序的集合,zrevrange檢視反序的集合 set和g...

redis學習筆記

redis啟動伺服器和客戶端的相關命令 string型別 乙個key對應乙個value set key value 比如 set name geyule setnx 如果key存在返回0,nx表示not exist setex 指定有效期 setrange 替換 setrange key n val...