基于内存
有客户端和服务器端
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 操做系统决定什么时候同步