成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Redis開(kāi)發(fā)學(xué)習(xí)

ccj659 / 2180人閱讀

摘要:語(yǔ)法命令基本語(yǔ)法實(shí)例數(shù)據(jù)類(lèi)型支持五種數(shù)據(jù)類(lèi)型字符串,哈希,列表,集合及有序集合。資源修改文件增加如下內(nèi)容如果在集成環(huán)境的目錄下安裝完成后重啟或。

Redis 簡(jiǎn)介

Redis 是完全開(kāi)源免費(fèi)的,遵守BSD協(xié)議,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。
Redis 與其他 key - value 緩存產(chǎn)品有以下三個(gè)特點(diǎn):

Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤(pán)中,重啟的時(shí)候可以再次加載進(jìn)行使用。

Redis不僅僅支持簡(jiǎn)單的key-value類(lèi)型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。

Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。

Redis 優(yōu)勢(shì)

性能極高 – Redis能讀的速度是110000次/s,寫(xiě)的速度是81000次/s 。

豐富的數(shù)據(jù)類(lèi)型 – Redis支持二進(jìn)制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數(shù)據(jù)類(lèi)型操作。

原子 – Redis的所有操作都是原子性的,同時(shí)Redis還支持對(duì)幾個(gè)操作全并后的原子性執(zhí)行。

豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過(guò)期等等特性。

Redis與其他key-value存儲(chǔ)有什么不同?

Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對(duì)他們的原子性操作,這是一個(gè)不同于其他數(shù)據(jù)庫(kù)的進(jìn)化路徑。Redis的數(shù)據(jù)類(lèi)型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時(shí)對(duì)程序員透明,無(wú)需進(jìn)行額外的抽象。

Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤(pán),所以在對(duì)不同數(shù)據(jù)集進(jìn)行高速讀寫(xiě)時(shí)需要權(quán)衡內(nèi)存,應(yīng)為數(shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫(kù)方面的另一個(gè)優(yōu)點(diǎn)是, 相比在磁盤(pán)上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來(lái)非常簡(jiǎn)單,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。 同時(shí),在磁盤(pán)格式方面他們是緊湊的以追加的方式產(chǎn)生的,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)訪問(wèn)。

安裝Redis

1.在MacOSX下,用curl命令先下載redis:

$ curl -O http://download.redis.io/releases/redis-2.8.17.tar.gz

如果是Linux系統(tǒng),可用wget命令下載:

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz

2.解壓并安裝

$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

make完后 redis-2.8.17目錄下會(huì)出現(xiàn)編譯后的redis服務(wù)程序redis-server,還有用于測(cè)試客戶端程序redis-cli,兩個(gè)程序位于安裝目錄 src 目錄下:

3.啟動(dòng)redis服務(wù)

$ cd src
$ ./redis-server

如果看到下面的圖,表示redis安裝成功了^_^

注意上面的方式啟動(dòng)redis 使用的是默認(rèn)配置。也可以通過(guò)啟動(dòng)參數(shù)告訴redis使用指定配置文件使用下面命令啟動(dòng)。

$ cd src
$ ./redis-server redis.conf

redis.conf是一個(gè)默認(rèn)的配置文件。我們可以根據(jù)需要使用自己的配置文件。

啟動(dòng)redis服務(wù)進(jìn)程后,就可以使用測(cè)試客戶端程序redis-cli和redis服務(wù)交互了, 比如:

$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

這里可以開(kāi)一個(gè)新的命令行窗口,我的redis保存路徑:

Mac:cd /Users/mac/software/redis/redis-2.8.17
Mac:redis-2.8.17 mac$ cd src
Mac:src mac$ ./redis-cli

說(shuō)明:
127.0.0.1 是本機(jī) IP ,6379 是 redis 服務(wù)端口?,F(xiàn)在我們輸入 PING 命令。

127.0.0.1:6379> ping
PONG

測(cè)試:

Redis 配置

Redis 的配置文件位于 Redis 安裝目錄下,文件名為 redis.conf
你可以通過(guò) CONFIG 命令查看或設(shè)置配置項(xiàng)。

