您好,登錄后才能下訂單哦!
#一、redis服務簡介
redis是一個key-value存儲系統。 和Memcached類似,它支持存儲的value類型相對更多(memcached不支持value類型,只支持key),包括string(字符串)、list(鏈表)、set(集合)和zset(有序集 合)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis 支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改 操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。所以redis在斷電仍能保存用戶session緩存,但是memcached斷電后session緩存丟失。
session緩存的作用:session主要用于存儲用戶的登錄信息,用戶登錄請求時,只要查詢到session中有記錄,即判斷為已登錄狀態,無需另外登錄操作,如果用戶信息在session中沒有,則判斷為需要輸入用戶名密碼進行登錄操作,登錄提交的數據,就必須先到數據庫中進行匹配查詢,如果找到用戶信息則數據庫返回結果,并把相應用戶信息寫入到session,作為下次用戶登錄狀態的判斷。
主要存儲session的數據庫:redis、memcached(nosql數據庫)
redis&memcached比較:
redis會把數據寫入磁盤,并同步保持數據一直,所以可以斷電后仍會保存session。但是memcached,只是將用戶登錄信息保存在緩存中,如果斷電,則session信息丟失,需要從新進行數據庫查詢。正是因為數據只保存在緩存,也無需跟磁盤進行主從同步,保持數據一致,所以用戶登錄狀態的過程非常快。
另外redis支持key,value等類型的數據存儲,而memcached只支持key。所以redis可以應用的范圍更多。
redis是一種非關系型數據存儲工具,這區別于傳統的關系型數據庫(像mysql等),類似于memcache,并且其內部集成了對list(鏈表)、set(集合)的操作,可以很方便快速的處理數據(像插入、刪除list 取交集 并集 差集等),這極大的減輕了底層數據庫的壓力,并且給用戶更快的響應速度。
#二、/etc/redis.conf配置文件
daemonize 是否以后臺進程運行,默認為no pidfile 如以后臺進程運行,則需指定一個pid,默認為/var/run/redis.pid bind 綁定主機IP,默認值為127.0.0.1(注釋) port 監聽端口,默認為6379 timeout 超時時間,默認為300(秒) loglevel 日志記錄等級,有4個可選值,debug,verbose(默認值),notice,warning logfile 日志記錄方式,默認值為stdout databases 可用數據庫數,默認值為16,默認數據庫為0 save <seconds> <changes> 指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。 save 900 1 900秒(15分鐘)內至少有1個key被改變 save 300 10 300秒(5分鐘)內至少有300個key被改變 save 60 10000 60秒內至少有10000個key被改變 rdbcompression 存儲至本地數據庫時是否壓縮數據,默認為yes dbfilename 本地數據庫文件名,默認值為dump.rdb dir 本地數據庫存放路徑,默認值為 ./ slaveof <masterip> <masterport> 當本機為從服務時,設置主服務的IP及端口(注釋) masterauth <master-password> 當本機為從服務時,設置主服務的連接密碼(注釋) requirepass 連接密碼(注釋) maxclients 最大客戶端連接數,默認不限制(注釋) maxmemory <bytes> 設置最大內存,達到最大內存設置后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理后,任到達最大內存設置,將無法再進行寫入操作。(注釋) appendonly 是否在每次更新操作后進行日志記錄,如果不開啟,可能會在斷電時導致一段時間內的數據丟失。因為redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在于內存中。默認值為no appendfilename 更新日志文件名,默認值為appendonly.aof(注釋) appendfsync 更新日志條件,共有3個可選值。 no表示等操作系統進行數據緩存同步到磁盤, always表示每次更新操作后手動調用fsync()將數據寫到磁盤, everysec表示每秒同步一次(默認值)。 vm-enabled 是否使用虛擬內存,默認值為no vm-swap-file 虛擬內存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享 vm-max-memory 將所有大于vm-max-memory的數據存入虛擬內存,無論vm-max-memory設置多小,所有索引數據都是內存存儲的(Redis的索引數據 就是keys),也就是說,當vm-max-memory設置為0的時候,其實是所有value都存在于磁盤。默認值為0。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。