Redis是php项目中使用到的主要缓存服务,主要是参考慕课网的《redis的入门与应用_笔记》,这里主要介绍:
我自己本地的Linux环境是Cent OS 7.2(LNMP),下载的redis版本是3.0.6
Linux必须要安装gcc和tcl,具体安装方法这里不进行介绍
把里面的daemonize no改为yes,表示是从在后台运行的 里面还有一个port 6379,根据需要修改端口,为了安全的话建议修改端口
[root@www redis-3.0.6]# redis-server /home/abc/redis/redis.conf
上面的步骤安装好了之后,redis-cli(客户端)默认也是一起安装好的,直接可以通过redi-cli命令进行登录
redis-cli -h 127.0.0.1 -p 6379
可以通过info命令来输出redis的信息,包括版本,redis配置路径,端口等等
set key value
如图:
get key
如图:
incr key // 自增
decr key // 自减
incrby key 2 // 加2
decrby key 2 // 减2
如图:先设置一个value为13的string,key为string3,然后执行自增,再减去3
list类型是一个有序的集合,可以从集合的左边(头部)或者是右边(尾部)进行推入或者是弹出元素等操作
注意:list集合里面的元素并不要求是唯一的,可以有多个元素是相同的
lpush list value1 [value2] // 头部(左边)插入元素(可以多个)
rpush list value1 [value2] // 尾部(右边)插入元素(可以多个)
如图:
此时的list从左到右为:1 2 3 4 5 6 7 8 9 10
lpop list // 移出并获取集合的第一个元素(左边第一个)
rpop list // 移出并获取集合的最后一个元素(右边第一个)
如图:
此时的list从左到右为:3 4 5 6 7 8 9
llen list
如图:
获取此时list的长度:7
lindex list index
如图:
查看第一个元素的值为:3
set类型和list类型类似,不同的是set中的元素都是唯一的而且set元素不分左右即不分头尾
sadd set value
比如:
如果set中已经有该value的话,那么会返回0,插不进去的
scard set
srem set1 value
smembers set
如图:
hash类型也称为散列类型,使用键值对的结构
hset hash key value
如图为定义一个hash1表,里面的key1的值为12
再往这个hash1表中定义key2和key3:
hget hash key
如图:
heln hash
如图:
hmget hash key1 key2
如图:
hkeys hash
如图:
hdel hash key1 key2
如图:
sort set(有序集合)类型:和hash很相似,不同的是每个元素都会关联一个double类型的分数,redis正是通过这个分数来为每个元素进行从小到大的排序,有序集合里面的元素是唯一的,但是分数及score是可以重复的
添加一个zset1集合,并且设置分数10.1,value为val1 设置分数11.2,value为val2 设置分数9.2,value为val3
zadd zset1 10.1 val1
zadd zset1 11.2 val2
zadd zset1 9.2 val3
zcard zset1
获取前三位分数的排行(从小到大):
zrange zset1 0 2 withscores
如图:
注意:前两行表示最小的score,后面类似。浮点数的存储是像图片中的一样存储的
查看val1的排行:
表示排在第二位
如果有两个元素的score相同的话,则按照value来排序,比如:
val2和val3的score是一样的,但是val2排在前面
Linux已经安装了PHP
查看是否安装了phpize和php-config,可以通过which命令查看是否安装了,如果未安装的话,yum install php-devel即可
wget https://github.com/phpredis/phpredis/archive/3.1.4.tar.gz
php -m命令可以列出当前已经安装的php扩展
a. 解压php的redis扩展包
tar -zxvf xxx.tar.gz
unzip xxx.zip
b. 进去到redis目录中执行phpize生成configure
phpize
如图:
c. 执行configure(将配置文件放到指定位置)
./configure --with-php-config=/usr/bin/php-config
d. make操作(编译)
make install
如图:
表示成功了
e. php.ini中加入redis扩展 先查看一下php.ini的位置,使用下面的命令可以查看php.ini的位置:
php --ini
如图:
是在/etc/下的php.ini
编辑php.ini,在最后增加一行:extension = redis.so
f. 使用php -m查看是否安装成功
https://github.com/phpredis/phpredis
Redis类的命名空间是根,即/,所以在实际开发中,要实例化redis类的时候,最好前面加上\,即 new \Redis()
phpredis的命令和参数基本和redis.io中的实际命令对应
<?php
/**
* 连接redis
*/
// 实例化redis
$redis = new \Redis();
// 连接redis
$redis->connect('127.0.0.1', 6379);
<?php
/**
* string类型操作
*/
// 连接redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 先删除对应的key
$redis->delete('string1');
// 设置string的值
$redis->set('string1', 'val1');
// 获取string类型的值
$val = $redis->get('string1');
var_dump($val);
// 设置string的值为整数
$redis->set('string2', 4);
// 对string类型的整数进行加减操作
$redis->incr('string2', 2);
// 获取string类型的值
$val = $redis->get('string2');
var_dump($val);
运行:
val1
6
<?php
/**
* list类型操作
*/
// 连接redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 先删除对应的key
$redis->delete('list1');
// 在list中加入元素
$redis->lPush('list1', 'val1');
$redis->lPush('list1', 'val2');
$redis->lPush('list1', 'val3');
// 推出最右的元素并且读取出来
$val1 = $redis->rPop('list1');
var_dump($val1);
// 推出最右的元素并且读取出来
$val2 = $redis->rPop('list1');
var_dump($val2);
运行:
val1
val2
<?php
/**
* set 类型操作
*/
// 连接redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 先删除对应的key
$redis->delete('set1');
// 设置set集合的值
$redis->sAdd('set1', 'val1');
$redis->sAdd('set1', 'val2');
$redis->sAdd('set1', 'val3');
$redis->sAdd('set1', 'val3');
// 获取set集合中的数量
$number = $redis->sCard('set1');
var_dump($number);
// 获取set集合中的所有值
$val = $redis->sMembers('set1');
var_dump($val);
注意:第13行重复插入val3不生效的
运行:
int(3)
array(3) {
[0]=>
string(4) "val1"
[1]=>
string(4) "val2"
[2]=>
string(4) "val3"
}
<?php
/**
* hash 类型操作
*/
// 连接redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// hash 操作
// 先删除对应的key
$redis->delete('hash1');
// 设置hash值
$redis->hSet('hash1', 'name', 'xiaoming');
$redis->hSet('hash1', 'age', '25');
$redis->hSet('hash1', 'gender', '1');
// 获取hash值中的某个key
$name = $redis->hGet('hash1', 'name');
var_dump($name);
// 获取hash值中的多个key
$val = $redis->hMGet('hash1', array('name', 'age', 'gender'));
var_dump($val);
运行:
string(8) "xiaoming"
array(3) {
["name"]=>
string(8) "xiaoming"
["age"]=>
string(2) "25"
["gender"]=>
string(1) "1"
}
<?php
/**
* sort set 类型操作
*/
// 连接redis
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// sort set 操作
// 先删除对应的key
$redis->delete('zset1');
// 在sort set中加入元素
$redis->zAdd('zset1', 100, 'xiaoming');
$redis->zAdd('zset1', 90, 'xiaohong');
$redis->zAdd('zset1', 930, 'xiaowagn');
// 从低到高输出sort set的排行
$res1 = $redis->zRange('zset1', 0, -1);
var_dump($res1);
// 从高到低输出sort set的排行
$res2 = $redis->zRevRange('zset1', 0, -1);
var_dump($res2);
运行:
array(3) {
[0]=>
string(8) "xiaohong"
[1]=>
string(8) "xiaoming"
[2]=>
string(8) "xiaowagn"
}
array(3) {
[0]=>
string(8) "xiaowagn"
[1]=>
string(8) "xiaoming"
[2]=>
string(8) "xiaohong"
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型