Redis是远程的基于内存的非关系型数据库。
下载redis
wget download.redis.io/releases/redis-5.0.2.tar.gz
解压
tar –xvf download.redis.io/releases/redis-5.0.2.tar.gz
解压后进入解压后的目录 执行make编译
再执行 make install安装
如果提示出错缺少gcc tcl自行安装
运行时要配合配置文件
复制配置文件 :
cp redis.conf /home/redis.conf
修改这个文件
Daemonize no改为yes 意思是redis将作为后台系统
Port 9379修改成7200或其他可不改;
运行:redis-server的绝对路径配合配置文件
redis-server /home/redis.conf
验证是否运行 ps aux|grep redis-server
进入客户端:redis-cli -h 127.0.0.1 -p 7200
Redis的五种数据类型
1 string 类型 : 存储一个字符串或整型
使用set 设置一个字符串 set a = 1;
使用get 获取一个字符串的值 get a
使用incr 进行自增 incr a
使用incrby 进行有步长的自增 incrby a 2
使用decr进行自减 decr a
使用decrby进行有步长的自减
2 list类型 (左边推入元素右边获取元素) 存储一个序列集合用于队列
从左边push一个元素 lpush list1 1
从左边push一个元素lpush list1 2
从右边pop一个元素rpop list1 结果是1
查看元素个数 llen list1 结果是1 因为从右边取出了一个
List可以有重复的元素
3 set类型 一个无序集合每个元素都不一样
向set类型中添加一个元素 sadd set1 1
向set类型中删除一个元素 srem set1 1
查看set类型中是否含有某个元素 sismember set1 1
查看set类型中有多少元素 scard set1
Set类型中不能含有重复的元素
4 hash类型 key-value结构 key必须是字符串 比较复杂的数据结构
向hash类型中添加一个元素 hset hash1 key1 1
从hash类型中取出对应元素 hget hash1 key1
查看hash类型的长度 hlen hsah1
取出多个元素 hmget hash1 key1 key2
5 sort set 类型操作(有序分数集) 分数和元素的映射
添加一个元素到sort set 类型 zadd zset1 10.1 val1
添加一个元素到sort set 类型 zadd zset1 0.9 val2
查看sort set 类型的元素个数 zcard zset1
查看指定排名顺序 zrange zset1 0 2 withscores
查看某个元素的排名 zrank zset1 val1
修改某个元素 zadd zset1 10.2 val1
如果两个元素的scroce一样就按照两个字典顺序排列
使用php –m查看是否已安装redis扩展
wget https://github.com/phpredis/phpredis/archive/develop.zip
解压后 进入目录执行
/usr/local/php/bin/phpize生成configure工具
再执行 ./configure --with-php-config=/usr/local/php/bin/php-config
使用make编译安装 make && make install
结果是:Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
而非: Installing shared extensions: /usr/lib64/php/modules/
PS 安装前必须要有phpize 和 php-config 没有则使用yum install php-devel安装phpize 和 php-config一般都有不需要安装
编辑配置文件 php –ini查看php.ini的位置是 /usr/local/php/etc/php.ini
则 vi /usr/local/php/etc/php.ini使用shift+g调到最后一行添加
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis.so
保存退出 重启服务器
再次使用php –m查看是否安装成功
phpinfo查看是否存在
操作redis
参考文档 : https://github.com/phpredis/phpredis
Redis类的命名空间是根
Phpredis的命令和参数基本和redis.io中的实际命令对应
$redis = new \Redis();
$redis->connect(‘127.0.0.1’,7200);
如果报错:
Uncaught exception 'RedisException' with message 'Connection refused' in /home/wwwroot/default
看看redis服务有没有启动
String操作
$redis->set("string1","val1");
$val1 = $redis->get("string1");
echo $val1;
echo "\n";
$redis->set("string1",4);
$redis->incr("string1");
$val2 = $redis->get("string1");
echo $val2;
终端运行 : php a.php
List类型操作 注意大小写
$redis->lPush("list1",'a');
$redis->lPush("list1",'b');
echo $redis->rPop("list1"); //a
set类型操作
$redis->sAdd("set1","a");
$redis->sAdd("set1","b");
$val3 = $redis->sCard("set1");
var_dump($val3);
$val4 = $redis->sMembers("set1");
var_dump($val4);
hash类型操作
$redis->hSet("drever1",'age',21);
$redis->hSet("drever1",'name','xiaoming');
echo $redis->hGet('drever1','age');
var_dump($redis->hMget('drever1',array('age','name')));
//sort set操作
$redis->zAdd('zset1',100,'xiaoming');
$redis->zAdd('zset1',90,'xiaohong');
$redis->zAdd('zset1',95,'xiaowang');
var_dump($redis->zRange('zset1',0,-1)); //-1表示全部 0从第一个开始 从低到高
var_dump($redis->zRevRange('zset1',0,-1)); //从到低
模式:一个主服务器,两个从服务器
首先复制两个配置文件作为从服务器的配置文件例如
cp /root/redis-5.0.2/redis.conf /root/redis-5.0.2/redis6380.conf
cp /root/redis-5.0.2/redis.conf /root/redis-5.0.2/redis6381.conf
然后再修改内容 两个文件都要修改 改成对应的端口及名字
pidfile /var/run/redis6380.pid
port 6380
dbfilename dump6380.rdb //这个两个配置文件只要一个写就行了 另一个关闭save 900 1 ...三行
slaveof
如果没有slaveof就是replicaof
开启只读,默认打开上面的slaveof即配置好了只读
关闭aof appendonly no
再修改主配置文件
由于有一个从从服务器产生rdb所以不用产生rdb注释掉save 900 1...三行
开启aof appendonly yes
然后打开三个redis服务测试在主服务器里创建一个key在其他两个客户端看看能不能收到,能不能修改
PS
主服务器设置密码
requirepass 密码
从服务器使用密码授权
masterauth 密码
从服务器客户端连接成功后使用auth 密码 才可获取主服务器的值