數據庫:Redis

Redis簡介

  • NoSQL,全名爲Not Only SQL,指的是非關係型的數據庫
  • 隨着訪問量的上升,網站的數據庫性能出現了問題,於是NoSQL被設計出來

簡介

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API並提供多種語言的 API的非關係型數據庫。

Github 源碼:https://github.com/antirez/redis
Redis 官網:https://redis.io/

優點/缺點

優點:

  • 高可擴展性 分佈式計算 低成本
  • 架構的靈活性,半結構化數據 沒有複雜的關係

缺點:

  • 沒有標準化
  • 有限的查詢功能
  • 最終一致是不直觀的程序

功能

在這裏插入圖片描述

Redis支持的數據類型

String字符串:set key value

  • string類型是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的對象 。
  • string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。

Hash(哈希) hmset name key1 value1 key2 value2

  • Redis hash 是一個鍵值(key=>value)對集合。
  • Redis hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

List(列表)set key List

Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)

lpush name value: 在 key 對應 list 的頭部添加字符串元素
rpush name value: 在 key 對應 list 的尾部添加字符串元素
lrem name index: key 對應 list 中刪除 count 個和 value 相同的元素
llen name : 返回 key 對應 list 的長度

Set(集合): sadd name value

集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。

zset(sorted set:有序集合): zadd name score value

每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。

Redis持久化

Redis 是一個內存數據庫,與傳統的MySQL,Oracle等關係型數據庫直接將內容保存到硬盤中相比,內存數據庫的讀寫效率比傳統數據庫要快的多(內存的讀寫效率遠遠大於硬盤的讀寫效率)。但是保存在內存中也隨之帶來了一個缺點,一旦斷電或者宕機,那麼內存數據庫中的數據將會全部丟失。

目標: 持久化就是把內存的數據寫到磁盤中去,防止服務宕機了內存數據丟失。

Redis 提供了兩種持久化方式:RDB(默認) 和AOF

Redis持久化: RDB

RDB是Redis用來進行持久化的一種方式,是把當前內存中的數據集快照寫入磁盤,也就是 Snapshot 快照(數據庫中所有鍵值對數據)。恢復時是將快照文件直接讀到內存裏。
在這裏插入圖片描述

Redis持久化: AOF

  • RDB 持久化存在一個缺點是一定時間內做一次備份,如果redis意外down掉的話,就會丟失最後一次快照後的所有修改(數據有丟失)。
  • 持久化方式 AOF 則是通過保存Redis服務器所執行的寫命令來記錄數據庫狀態。
    在這裏插入圖片描述

Redis安裝與配置

Redis的安裝

1.首先上官網下載Redis 壓縮包,地址 http://redis.io/download
2. 壓縮包執行解壓操作並進行編譯

tar xzf redis-x.x.x.tar.gz
cd redis-x.x.x/
make && make install

Redis的部署

1.執行Redis-server 命令,啓動Redis 服務

./redis-server

2.客戶端redisClient

redis-cli   	# 登錄redis
> set 'a' '123	

3.當添加鍵值後,發現在當前運行的目錄下,創建了一個文件:dump.rdb,這個文件用於將數據持久化存儲

Redis架構模式

單機版

特點:簡單

問題:1、內存容量有限 2、處理能力有限 3、無法高可用。
在這裏插入圖片描述

主從複製

Redis 的複製(replication)功能允許用戶根據一個 Redis 服務器來創建任意多個該服務器的複製品,其中被複制的服務器爲主服務器(master),而通過複製創建出來的服務器複製品則爲從服務(slave)。只要主從服務器之間的網絡連接正常,主從服務器兩者會具有相同的數據,主服務器就會一直將發生在自己身上的數據更新同步 給從服務器,從而一直保證主從服務器的數據相同。
在這裏插入圖片描述
特點:
1.master/slave 角色
2.master/slave 數據相同
3.降低 master 讀壓力在轉交從庫

問題:
1.無法保證高可用
2.沒有解決 master 寫的壓力

Python與Redis

在這裏插入圖片描述
在這裏插入圖片描述

封裝

  • 連接redis服務器部分是一致的
  • 將string類型的讀寫進行封裝
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章