Redis是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器。這使得Redis可執(zhí)行單層樹(shù)復(fù)制。存盤可以有意無(wú)意的對(duì)數(shù)據(jù)進(jìn)行寫操作。由于完全實(shí)現(xiàn)了發(fā)布/訂閱機(jī)制,使得從數(shù)據(jù)庫(kù)在任何地方同步樹(shù)時(shí),可訂閱一個(gè)頻道并接收主服務(wù)器完整的消息發(fā)布記錄。同步對(duì)讀取操作的可擴(kuò)展性和數(shù)據(jù)冗余很有幫助。
PHP Session 變量
當(dāng)您運(yùn)行一個(gè)應(yīng)用程序時(shí),您會(huì)打開(kāi)它,做些更改,然后關(guān)閉它。這很像一次會(huì)話。計(jì)算機(jī)清楚你是誰(shuí)。它知道你何時(shí)啟動(dòng)應(yīng)用程序,并在何時(shí)終止。但是在因特網(wǎng)上,存在一個(gè)問(wèn)題:服務(wù)器不知道你是誰(shuí)以及你做什么,這是由于 HTTP 地址不能維持狀態(tài)。
通過(guò)在服務(wù)器上存儲(chǔ)用戶信息以便隨后使用,PHP session 解決了這個(gè)問(wèn)題(比如用戶名稱、購(gòu)買商品等)。不過(guò),會(huì)話信息是臨時(shí)的,在用戶離開(kāi)網(wǎng)站后將被刪除。如果您需要永久儲(chǔ)存信息,可以把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。
Session 的工作機(jī)制是:為每個(gè)訪問(wèn)者創(chuàng)建一個(gè)唯一的 id (UID),并基于這個(gè) UID 來(lái)存儲(chǔ)變量。UID 存儲(chǔ)在 cookie 中,亦或通過(guò) URL 進(jìn)行傳導(dǎo)。
PHP 的會(huì)話默認(rèn)是以文件的形式存在的,可以配置到 NoSQL 中,即提高了訪問(wèn)速度,又能很好地實(shí)現(xiàn)會(huì)話共享
php session使用redis如何設(shè)置密碼
配置方式如下:
方法一:修改 php.ini 的設(shè)置
12session.save_handler = redis
session.save_path = “tcp://127.0.0.1:6379”
修改完之后,重啟一下 php-fpm。
方式二:通過(guò) ini_set() 函數(shù)設(shè)置
12ini_set(“session.save_handler”, “redis”);
ini_set(“session.save_path”, “tcp://127.0.0.1:6379”);
如果配置文件 /etc/redis.conf 里設(shè)置了連接密碼 requirepass,保存 session 的時(shí)候會(huì)報(bào)錯(cuò),save_path 這樣寫 tcp://127.0.0.1:6379?auth=authpwd 即可。
測(cè)試代碼:
123456789101112131415《?php
// 如果未修改php.ini下面兩行注釋去掉
// ini_set(‘session.save_handler’, ‘redis’);
// ini_set(‘session.save_path’, ‘tcp://127.0.0.1:6379’);
session_start();
$_SESSION[‘sessionid’] = ‘this is session content!’;
echo $_SESSION[‘sessionid’];
echo ‘《br/》’;
$redis = new redis();
$redis-》connect(‘127.0.0.1’, 6379);
// redis 用 session_id 作為 key 并且是以 string 的形式存儲(chǔ)
echo $redis-》get(‘PHPREDIS_SESSION:’ 。 session_id());
終結(jié) Session
如果您希望刪除某些 session 數(shù)據(jù),可以使用 unset() 或 session_destroy() 函數(shù)。
unset() 函數(shù)用于釋放指定的 session 變量:
《?php
unset($_SESSION[‘views’]);
???》
您也可以通過(guò) session_destroy() 函數(shù)徹底終結(jié) session:
《?php
session_destroy();
???》
評(píng)論