Redis是一個開源的用ANSI C編寫、支持網絡、基於內存、亦可持久化的日誌型、Key-Value數據庫,根據DB-Engines.com站點月度排行的數據顯示,Reidis是最流行的鍵值對存儲數據庫,如今的開發由VMware主持。php
Redis提供多種語言的API,包括:Perl、PHP、Python、Ruby、Lua、C、C++、C#等;與Memcache相比,Redis中值(Value)的類型不只限於字符串(strings),能夠支持的類型還包括哈希表(hashes)、列表(lists)、集合(sets)和排序集(sorted sets)。並且值的類型決定了值自己支持的操做,Redis支持不一樣無序、有序的列表,無序、有序的集合間的交集、並集等高級服務器端原子操做。html
Redis一般將所有的數據存儲在內存中。2.4版本後可配置爲使用虛擬內存,[6]一部分數據集存儲在硬盤上,但這個特性廢棄了。redis
目前經過兩種方式實現持久化:shell
使用快照,一種半持久耐用模式。不時的將數據集以異步方式從內存以RDB格式寫入硬盤。數據庫
1.1版本開始使用更安全的AOF格式替代,一種只能追加的日誌類型。將數據集修改操做記錄起來。Redis可以在後臺對只可追加的記錄做修改來避免無限增加的日誌。vim
Redis支持主從同步,數據能夠從主服務器任意數量的從服務器上同步,從服務器能夠是關聯其餘從服務器的主服務器,這使得Redis能夠執行單層樹複製。從盤能夠有意無心的對數據進行寫操做,使得從數據庫在任何地方同步樹時,能夠訂閱一個頻道並接收主服務器完整的消息發佈記錄;同步對讀取操做的可擴展性和數據冗餘何有幫助。至今使用Redis的公司包括百度、新浪、搜狐、Tencent、Disqus、Discourse、暴雪娛樂、TweetDeck、GitHUB、Twitter等;安全
參考文獻:bash
http://zh.wikipedia.org/zh/Redis服務器
http://baike.baidu.com/view/4595959.htm?fr=aladdin網絡
http://redis.cn/topics/introduction.html
Redis官網下載地址:http://download.redis.io/releases/redis-2.8.9.tar.gz
##代碼段
[root@redis_mastersource]# cd /home/source/
[root@redis_mastersource]# wget http://download.redis.io/releases/redis-2.8.9.tar.gz
[root@redis_mastersource]# tar -xf redis-2.8.9.tar.gz
[root@redis_masterredis-2.8.9]# cd redis-2.8.9
[root@redis_masterredis-2.8.9]# make
[root@redis_masterredis-2.8.9]# make install
#代碼段
[root@redis_masterredis-2.8.9]# mkdir /etc/redis
[root@redis_masterredis-2.8.9]# cp redis.conf /etc/redis/
[root@redis_master~]# vim /etc/redis/redis.conf
##提示:指定存放redis日誌的文件,默認發送至/dev/null文件中;
logfile"/var/log/redis/redis.log"
[root@redis_master~]# mkdir /var/log/redis/
[root@redis_master~]# redis-server /etc/redis/redis.conf &
#代碼段
[root@redis_master~]# netstat -lntp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 40299/redis-server
tcp 0 0 :::6379 :::* LISTEN 40299/redis-server
[root@redis_master~]# redis-cli set mykey 'hello world!' #設置一個key的value
OK
[root@redis_master~]# redis-cli get mykey #獲取key上的value
"helloworld!"
[root@redis_master~]# redis-cli type mykey #獲取key的類型,顯示結果爲字符串(string)
String
[root@redis_master~]# redis-cli strlen mykey #獲取key的長度,其中空格也佔用一個字符;
(integer) 12
##提示:能夠經過SHELL腳本操縱Redis數據庫;
[root@redis_master~]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to127.0.0.1.
Escape characteris '^]'.
set test"welcome to bei jing"
+OK
get test
$19
welcome to beijing
strlen test
:19
quit
+OK
Connection closedby foreign host.
[root@redis_master~]# cat test_redis.sh
#!/bin/sh #descrition: testredis database #author: cfwl,crate date of 2014-06-06 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin export PATH #operation redisdatabase printf"\033[32mPlease Input One \'Key\' and \'Value\':\033[0m " key value read key value #create key redis-cli SET $key$value printf"\n" #To obtain key redis-cli GET $key printf"\n" #Judge key to datatype redis-cli TYPE$key printf"\n" #Delete key printf"\033[33mYour Miss Delete The key? \(y|n\):\033[0m " read str while [[ $str !="y" ]] do printf "\033[33mYour MissDelete The key? \(y|n\):\033[0m " read str [ $str = 'y' ] &&redis-cli DEL $key $value && printf "\n" done #Judge key ifexists redis-cli EXISTS$key
SET 建立一個key;
GET 獲取一個key的值;
DEL ***一個key;
TYPE 獲取一個key的類型;
EXISTS 判斷一個key是否存在,0:存在,1,不存在;
KEYS 獲取給定模糊匹配的key;
EXPIRE 設置一個key過時的秒數;
PERSTST ***一個key過時的秒數;
PEXPIRE 設置一個key過時的毫秒數;
RENAME 將一個key重命名;
RENAMENX 將一個key重命名,且新的key必須是不存在的能夠;
TTL 獲取key的有效時間;