1. 程式人生 > 其它 >分散式相關

分散式相關

分散式--負載均衡、redis(提升效能)

正向代理:截獲請求,在伺服器端分派任務

反向代理:處於客戶端,將客戶的請求發往不同的目的地

  • 問題

    • 解決session失效 redis快取資料庫代理本地資料

  • 解決session共享問題:

  1. session複製,session修改均會廣播,造成伺服器端負載

  2. 重寫web伺服器duisession的處理,導向第三方庫,伺服器上所有應用共享第三方快取

  • 負載均衡策略:

  1. 輪詢策略

  2. 隨機策略

  3. 權重策略(weight值)

  4. url雜湊策略

  • 負載均衡面臨的問題

 

 

 

Nginx(反向代理)

 

Redis(第三方快取資料庫)

  • 使用redis封裝的工具解決session共享問題 方案1:整體性解決方案:延用session 從寫web server對session操作 方案2:摒棄session,直接操作redis (推薦)

  • redis基礎命令

  1. String

    • set 鍵值 值 存入值

    • setnx 鍵值 值 判斷是否存在(存在:返回0 不存在:建立)

    • mset (鍵值 值...) 存入多個

    • get 鍵值 取值

    • mget(鍵值1 鍵值2...) 取多個

    • del 鍵值 刪除值

    • select 0~15 切換資料庫(預設16個)

    • incr 鍵值 增加一個

    • incrby 鍵值 添加個數 新增n個

    • decr 鍵值 刪除一個

    • decrby 鍵值 刪除個數 刪除n個

    • expire 鍵值 時間(秒) 多久刪除

    • pexpire 鍵值 時間(毫秒) 多久刪除

    • ttl 鍵值 獲得鍵值的生存期(存在:-1 不存在:-2 定時期間:返回秒數)

    • pttl 鍵值 獲得鍵值的生存期(存在:-1 不存在:-2 定時期間:返回毫秒數)

    • key * 檢視所有鍵值

    • exists 鍵值 檢視鍵值是否存在(存在:1 不存在:0)

    • append 鍵值 值 鍵值對應的值追加一個值

    • strlen 鍵值 檢視長度

  2. hash(雜湊表 物件)

    • hset 物件名 屬性名 值 新增值

    • hget 物件名 屬性名 取值

    • hkeys 物件名 獲得所有屬性名

    • hvals 物件名 獲得所有值

    • hgetall 物件名 獲得所有屬性名、值(鍵值對)

    • hlen 物件名 獲得屬性個數

    • hincrby 物件名 屬性 n 屬性值+n(數字型別)負數為減

    • hmget 物件名 屬性1 屬性2... 獲得多個屬性對應的值

  3. list(列表)

    • lpush 列表名 值 新增值(棧 先進後出)

    • lrange 列表名 0 -1 查詢所有列表中的值(列表相當於棧)

    • lindex 列表名 下標 獲得下標對應的值

    • llen 列表名 獲得列表長度

    • lset 列表名 下標 值 修改當前下標的值

    • rpush 列表名 值 新增值(佇列 先進先出)

    • lpop 列表名 將列表第一個彈出

    • rpop 列表名 將列表最後一個彈出

    • rpoplupsh 列表名1 列表名2 將列表1最後一個彈出並放入列表2的第一個

  4. set(集合)

    • sadd 集合名 值1 值2... 集合中新增(去重)

    • smembers 集合名 檢視集合

    • sismember 集合名 值 檢視集合中值是否存在(存在:1 不存在:0)

    • sinter 集合1 集合2 兩個集合的交集

    • sunion 集合1 集合2 兩個集合的並集

  5. SortedSet(有序集合)(預設從小到大)

    • zadd 集合名 值 屬性 新增

    • zrange 集合名 0 -1 檢視集合(排序:小-大)

    • zrevrange 集合名 0 -1 產看集合(排序:大-小)

    • zscore 集合名 屬性 取得屬性對應的值

  6. Transaction(事務)

    • multi 開啟事務

    • exec 提交事務

    • discard 放棄

    • watch 監控