Redis CONFIG 命令格式如下:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

實(shí)例

redis 127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"

使用 * 號(hào)獲取所有配置項(xiàng):

編輯配置

你可以通過(guò)修改 redis.conf 文件或使用 CONFIG set 命令來(lái)修改配置。
語(yǔ)法
CONFIG SET 命令基本語(yǔ)法:

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

實(shí)例

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"
Redis 數(shù)據(jù)類(lèi)型

Redis支持五種數(shù)據(jù)類(lèi)型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string是redis最基本的類(lèi)型,你可以理解成與Memcached一模一樣的類(lèi)型,一個(gè)key對(duì)應(yīng)一個(gè)value。
string類(lèi)型是二進(jìn)制安全的。意思是redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對(duì)象 。
string類(lèi)型是Redis最基本的數(shù)據(jù)類(lèi)型,一個(gè)鍵最大能存儲(chǔ)512MB。
示例:

redis 127.0.0.1:6379> SET name "JackChan"
OK
redis 127.0.0.1:6379> GET name
"JackChan"

在以上實(shí)例中我們使用了 Redis 的 SETGET 命令。鍵為 name,對(duì)應(yīng)的值為JackChan。
注意:一個(gè)鍵最大能存儲(chǔ)512MB。

Hash(哈希)

Redis hash 是一個(gè)鍵值對(duì)集合
Redis hash是一個(gè)string類(lèi)型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。
示例:

127.0.0.1:6379> HMSET user_id:1 name jackcheng age 25 address HongKong
OK
127.0.0.1:6379> HGETALL user_id:1
1) "name"
2) "jackcheng"
3) "age"
4) "25"
5) "address"
6) "HongKong"
127.0.0.1:6379>

以上實(shí)例中 hash 數(shù)據(jù)類(lèi)型存儲(chǔ)了包含用戶腳本信息的用戶對(duì)象。 實(shí)例中我們使用了 Redis HMSET, HGETALL 命令,user_id:1為鍵值。
每個(gè) hash 可以存儲(chǔ) 232 - 1 鍵值對(duì)(40多億)。

List(列表)

Redis 列表是簡(jiǎn)單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素導(dǎo)列表的頭部(左邊)或者尾部(右邊)。
示例:

127.0.0.1:6379> lpush language php
(integer) 1
127.0.0.1:6379> lpush language c
(integer) 2
127.0.0.1:6379> lpush language java
(integer) 3
127.0.0.1:6379> lpush language python
(integer) 4
127.0.0.1:6379> lrange language 0 5
1) "python"
2) "java"
3) "c"
4) "php"
127.0.0.1:6379>

l ->list 列表 push 推入隊(duì)列
列表最多可存儲(chǔ) 232 - 1 元素 (4294967295, 每個(gè)列表可存儲(chǔ)40多億)。

Set(集合)

Redis的Set是string類(lèi)型的無(wú)序集合。
集合是通過(guò)哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)。
sadd 命令
添加一個(gè)string元素到,key對(duì)應(yīng)的set集合中,成功返回1,如果元素以及在集合中返回0,key對(duì)應(yīng)的set不存在返回錯(cuò)誤。

sadd key member

示例:

127.0.0.1:6379> sadd pragmmer c++
(integer) 1
127.0.0.1:6379> sadd pragmmer oc
(integer) 1
127.0.0.1:6379> sadd pragmmer oc
(integer) 0
127.0.0.1:6379> smembers pragmmer
1) "c++"
2) "oc"
127.0.0.1:6379>

注意:以上實(shí)例中 oc 添加了兩次,但根據(jù)集合內(nèi)元素的唯一性,第二次插入的元素將被忽略。
集合中最大的成員數(shù)為 232 - 1 (4294967295, 每個(gè)集合可存儲(chǔ)40多億個(gè)成員)。

zset(sorted set:有序集合)

Redis zset 和 set 一樣也是string類(lèi)型元素的集合,且不允許重復(fù)的成員。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的分?jǐn)?shù)。redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序。
zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。

zadd 命令
添加元素到集合,元素在集合中存在則更新對(duì)應(yīng)score

