redis記憶體資料庫

2021-07-13 08:55:39 字數 2072 閱讀 9960

一、snapshotting(快照)

1)、redis呼叫fork,現在有了子程序和父程序。

2)、子程序開始將資料寫到臨時rdb檔案中。

3)、當子程序完成寫rdb檔案,用新檔案替換老檔案。

4)、這種方式可以使redis使用copy-on-write技術。

二、aof日誌

1)、redis呼叫fork,現在有了子程序和父程序。

2)、子程序根據記憶體中的資料庫快照,往臨時檔案中寫入重建資料庫狀態的命令

3)、父程序繼續處理client請求,除了把寫命令寫入到原來的aof檔案中。同時把收到的寫命令快取起來。這樣就能保證如果子程序重寫失敗的話並不會出問題。

4)、當子程序把快照內容寫入已命令方式寫到臨時檔案中後,子程序發訊號通知父程序。然後父程序把快取的寫命令也寫入到臨時檔案。

5)、現在父程序可以使用臨時檔案替換老的aof檔案,並重命名,後面收到的寫命令也開始往新的aof檔案中追加。

三、配置redis磁碟寫入方式和時機

四、redis資料型別

1)、string(get、set、incr、decr mget)

set msg "hello word";

set number 10086;

get msg;

get number;

2)、hash(hget,hset,hgetall)

hset key field value 設定hash field為指定值,如果key不存在,則先建立。

hset message "id" 100001;  //鍵入key-value

hset message "name" "jack";

hget key field  獲取指定的hash field。

hget message "id";   //通過key獲得value

hdel message "id";  //通過key刪除

hlen message;       //獲取雜湊鍵值對的數量

hgetall 返回hash的所有filed和value

3)、list(lpush,rpush,lpop,rpop,lrange)

lpush key string 在key對應list的頭部新增字串元素,返回1表示成功,0表示key存在且不是list型別。

lpush message "topic";

rpush key string 同上,在尾部新增。

rpush content "admin"'

lpop key 從list的頭部刪除元素,並返回刪除元素。如果key對應list不存在或者是空返回nil,如果key對應值不是list返回錯誤

rpop key 同上,但是從尾部刪除

4)、set(sadd,srem,spop,sdiff ,smembers,sunion)

sadd key member 新增乙個string元素到,key對應的set集合中,成功返回1,如果元素以及在集合中返回0,key對應的set不存在返回錯誤

srem key member 從key對應set中移除給定元素,成功返回1,如果member在集合中不存在或者key不存在返回0,如果key對應的不是set         型別的值返回錯誤

spop key 刪除並返回key對應set中隨機的乙個元素,如果set是空或者key不存在返回nil

srandmember key 同spop,隨機取set中的乙個元素,但是不刪除元素

smove srckey dstkey member 從srckey對應set中移除member並新增到dstkey對應set中,整個操作是原子的。成功返回1,如果member         在srckey中不存在返回0,如果

key不是set型別返回錯誤

5)、sort set(zadd,zrange,zrem,zcard)

zadd key score member 新增元素到集合,元素在集合中存在則更新對應score

zrank key member 返回指定元素在集合中的排名(下標),集合中元素是按score從小到大排序的

zrem key member 刪除指定元素,1表示成功,如果元素不存在返回0

zcard key 返回集合中元素個數

《Redis記憶體資料庫》Redis訊息模式

訊息模式為了資源的充分利用。redis的訊息分為兩類 1.訊息佇列 2.訂閱模式 訂閱模式需要開兩個視窗演示 第一步 設定接收頻道 subscribe channel channel 設定接收頻道 第二步 在另乙個視窗往這個頻道傳送訊息 publish channel message 往頻道chan...

《Redis記憶體資料庫》Redis基本操作命令

exists key 判斷key是否存在,存在反饋1,否則反饋0.del key 刪除key keys pattern 檢視鍵資訊,可以使用一些規則 expire pexpire key seconds 設定鍵值有效時間 秒和毫秒 這裡會出現記憶體擊穿,導致雪崩,最後導致mysql oracle資料...

Redis資料庫(初級)

redis是乙個開源的非關係型資料庫,它採用c語言編寫,是乙個key value儲存系統,它儲存的value型別很多,包括string 字串 list 鍊錶 set 集合 zset 有序集合 hash 雜湊 比如,我們插入一條資料,如下 python view plain copy import r...