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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

redis实现session共享,哨兵

發布時間:2024/8/26 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis实现session共享,哨兵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Redis介紹

1、redis是key-value的存儲系統,屬于非關系型數據庫

2、特點:支持數據持久化,可以讓數據在內存中保存到磁盤里(memcached:數據存在內存里,如果服務重啟,數據會丟失)

3、支持5種數據類型:string,hash,list,set,zset

4、兩種文件格式(即數據持久化)

(1)RDB(全量數據):多長時間/頻率,把內存中的數據刷到磁盤中,便于下次讀取文件時進行加載

(2)AOF(增量請求):類似mysql的二進制日志,不停地把對數據庫的更改語句記錄到日志中,下次重啟服務,會根據二進制日志把數據重寫一次,加載到內存里,實現數據持久化

5、存儲

(1)內存存儲 (2)磁盤存儲(RDB) ?(3)log文件(AOF)

?

二、Redis安裝

1、下載 redis-2.8.21.tar.gz?

2、解壓: ?tar zxvf redis-2.8.21.tar.gz

3、cd redis-2.8.21

4、編譯:make

5、安裝:?make PREFIX=/usr/local/redis install

6、創建配置文件所在的目錄:mkdir /usr/local/redis/etc

7、網上下載配置文件 redis.conf,放到 6 創建的目錄下

8、創建啟動腳本 /etc/init.d/redis?

9、添加redis用戶:useradd -s /sbin/nologin redis

10、創建var目錄,放置redis 的pid,rdb文件: ?mkdir /usr/local/redis/var

11、修改var目錄和配置文件權限

(1)chmod 777 /usr/local/redis/var

(2)chmod 755 /etc/init.d/redis

12、啟動redis: ?service redis start

13、ps aux | grep redis ? ? ?——》 監聽6379端口

?

三、php應用redis

前提:已經搭建了LAMP網站架構

php不能直接連redis,需要redis模塊的支持(redis是和開發語言結合使用的)

?

1、Redis擴展模塊安裝 (1)下載 phpredis.zip (2)解壓:unzip phpredis.zip (3)cd phpredis-develop/ (4)/usr/local/php/bin/phpize ? ——》生成 configure文件 (5)編譯redis.so的模塊 ./configure --with-php-config=/usr/local/php/bin/php-config (6)make && make install (7)檢查是否有redis.so文件 ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ ——》 redis.so (8)編輯php.ini配置文件 最后1行加上 extension=redis.so (9)php檢查是否加載了redis.so模塊 /usr/local/php/bin/php -m |grep redis ——》redis 2、Redis 實現session共享 (1)apache測試目錄下創建info.php ——》 調用 phpinfo() 函數 (2)apache虛擬主機配置文件(extra目錄下)或者主配置文件httpd.conf 中定義 session存儲的處理方式和存儲路徑 (a)php_value session.save_handler "redis" (b)php_value session.save_path "tcp://127.0.0.1:6379" ps: 還有另外兩種方法 1、php的全局配置文件php.ini添加上面2行 2、如果是lnmp架構 php-fpm.conf對應的pool中加入? php_value[session.save_handler] = redis php_value[session.save_path] = "tcp://127.0.0.1:6379" (3)重啟apachectl /usr/local/apache2/bin/apachectl restart (4)瀏覽器訪問:192.168.131.110/info.php

說明配置已經生效

?

3、Redis 存儲session 測試

(1)進入apache的htdoc下

(2)創建session.php

1 <?php 2 session_start(); 3 if (!isset($_SESSION['TEST'])) { 4 $_SESSION['TEST'] = time(); 5 } 6 $_SESSION['TEST3'] = time(); 7 print $_SESSION['TEST']; 8 print "<br><br>"; 9 print $_SESSION['TEST3']; 10 print "<br><br>"; 11 print session_id(); 12 ?>

(3)測試 ?——》 記得去掉redis配置文件中的密碼設置,否則會返回500授權錯誤

(a)curl localhost/session.php

(b)redis-cli ?——》 在家目錄的.bashrc加入了redis啟動目錄

說明session已經存入到redis里了

?

?

四、redis的一些題外話

?redis一些重點

1、主從

2、持久化

3、哨兵實現主從切換

4、sentinel原理 (2.8.0之后有這個功能 sentinel.conf)

5、數據類型: hash,string 用得多

?

?

著重講下哨兵

1、支持redis協議

2、原理簡單描述

所有服務器都部署哨兵,哨兵去監控主從,要是redis或者哨兵死了,另外所有的機器會重新投票(就是下圖6379后面的數字,比如2),投死那臺掛掉的機器(2臺機器投票確認機器死了),再在另外所有的機器上自成一個體系,重新生成主

?

3、重點

(1)哨兵的配置文件也就是sentinel.conf是時時發生變化的

當主被投票死掉后,從起來于是產生一個新的主ip,新主會變成配置文件master的ip

(2)redis的配置文件也會改變

(3)當已死的主恢復后,就變成了從

(4)哨兵一定要是單數,否則選舉易出現問題,偶數可能會同票

?

4、幾個問題

(1)什么時候用redis?

所有的web第一次請求,先從db上取,取到的結果再返回給客戶端的同時也寫到redis去, 當再次用到這個結果時就從redis取,不需要再從db上取(很慢) (2)什么時候用redis高可用,也就是哨兵? 所有的研發程序需要連主(可寫),從(只讀)是寫不進去東西的 主redis有一個vip或者直連它的物理ip,研發程序直連redis寫東西時, redis主掛了,哨兵就起到作用 redis取不到數據,就從db上取——》程序做的,自動的降級 如果程序沒有做降級,redis主掛了,線上所有涉及到在redis寫的業務都用不了 ——》 所以就要用哨兵

?

轉載于:https://www.cnblogs.com/windysai/p/6226995.html

總結

以上是生活随笔為你收集整理的redis实现session共享,哨兵的全部內容,希望文章能夠幫你解決所遇到的問題。

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