zadd key score member 

示例:

127.0.0.1:6379> zadd mytest 9 laravel
(integer) 1
127.0.0.1:6379> zadd mytest 1 php
(integer) 1
127.0.0.1:6379> zadd mytest 3 ios
(integer) 1
127.0.0.1:6379> zadd mytest 2 php
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE mytest 0 10
1) "php"
2) "ios"
3) "laravel"
127.0.0.1:6379>

Redis 性能測(cè)試

Redis 性能測(cè)試是通過(guò)同時(shí)執(zhí)行多個(gè)命令實(shí)現(xiàn)的。

語(yǔ)法
redis 性能測(cè)試的基本命令如下:

redis-benchmark [option] [option value]

實(shí)例:
redis-benchmark在安裝目錄src里邊,下面我們同時(shí)執(zhí)行 10000 個(gè)請(qǐng)求來(lái)檢測(cè)性能:

MacdeMacBook-Pro-3:src mac$ ./redis-benchmark -n 10000
====== PING_INLINE ======
  10000 requests completed in 0.25 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

48.44% <= 1 milliseconds
98.32% <= 2 milliseconds
99.51% <= 6 milliseconds
100.00% <= 6 milliseconds
39215.69 requests per second
...
...
====== MSET (10 keys) ======
  10000 requests completed in 0.38 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

redis 性能測(cè)試工具可選參數(shù)如下所示:

帶有參數(shù)的示例:

MacdeMacBook-Pro-3:src mac$ ./redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q
SET: 29904.30 requests per second
LPUSH: 25094.10 requests per second

MacdeMacBook-Pro-3:src mac$


以上實(shí)例中主機(jī)為 127.0.0.1,端口號(hào)為 6379,執(zhí)行的命令為 set,lpush,請(qǐng)求數(shù)為 100000,通過(guò) -q 參數(shù)讓結(jié)果只顯示每秒執(zhí)行的請(qǐng)求數(shù)。

PHP 使用 Redis 安裝

開(kāi)始在 PHP 中使用 Redis 前, 我們需要確保已經(jīng)安裝了 redis 服務(wù)及 PHP redis 驅(qū)動(dòng),且你的機(jī)器上能正常使用 PHP。接下來(lái)讓我們安裝 PHP redis 驅(qū)動(dòng):下載地址為:https://github.com/phpredis/phpredis/releases。

PHP安裝redis擴(kuò)展
以下操作需要在下載的 phpredis 目錄中完成:

$ curl -O https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz
$ cd phpredis-2.2.7                      # 進(jìn)入 phpredis 目錄
$ /usr/local/php/bin/phpize              # php安裝后的路徑
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install

phpredis資源

https://github.com/michael-grunder/phpredis.git

注意:這里如果是使用的XAMPP安裝的服務(wù)器,則通過(guò)查看phpinfo的PHP版本是否一致,如果不一致,則說(shuō)明當(dāng)前的路徑為Mac系統(tǒng)自帶的PHP版本。

查看PHP版本:

php -v


打印出來(lái)的是Mac系統(tǒng)自帶的PHP路徑,而我們需要XAMPP安裝的PHP,則需要在/Applications/XAMPP/xamppfiles/bin路徑下找到PHPize安裝的路徑。

XAMPP的PHP版本為5.6.14:

查看當(dāng)前所在目錄命令 pwd
Linux中用 pwd 命令來(lái)查看”當(dāng)前工作目錄“的完整路徑。pwd命令是Print Working Directory的縮寫(xiě)。 簡(jiǎn)單得說(shuō),每當(dāng)你在終端進(jìn)行操作時(shí),你都會(huì)有一個(gè)當(dāng)前工作目錄。

MacdeMacBook-Pro-3:bin mac$ pwd
/Applications/XAMPP/xamppfiles/bin

XAMPP的PHP安裝的phpsize就在該路徑下:

/Applications/XAMPP/xamppfiles/bin/phpize
acdeMacBook-Pro-3:phpredis mac$ ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config

MacdeMacBook-Pro-3:phpredis-3.0.0 mac$ sudo make && make install

