[转载]redis和 redis的php扩展
生活随笔
收集整理的這篇文章主要介紹了
[转载]redis和 redis的php扩展
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文地址:redis和?redis的php擴(kuò)展作者:Web開發(fā)
Redis介紹
????數(shù)據(jù)庫主要類型有對象數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫,鍵值數(shù)據(jù)庫等等,對象數(shù)據(jù)庫太超前了,現(xiàn)階段不提也罷;關(guān)系數(shù)據(jù)庫就是平常說的MySQL,PostgreSQL這些熟的不能再熟的東西,至于鍵值數(shù)據(jù)庫則是本文要著重說的,其代表主要有MemcacheDB,Tokyo Cabinet等等。
Redis本質(zhì)上也是一種鍵值數(shù)據(jù)庫的,但它在保持鍵值數(shù)據(jù)庫簡單快捷特點(diǎn)的同時,又吸收了部分關(guān)系數(shù)據(jù)庫的優(yōu)點(diǎn)。從而使它的位置處于關(guān)系數(shù)據(jù)庫和鍵值數(shù) 據(jù)庫之間。Redis不僅能保存Strings類型的數(shù)據(jù),還能保存Lists類型(有序)和Sets類型(無序)的數(shù)據(jù),而且還能完成排序(SORT) 等高級功能,在實(shí)現(xiàn)INCR,SETNX等功能的時候,保證了其操作的原子性,除此以外,還支持主從復(fù)制等功能。
詳細(xì)描述參見官方手冊,同時,官方提供了一個名為Retwis的項目的源代碼,可以對照著官方介紹學(xué)習(xí),注意其中關(guān)于Data Layout的描述,其他沒什么。
項目實(shí)踐中,多以關(guān)系數(shù)據(jù)庫為主,不過合理的使用Redis這樣的鍵值數(shù)據(jù)庫,往往能揚(yáng)長避短,比如說實(shí)現(xiàn)一個類似消息隊列的功能,對MySQL來說,除非使用Q4M,否則很難滿足高并發(fā)請求,不過對Redis來說,通過內(nèi)建的Lists支持,消息隊列就是小菜一碟。Redis本質(zhì)上一個Key/Value數(shù)據(jù)庫,與Memcached類似的 NoSQL型數(shù)據(jù)庫,但是他的數(shù)據(jù)可以持久化的保存在磁盤上,解決了服務(wù)重啟后數(shù)據(jù)不丟失的問題,他的值可以是string(字符串)、list(列 表)、sets(集合)或者是ordered??sets(被排序的集合),所有的數(shù)據(jù)類型都具有push/pop、add/remove、執(zhí)行服務(wù)端的 并集、交集、兩個sets集中的差別等等操作,這些操作都是具有原子性的,Redis還支持各種不同的排序能力
????Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的數(shù)據(jù)類型、更少的利用內(nèi)存(AOF和VM)
????Redis支持絕大部分主流的開發(fā)語言,如:C、Java、C#、PHP、Perl、Python、Lua、Erlang、Ruby等等
????官網(wǎng):http://code.google.com/p/redis/
Redis性能
????根據(jù)Redis官方的測試結(jié)果:在50個并發(fā)的情況下請求10w次,寫的速度是110000次/s,讀的速度是81000次/s
地址:http://code.google.com/p/redis/wiki/Benchmarks
安裝過程
#?yum -y install redis
3. 啟動:
#service redis start
測試:
存值:
./redis-cli set hx value
取值:
./redis-cli get hx
??
附:redis.conf配置文件: 引用 #是否作為守護(hù)進(jìn)程運(yùn)行
daemonize yes
#配置pid的存放路徑及文件名,默認(rèn)為當(dāng)前路徑下
pidfile redis.pid
#Redis默認(rèn)監(jiān)聽端口
port 6379
#客戶端閑置多少秒后,斷開連接
timeout 300
#日志顯示級別
loglevel verbose
#指定日志輸出的文件名,也可指定到標(biāo)準(zhǔn)輸出端口
logfile stdout
#設(shè)置數(shù)據(jù)庫的數(shù)量,默認(rèn)連接的數(shù)據(jù)庫是0,可以通過select N來連接不同的數(shù)據(jù)庫
databases 16
#保存數(shù)據(jù)到disk的策略
#當(dāng)有一條Keys數(shù)據(jù)被改變是,900秒刷新到disk一次
save 900 1
#當(dāng)有10條Keys數(shù)據(jù)被改變時,300秒刷新到disk一次
save 300 10
#當(dāng)有1w條keys數(shù)據(jù)被改變時,60秒刷新到disk一次
save 60 10000
#當(dāng)dump??.rdb數(shù)據(jù)庫的時候是否壓縮數(shù)據(jù)對象
rdbcompression yes
#dump數(shù)據(jù)庫的數(shù)據(jù)保存的文件名
dbfilename dump.rdb
#Redis的工作目錄
dir /var/lib/redis/
###########??Replication #####################
#Redis的復(fù)制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客戶端連接數(shù)
# maxclients 128
#最大內(nèi)存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否開啟日志功能
appendonly no
# 刷新日志到disk的規(guī)則
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否開啟VM功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes
安裝php客戶端
2.安裝redis客戶端
#?yum -y install php-pecl-redis
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('key', 'value');
echo $redis->get('key')."n";
$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
$redis->set('key1', 'val1');
$redis->set('key2', 'val2');
$redis->set('key3', 'val3');
$redis->set('key4', 'val4');
$redis->delete('key1', 'key2');
echo $redis->get('key3')."n" ;
$redis->delete(array('key3', 'key4'));
?>
更多示例請參考:
https://github.com/owlient/phpredis
????數(shù)據(jù)庫主要類型有對象數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫,鍵值數(shù)據(jù)庫等等,對象數(shù)據(jù)庫太超前了,現(xiàn)階段不提也罷;關(guān)系數(shù)據(jù)庫就是平常說的MySQL,PostgreSQL這些熟的不能再熟的東西,至于鍵值數(shù)據(jù)庫則是本文要著重說的,其代表主要有MemcacheDB,Tokyo Cabinet等等。
Redis本質(zhì)上也是一種鍵值數(shù)據(jù)庫的,但它在保持鍵值數(shù)據(jù)庫簡單快捷特點(diǎn)的同時,又吸收了部分關(guān)系數(shù)據(jù)庫的優(yōu)點(diǎn)。從而使它的位置處于關(guān)系數(shù)據(jù)庫和鍵值數(shù) 據(jù)庫之間。Redis不僅能保存Strings類型的數(shù)據(jù),還能保存Lists類型(有序)和Sets類型(無序)的數(shù)據(jù),而且還能完成排序(SORT) 等高級功能,在實(shí)現(xiàn)INCR,SETNX等功能的時候,保證了其操作的原子性,除此以外,還支持主從復(fù)制等功能。
詳細(xì)描述參見官方手冊,同時,官方提供了一個名為Retwis的項目的源代碼,可以對照著官方介紹學(xué)習(xí),注意其中關(guān)于Data Layout的描述,其他沒什么。
項目實(shí)踐中,多以關(guān)系數(shù)據(jù)庫為主,不過合理的使用Redis這樣的鍵值數(shù)據(jù)庫,往往能揚(yáng)長避短,比如說實(shí)現(xiàn)一個類似消息隊列的功能,對MySQL來說,除非使用Q4M,否則很難滿足高并發(fā)請求,不過對Redis來說,通過內(nèi)建的Lists支持,消息隊列就是小菜一碟。Redis本質(zhì)上一個Key/Value數(shù)據(jù)庫,與Memcached類似的 NoSQL型數(shù)據(jù)庫,但是他的數(shù)據(jù)可以持久化的保存在磁盤上,解決了服務(wù)重啟后數(shù)據(jù)不丟失的問題,他的值可以是string(字符串)、list(列 表)、sets(集合)或者是ordered??sets(被排序的集合),所有的數(shù)據(jù)類型都具有push/pop、add/remove、執(zhí)行服務(wù)端的 并集、交集、兩個sets集中的差別等等操作,這些操作都是具有原子性的,Redis還支持各種不同的排序能力
????Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的數(shù)據(jù)類型、更少的利用內(nèi)存(AOF和VM)
????Redis支持絕大部分主流的開發(fā)語言,如:C、Java、C#、PHP、Perl、Python、Lua、Erlang、Ruby等等
????官網(wǎng):http://code.google.com/p/redis/
Redis性能
????根據(jù)Redis官方的測試結(jié)果:在50個并發(fā)的情況下請求10w次,寫的速度是110000次/s,讀的速度是81000次/s
地址:http://code.google.com/p/redis/wiki/Benchmarks
安裝過程
1.沒有安裝過69hn源需要執(zhí)行
??安裝#rpm -Uvh http://os.69hn.com/custom.rpm?
#?yum -y install redis
3. 啟動:
#service redis start
測試:
存值:
./redis-cli set hx value
取值:
./redis-cli get hx
??
附:redis.conf配置文件: 引用 #是否作為守護(hù)進(jìn)程運(yùn)行
daemonize yes
#配置pid的存放路徑及文件名,默認(rèn)為當(dāng)前路徑下
pidfile redis.pid
#Redis默認(rèn)監(jiān)聽端口
port 6379
#客戶端閑置多少秒后,斷開連接
timeout 300
#日志顯示級別
loglevel verbose
#指定日志輸出的文件名,也可指定到標(biāo)準(zhǔn)輸出端口
logfile stdout
#設(shè)置數(shù)據(jù)庫的數(shù)量,默認(rèn)連接的數(shù)據(jù)庫是0,可以通過select N來連接不同的數(shù)據(jù)庫
databases 16
#保存數(shù)據(jù)到disk的策略
#當(dāng)有一條Keys數(shù)據(jù)被改變是,900秒刷新到disk一次
save 900 1
#當(dāng)有10條Keys數(shù)據(jù)被改變時,300秒刷新到disk一次
save 300 10
#當(dāng)有1w條keys數(shù)據(jù)被改變時,60秒刷新到disk一次
save 60 10000
#當(dāng)dump??.rdb數(shù)據(jù)庫的時候是否壓縮數(shù)據(jù)對象
rdbcompression yes
#dump數(shù)據(jù)庫的數(shù)據(jù)保存的文件名
dbfilename dump.rdb
#Redis的工作目錄
dir /var/lib/redis/
###########??Replication #####################
#Redis的復(fù)制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客戶端連接數(shù)
# maxclients 128
#最大內(nèi)存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否開啟日志功能
appendonly no
# 刷新日志到disk的規(guī)則
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否開啟VM功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes
安裝php客戶端
2.安裝redis客戶端
#?yum -y install php-pecl-redis
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('key', 'value');
echo $redis->get('key')."n";
$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
$redis->set('key1', 'val1');
$redis->set('key2', 'val2');
$redis->set('key3', 'val3');
$redis->set('key4', 'val4');
$redis->delete('key1', 'key2');
echo $redis->get('key3')."n" ;
$redis->delete(array('key3', 'key4'));
?>
更多示例請參考:
https://github.com/owlient/phpredis
總結(jié)
以上是生活随笔為你收集整理的[转载]redis和 redis的php扩展的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql : 对于表数据处理增删改的内
- 下一篇: 【AI选股】如何通过python调用we