基於內存
有客戶端和服務器端
NoSQL非關係型數據庫
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -xzvf redis-4.0.1.tar.gz
cd redis-4.0.1
make
cd src
make install PREFIX=/usr/local/redis
php
cd /usr/local/redis/bin
./redis-server
注意這種方式啓動redis 使用的是默認配置git經過啓動參數告訴redis使用指定配置文件使用下面命令啓動
./redis-server redis.conf
github
cd /usr/local/redis/bin
./redis-cli shutdown
./redis-cli -h 127.0.0.1 -p 6379 shutdown
#指定端口和主機redis
cd /usr/local/redis/bin
./redis-cli
退出客戶端 : quit數據庫
REDIS_SERVER="/usr/local/redis/bin/redis-server" REDIS_CONF="/usr/local/redis/etc/redis.conf" REDIS_CLIENT="/usr/local/redis/bin/redis-cli" start() { $REDIS_SERVER $REDIS_CONF } stop() { $REDIS_CLIENT shutdown } restart() { stop start } case "$1" in 'start') start;; 'stop') stop;; 'restart') restart;; *) echo 'nothing to do';; esac
daemonize yes
key-value結構,
key
是字符串,value
可存儲 字符串、整數、浮點數數組
key-value結構,可是
value
是個數組,裏面存儲的值能夠重複,但有序緩存
key-value結構,可是
value
是個數組,裏面存儲的值也是key-value結構,key是惟一的安全
key-value結構,與
List
很類似,value
也是個數組,裏面存儲的值不能重複,但無序服務器
key-value結構,可是
value
是個數組,裏面存儲的值是score-value-rank結構,rank是隱藏值(由redis自動維護),value是惟一的,只能夠修改score數據結構
phpredis
插件
wget https://codeload.github.com/phpredis/phpredis/tar.gz/3.1.4
phpize
工具生成configure
文件
php安裝目錄/bin/phpize
Makefile
文件
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
php.ini
中加載redis.so
文件extension = redis.so
注意
:phpredis的類都是在根命名空間下,因此使用phpredis類時,儘可能在開頭加/
$redis = new \Redis(); $redis -> connect('127.0.0.1', 6379);
$redis -> set('key1', 'val1'); $val = $redis -> get('key1'); // 'val1' $redis -> set('key1', 12); $redis -> incr('key1', 2); $val = $redis -> get('key1'); // '14'
$redis = new \Redis(); $redis -> connect('127.0.0.1', 6379); $redis -> delete('list1'); $redis -> lPush('list1', 'a'); $redis -> lPush('list1', 'b'); $redis -> lPush('list1', 'c'); $val = $redis -> rPop('list1');
$redis = new \Redis(); $redis -> connect('127.0.0.1', 6379); $redis -> delete('set1'); $redis -> sAdd('set1', 'a'); $redis -> sAdd('set1', 'b'); $redis -> sAdd('set1', 'c'); $redis -> sAdd('set1', 'c'); $len = $redis -> sCard('set1'); var_dump($len); //int(3) $arr = $redis -> sMembers('set1'); var_dump($arr); //無序的索引數組
$redis = new \Redis(); $redis -> connect('127.0.0.1', 6379); $redis -> delete('person1'); $redis -> hSet('person1', 'name', 'mingming'); $redis -> hSet('person1', 'age', 42); $redis -> hSet('person1', 'gender', 1); $name = $redis -> hGet('person1', 'name'); var_dump($name); //string(8) 'mingming' $arr = $redis -> hMGet('person1', array('name','age')); var_dump($arr); //關聯數組
$redis = new \Redis(); $redis -> connect('127.0.0.1', 6379); $redis -> delete('zset1'); $redis -> zAdd('zset1', 100, 'mingming'); $redis -> zAdd('zset1', 90, 'xiaohong'); $redis -> zAdd('zset1', 98, 'xiaoming'); $val = $redis -> zRange('zset1', 0, -1); //低到高 $val = $redis -> zRevRange('zset1', 0, -1); //高到低 ##輸出的$val是索引數組
因爲redis是
基於內存
來存儲數據的,因此redis一旦重啓
或者系統崩潰
,內存中的數據就會丟失,爲了保證數據安全
,因此須要把數據持久化存儲到硬盤
若是僅僅當作緩存來使用,能夠禁用redis持久化功能
兩種
持久化方法一、快照持久化(默認開啓,無需配置):數據安全性低,性能好 二、AOF持久化(須要配置):數據安全性高,性能差
快照持久化
適用場景只使用於那些即便丟失一部分數據也不會形成問題的應用程序
AOF持久化
適用場景用於對數據安全性要求高的應用程序
AOF持久化
的三種
同步策略appendfsync always 每次寫操做就進行同步(安全性最高) appendfsync everysec 每秒執行一次同步(推薦) appendfsync no 操做系統決定什麼時候同步