出現(xiàn)了這樣的的錯(cuò)誤

如果出現(xiàn)這樣的錯(cuò)誤,則說(shuō)明phpredis擴(kuò)展包有問(wèn)題,換一個(gè)擴(kuò)展包,再重試下之前的步驟,即可安裝成功。

phpredis資源

https://github.com/michael-grunder/phpredis.git

Installing shared extensions:     /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/
MacdeMacBook-Pro-3:phpredis mac$
修改php.ini文件
vi /usr/local/php/lib/php.ini

增加如下內(nèi)容:

extension=redis.so

如果在XAMPP集成環(huán)境的目錄下:

extension_dir = "/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/"
extension=redis.so

安裝完成后重啟php-fpm 或 apache。查看phpinfo信息,就能看到redis擴(kuò)展。

開(kāi)啟redis服務(wù)
MacdeMacBook-Pro-3:phpredis mac$ cd /Users/mac/software/redis/redis-2.8.17/src
MacdeMacBook-Pro-3:src mac$ ./redis-server
php連接到 redis 服務(wù)
connect("127.0.0.1", 6379);
   echo "Connection to server sucessfully";
         //查看服務(wù)是否運(yùn)行
   echo "Server is running: " . $redis->ping();
?>

執(zhí)行腳本,輸出結(jié)果為:

Connection to server sucessfully
Server is running: PONG

Redis PHP String(字符串) 實(shí)例

connect("127.0.0.1", 6379);
   echo "Connection to server sucessfully";
   //設(shè)置 redis 字符串?dāng)?shù)據(jù)
   $redis->set("tutorial-name", "Redis tutorial");
   // 獲取存儲(chǔ)的數(shù)據(jù)并輸出
   echo "Stored string in redis:: " . $redis->get("tutorial-name");
?>

執(zhí)行腳本,輸出結(jié)果為:

Connection to server sucessfully
Stored string in redis:: Redis tutorial

參考博文:
Redis快速學(xué)習(xí)
【高并發(fā)簡(jiǎn)單解決方案】redis隊(duì)列緩存 + mysql 批量入庫(kù) + php離線整合

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21728.html

相關(guān)文章

  • Laravel學(xué)習(xí)筆記之Model Observer模型觀察者

    摘要:說(shuō)明本文主要學(xué)習(xí)下的模型觀察者,把一點(diǎn)點(diǎn)經(jīng)驗(yàn)分享出來(lái)希望對(duì)別人能有幫助。模型觀察者這個(gè)功能能做很多事情,比如模型更新時(shí)發(fā)個(gè)通知。總結(jié)本篇文章主要學(xué)了下的模型觀察者,發(fā)現(xiàn)這個(gè)功能也能使代碼結(jié)構(gòu)更清晰,覺(jué)得挺好的。 說(shuō)明:本文主要學(xué)習(xí)下Laravel的Model Observer模型觀察者,把一點(diǎn)點(diǎn)經(jīng)驗(yàn)分享出來(lái)希望對(duì)別人能有幫助。同時(shí),作者會(huì)將開(kāi)發(fā)過(guò)程中的一些截圖和代碼黏上去,提高閱讀效率...

    Crazy_Coder 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記之Redis保存頁(yè)面瀏覽量

    摘要:說(shuō)明本文主要講述使用作為緩存加快頁(yè)面訪問(wèn)速度。何不用來(lái)做緩存,等到該達(dá)到一定瀏覽頁(yè)面后再刷新下,效率也很高??勺骶彺嫦到y(tǒng)隊(duì)列系統(tǒng)。 說(shuō)明:本文主要講述使用Redis作為緩存加快頁(yè)面訪問(wèn)速度。同時(shí),作者會(huì)將開(kāi)發(fā)過(guò)程中的一些截圖和代碼黏上去,提高閱讀效率。 備注:作者最近在學(xué)習(xí)github上別人的源碼時(shí),發(fā)現(xiàn)好多在計(jì)算一篇博客頁(yè)面訪問(wèn)量view_count時(shí)都是這么做的:利用Laravel...

    z2xy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<