[转载]redis和 redis的php扩展
生活随笔
收集整理的這篇文章主要介紹了
[转载]redis和 redis的php扩展
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文地址:redis和?redis的php擴展作者:Web開發
Redis介紹
????數據庫主要類型有對象數據庫,關系數據庫,鍵值數據庫等等,對象數據庫太超前了,現階段不提也罷;關系數據庫就是平常說的MySQL,PostgreSQL這些熟的不能再熟的東西,至于鍵值數據庫則是本文要著重說的,其代表主要有MemcacheDB,Tokyo Cabinet等等。
Redis本質上也是一種鍵值數據庫的,但它在保持鍵值數據庫簡單快捷特點的同時,又吸收了部分關系數據庫的優點。從而使它的位置處于關系數據庫和鍵值數 據庫之間。Redis不僅能保存Strings類型的數據,還能保存Lists類型(有序)和Sets類型(無序)的數據,而且還能完成排序(SORT) 等高級功能,在實現INCR,SETNX等功能的時候,保證了其操作的原子性,除此以外,還支持主從復制等功能。
詳細描述參見官方手冊,同時,官方提供了一個名為Retwis的項目的源代碼,可以對照著官方介紹學習,注意其中關于Data Layout的描述,其他沒什么。
項目實踐中,多以關系數據庫為主,不過合理的使用Redis這樣的鍵值數據庫,往往能揚長避短,比如說實現一個類似消息隊列的功能,對MySQL來說,除非使用Q4M,否則很難滿足高并發請求,不過對Redis來說,通過內建的Lists支持,消息隊列就是小菜一碟。Redis本質上一個Key/Value數據庫,與Memcached類似的 NoSQL型數據庫,但是他的數據可以持久化的保存在磁盤上,解決了服務重啟后數據不丟失的問題,他的值可以是string(字符串)、list(列 表)、sets(集合)或者是ordered??sets(被排序的集合),所有的數據類型都具有push/pop、add/remove、執行服務端的 并集、交集、兩個sets集中的差別等等操作,這些操作都是具有原子性的,Redis還支持各種不同的排序能力
????Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的數據類型、更少的利用內存(AOF和VM)
????Redis支持絕大部分主流的開發語言,如:C、Java、C#、PHP、Perl、Python、Lua、Erlang、Ruby等等
????官網:http://code.google.com/p/redis/
Redis性能
????根據Redis官方的測試結果:在50個并發的情況下請求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配置文件: 引用 #是否作為守護進程運行
daemonize yes
#配置pid的存放路徑及文件名,默認為當前路徑下
pidfile redis.pid
#Redis默認監聽端口
port 6379
#客戶端閑置多少秒后,斷開連接
timeout 300
#日志顯示級別
loglevel verbose
#指定日志輸出的文件名,也可指定到標準輸出端口
logfile stdout
#設置數據庫的數量,默認連接的數據庫是0,可以通過select N來連接不同的數據庫
databases 16
#保存數據到disk的策略
#當有一條Keys數據被改變是,900秒刷新到disk一次
save 900 1
#當有10條Keys數據被改變時,300秒刷新到disk一次
save 300 10
#當有1w條keys數據被改變時,60秒刷新到disk一次
save 60 10000
#當dump??.rdb數據庫的時候是否壓縮數據對象
rdbcompression yes
#dump數據庫的數據保存的文件名
dbfilename dump.rdb
#Redis的工作目錄
dir /var/lib/redis/
###########??Replication #####################
#Redis的復制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客戶端連接數
# maxclients 128
#最大內存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否開啟日志功能
appendonly no
# 刷新日志到disk的規則
# 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
????數據庫主要類型有對象數據庫,關系數據庫,鍵值數據庫等等,對象數據庫太超前了,現階段不提也罷;關系數據庫就是平常說的MySQL,PostgreSQL這些熟的不能再熟的東西,至于鍵值數據庫則是本文要著重說的,其代表主要有MemcacheDB,Tokyo Cabinet等等。
Redis本質上也是一種鍵值數據庫的,但它在保持鍵值數據庫簡單快捷特點的同時,又吸收了部分關系數據庫的優點。從而使它的位置處于關系數據庫和鍵值數 據庫之間。Redis不僅能保存Strings類型的數據,還能保存Lists類型(有序)和Sets類型(無序)的數據,而且還能完成排序(SORT) 等高級功能,在實現INCR,SETNX等功能的時候,保證了其操作的原子性,除此以外,還支持主從復制等功能。
詳細描述參見官方手冊,同時,官方提供了一個名為Retwis的項目的源代碼,可以對照著官方介紹學習,注意其中關于Data Layout的描述,其他沒什么。
項目實踐中,多以關系數據庫為主,不過合理的使用Redis這樣的鍵值數據庫,往往能揚長避短,比如說實現一個類似消息隊列的功能,對MySQL來說,除非使用Q4M,否則很難滿足高并發請求,不過對Redis來說,通過內建的Lists支持,消息隊列就是小菜一碟。Redis本質上一個Key/Value數據庫,與Memcached類似的 NoSQL型數據庫,但是他的數據可以持久化的保存在磁盤上,解決了服務重啟后數據不丟失的問題,他的值可以是string(字符串)、list(列 表)、sets(集合)或者是ordered??sets(被排序的集合),所有的數據類型都具有push/pop、add/remove、執行服務端的 并集、交集、兩個sets集中的差別等等操作,這些操作都是具有原子性的,Redis還支持各種不同的排序能力
????Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的數據類型、更少的利用內存(AOF和VM)
????Redis支持絕大部分主流的開發語言,如:C、Java、C#、PHP、Perl、Python、Lua、Erlang、Ruby等等
????官網:http://code.google.com/p/redis/
Redis性能
????根據Redis官方的測試結果:在50個并發的情況下請求10w次,寫的速度是110000次/s,讀的速度是81000次/s
地址:http://code.google.com/p/redis/wiki/Benchmarks
安裝過程
1.沒有安裝過69hn源需要執行
??安裝#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配置文件: 引用 #是否作為守護進程運行
daemonize yes
#配置pid的存放路徑及文件名,默認為當前路徑下
pidfile redis.pid
#Redis默認監聽端口
port 6379
#客戶端閑置多少秒后,斷開連接
timeout 300
#日志顯示級別
loglevel verbose
#指定日志輸出的文件名,也可指定到標準輸出端口
logfile stdout
#設置數據庫的數量,默認連接的數據庫是0,可以通過select N來連接不同的數據庫
databases 16
#保存數據到disk的策略
#當有一條Keys數據被改變是,900秒刷新到disk一次
save 900 1
#當有10條Keys數據被改變時,300秒刷新到disk一次
save 300 10
#當有1w條keys數據被改變時,60秒刷新到disk一次
save 60 10000
#當dump??.rdb數據庫的時候是否壓縮數據對象
rdbcompression yes
#dump數據庫的數據保存的文件名
dbfilename dump.rdb
#Redis的工作目錄
dir /var/lib/redis/
###########??Replication #####################
#Redis的復制配置
# slaveof <masterip> <masterport>
# masterauth <master-password>
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客戶端連接數
# maxclients 128
#最大內存使用率
# maxmemory <bytes>
########## APPEND ONLY MODE #########
#是否開啟日志功能
appendonly no
# 刷新日志到disk的規則
# 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
總結
以上是生活随笔為你收集整理的[转载]redis和 redis的php扩展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql : 对于表数据处理增删改的内
- 下一篇: 在线客服聊天系统 PHP Live Ch