日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mac os 开启redis_高并发大流量,总会想到它!来一起通过docker搭建redis集群

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mac os 开启redis_高并发大流量,总会想到它!来一起通过docker搭建redis集群 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在一般的項目都會用到redis做緩存,也不免有老鐵沒用過,我就一起說下吧。

redis

  • 官網

https://redis.io/

Redis是一個開源(BSD許可)的內存數據結構存儲,用作數據庫、緩存和消息代理。它支持諸如字符串、散列、列表、集合、帶有范圍查詢的排序集、位圖、日志、帶有半徑查詢的地理空間索引和流之類的數據結構。Redis具有內置的復制、Lua腳本、LRU驅逐、事務和不同級別的磁盤持久性,并通過Redis Sentinel和Redis Cluster自動分區提供高可用性。

  • 歷史

2008年,意大利一家創業公司Merzia的創始人Salvatore Sanfilippo為了避免MySQL的低性能,親自定做一個數據庫,并于2009年開發完成,這個就是Redis。

短短幾年,用戶數據量猛增。國內如新浪微博、街旁和知乎等,國外如GitHub、暴雪等,都是Redis的用戶。世界上最大規模的Redis緩存,就是新浪微博團隊打造的。熱點新聞的時候。Redis可以達到最多每秒10萬的讀寫。

  • 高速緩存介紹
  • 高速緩存利用內存保持數據,讀寫速度遠超過硬盤
  • 高速緩存可以減少IO操作,降低IO壓力
  • 微信紅包就是很好的例子,在發紅包的時候,紅包信息就保存在緩存中,搶的人也是從高速緩存中取。春節當天幾個億的人來搶也保持系統的穩定。

  • 一般的應用,都分為常用和個性化,個性化可能是從數據庫中獲取的。但是常用的可能就是從高速緩存中獲取的。
    • Redis集群介紹

    Redis目前的集群方案為以下幾種:

  • RedisCluster:官方推薦,沒有中心點(主節點不是中心節點,而是保存數據最多的,最新的,同步后主節點就消失了)。
  • Codis:中間件,存在中心節點(中心節點掛了,徹底玩完)。
  • Twemproxy:中間件產品,存在中心節點。
    • RedisCluster
  • 無中心節點,客戶端與redis節點直連,不需要中間代理層(很類似PXC)
  • 數據可以被分片存儲(每個節點存儲的內容是不一樣的)
  • 管理方便,后續可自行增加或者摘除節點
    • 本次搭建的Redis節點的示意圖
    • 主從同步

    上邊說過,RedisCluster的數據是分片存儲的,如果redis掛了就會丟失一部分的數據。為了避免這個問題的產生,就必須引入主從同步的機制

  • Redis集群中的數據復制是通過主從同步來實現的。
  • 主節點(Master)把數據分發給從節點(Slave)
  • 主從同步的好處在于高可用,Rredis節點有冗余設計
    • Redis集群高可用
  • Redis集群中應該包含奇數個Master,至少應該是3個,如果其中一個掛的,剩余奇數個可以進行選舉至少過半的情況。很容易選擇到master節點。
  • Redis集群中每個Master都應該有Slave
    • 為什么Redis不搭建負載均衡

    因為本身前后端分離項目,請求后端的時候,后端對請求已經做了負載均衡所以Redis不需要做負載均衡。

    搭建集群

    應用IP地址服務配置安裝應用安裝方式docker-mysql192.168.66.101docker-redis-cluster雙核 8g內存docker-redis-clusterdocker

    (1). 虛擬機vagrant講述安裝的步驟

    vagrant up

    (2).機器window/mac開通遠程登錄root用戶下

    su -# 密碼vagrant#設置 PasswordAuthentication yesvi /etc/ssh/sshd_configsudo systemctl restart sshd
    • 創建文件夾,配置
    mkdir redis-clustercd redis-clustermkdir r1cd r1vi redis.confmkdir datacd ~
    • redis.conf

    配置了5個地方

  • daemonize yes
  • 以后臺進程運行

  • cluster-enabled yes
  • 開啟集群

  • cluster-config-file 150000
  • 超時時間

  • appendonly yes
  • 開啟AOF模式,保存文件的形式

  • requirepass idig8.com
  • 認證密碼

  • cluster-config-file nodes.conf
  • 集群配置文件

    直接看github我提交的源碼吧

    一共要創建6個redis集群

    • 創建容器(r1)

    想加上安全驗證,但是不生效,查了下daemonize yes,他的作用是是否開啟守護進程模式,在該模式下,redis會在后臺運行,并將進程pid號寫入至redis.conf選項pidfile設置的文件中,此時redis將一直運行,除非手動kill該進程。所以進入這個容器內手動選擇加載配置文件。

    docker run -it -d -v /root/redis-cluster/r1/redis.conf:/etc/redis/redis.conf --name r1 -p 5001:6379 --net=net2 --ip 172.19.0.2 zhugeaming1314/redis bash
    • 配置啟動
    docker exec -it r1 bashcd /usr/redis/src./redis-server /etc/redis/redis.conf
    • 創建容器(r2)
    docker run -it -d -v /root/redis-cluster/r2/redis.conf:/etc/redis/redis.conf --name r2 -p 5002:6379 --net=net2 --ip 172.19.0.3 zhugeaming1314/redis bash
    • 配置啟動
    docker exec -it r2 bashcd /usr/redis/src./redis-server /etc/redis/redis.conf
    • 創建容器(r3)
    docker run -it -d -v /root/redis-cluster/r3/redis.conf:/etc/redis/redis.conf --name r3 -p 5003:6379 --net=net2 --ip 172.19.0.4 zhugeaming1314/redis bash
    • 配置啟動
    docker exec -it r3 bashcd /usr/redis/src./redis-server /etc/redis/redis.conf
    • 創建容器(r4)
    docker run -it -d -v /root/redis-cluster/r4/redis.conf:/etc/redis/redis.conf --name r4 -p 5004:6379 --net=net2 --ip 172.19.0.5 zhugeaming1314/redis bash
    • 配置啟動
    docker exec -it r4 bashcd /usr/redis/src./redis-server /etc/redis/redis.conf
    • 創建容器(r5)
    docker run -it -d -v /root/redis-cluster/r5/redis.conf:/etc/redis/redis.conf --name r5 -p 5005:6379 --net=net2 --ip 172.19.0.6 zhugeaming1314/redis bash
    • 配置啟動
    docker exec -it r5 bashcd /usr/redis/src./redis-server /etc/redis/redis.conf
    • 創建容器(r6)
    docker run -it -d -v /root/redis-cluster/r6/redis.conf:/etc/redis/redis.conf --name r6 -p 5006:6379 --net=net2 --ip 172.19.0.7 zhugeaming1314/redis bash
    • 配置啟動
    docker exec -it r6 bashcd /usr/redis/src./redis-server /etc/redis/redis.conf

    redis-trib.rb

    redis內自帶集群工具redis-trib.rb,操作redis-trib需要很多指令很麻煩。建議使用我提供的鏡像,里面什么都裝好了老鐵就根據我的命令操作就可以了 。

    • 創建集群命令
    docker exec -it r1 bashcd /usr/redismkdir clustercd srccp redis-trib.rb ../clustercd ../cluster./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379
    • 查看集群信息
    docker exec -it r1 bash/usr/redis/src/redis-cli -ccluster nodes

    !/upload-images.jianshu.io/upload_images/11223715-0123418e8224c25c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    • 安裝集群的時候報的錯誤

    can't connect to node 172.19.* redis.conf文件

  • bind 127.0.0.1 注釋掉
  • requirepass idig8.com 注釋掉
  • redis集群密碼設置

    • 密碼設置(推薦)

    方式一:修改所有Redis集群中的redis.conf文件加入:

    masterauth idig8.comrequirepass idig8.com

    說明:這種方式需要重新啟動各節點

    方式二:進入各個實例進行設置:

    ./redis-cli -c -p 6379 config set masterauth idig8.comconfig set requirepass idig8.com config rewrite

    之后分別使用./redis-cli -c -p 6379,./redis-cli -c -p 6379…..命令給各節點設置上密碼。

    注意:各個節點密碼都必須一致,否則Redirected就會失敗, 推薦這種方式,這種方式會把密碼寫入到redis.conf里面去,且不用重啟。

    用方式二修改密碼,./redis-trib.rb check 172.19.0.2:6379執行時可能會報[ERR] Sorry, can't connect to node 172.19.0.2:6379,因為6379的redis.conf沒找到密碼配置。

    • 設置密碼之后如果需要使用redis-trib.rb的各種命令

    如:./redis-trib.rb check 127.0.0.1:6379,則會報錯ERR] Sorry, can’t connect to node 127.0.0.1:6379

    解決辦法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改passord

    class Client DEFAULTS = { :url => lambda { ENV["REDIS_URL"] }, :scheme => "redis

    總結

    以上是生活随笔為你收集整理的mac os 开启redis_高并发大流量,总会想到它!来一起通过docker搭建redis集群的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。