Redis介紹
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等等
Redis性能:
根據Redis官方的測試結果:在50個併發的情況下請求10w次,寫的速度是110000次/s,讀的速度是81000次/s
測試環境:
1. 50個併發,請求100000次
2. 讀和寫大小爲256bytes的字符串
3. Linux2.6 Xeon X3320 2.5GHz的服務器上
4. 通過本機的loopback interface接口上執行
地址:http://code.google.com/p/redis/wiki/Benchmarks
Redis的功能:
1、Redis的Sharding:Redis支持客戶端的Sharding功能,通過一致性hash算法實現,當前Redis不支持故障冗餘,在集羣中不能在線增加或刪除Redis
2、Redis的master/slave複製:
1. 一個master支持多個slave
2. Slave可以接受其他slave的連接來替代他連接master
3. 複製在master是非阻塞的,而在slave是阻塞的
4. 複製被利用來提供可擴展性,在slave端只提供查詢功能及數據的冗餘
3、Redis的Virtual Memory功能:vm是Redis2.0新增的一個非常穩定和可靠的功能,
vm的引入是爲了提高Redis的性能,也就是把很少使用的value保存到disk,而key保存在內存中。實際上就是如果你有10w的keys在內存 中,而只有僅僅10%左右的key經常使用,那麼Redis可以通過開啓VM嘗試將不經常使用的Value轉換到disk上保存
4、Redis的附加檔案(AOF)功能:Redis通過配置的策略將數據集保存到aof中,當Redis掛掉後能夠通過aof恢復到掛掉前的狀態
Redis的安裝及配置:
下載Redis:wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz
[[email protected] ~/src]$ tar xvzf redis-2.0.0-rc4.tar.gz
[[email protected] ~/src]$ cd redis-2.0.0-rc4
[[email protected] ~/src/redis-2.0.0-rc4]$ make
[[email protected] ~/src/redis-2.0.0-rc4]$ mkdir ~/redis-2.0.0
[[email protected] ~/src/redis-2.0.0-rc4]$cp redis-server ~/redis-2.0.0
[[email protected] ~/src/redis-2.0.0-rc4]$cp redis-benchmark ~/redis-2.0.0
[[email protected] ~/src/redis-2.0.0-rc4]$cp redis-cli ~/redis-2.0.0
[[email protected] ~/src/redis-2.0.0-rc4]$cp redis.conf ~/redis-2.0.0
[[email protected] ~/src/redis-2.0.0-rc4]$ cd ~/redis-2.0.0/
配置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 /home/falcon/redis-2.0.0/
########### 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
啓動Redis
[[email protected] ~/redis-2.0.0]$ ./redis-server redis.conf
檢測Redis是否啓動:
[[email protected] ~/redis-2.0.0]$ netstat -an -t
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:10022 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
……..
[[email protected] ~/redis-2.0.0]$ ps -ef|grep redis-server
falcon 7663 1 0 02:29 ? 00:00:00 ./redis-server redis.conf
本文來源於php愛好者 http://www.phplover.cn/ ,
原文地址:http://www.phplover.cn/post/404.html
其他:
1:查看進程,確認redis已經啓動
[root@Architect redis-1.2.6]# ps -ef | grep redis
root 401 29222 0 18:06 pts/3 00:00:00 grep redis
root 29258 1 0 16:23 ? 00:00:00 redis-server /etc/redis.conf
如果這裏啓動redis服務失敗,一般情況下是因爲redis.conf文件有問題,建議檢查或找個可用的配置文件進行覆蓋,避免少走彎路,這裏建議,修改redis.conf,設置redis進程爲後臺守護進程
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
2:測試redis
[root@Architect redis-1.2.6]# redis-cli
redis> set name songbin
OK
redis> get name
"songbin"
3:關閉redis服務
redis-cli shutdown
redis服務關閉後,緩存數據會自動dump到硬盤上,硬盤地址爲redis.conf中的配置項dbfilename dump.rdb所設定
4:強制備份數據到磁盤,使用如下命令
redis-cli save 或者 redis-cli -p 6380 save(指定端口)