安装redis扩展
- 源码安装
# wget http://download.redis.io/releases/redis-6.0.8.tar.gz
# tar xzf redis-6.0.8.tar.gz
# cd redis-6.0.8
# make
- perl 安装
perl install redis
安装后记得修改php.ini设置 php -m 查看是否扩展安装成功
启动redis-server
[root@VM_0_16_centos bin]# ./redis-server ../etc/redis.conf #后面带上配置文件
php连接redis
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
echo $redis->ping(); #给redis-server发送ping 这里返回1 说明连接成功
$redis->set("a",2); # 设置字符串类型
echo $redis->get("a"); #获得字符串类型
- 字符串操作
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->set("a",1);#设置key值
$redis->get("a");#获取指定key值
$redis->append("a",2); #append
$redis->get("a");
$redis->incrby("a",1);
echo $redis->get("a");
- 列表操作(lists)
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->lpush("list",1); #入栈 从左
$redis->lpop("list");#弹出 从左
- hashes
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->hset("user","name","xiaoming"); #入栈 从左
echo $redis->hget("user","name");#弹出 从左
- 集合(set)
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->sadd("user",1);
$redis->sadd("user",2);
$redis->sadd("user",3);
echo $redis->scard("user");
==还不能使用user当key,这样会获取不到值 ==
- 有序集合(ZSET)
就是带score的集合哦
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->zadd("zset",100,"xiaoming");
echo $redis->zcount("zset",1,100);
- geo (地理位置)
可以存储地理位置信息。
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->geoadd("city",112.59,28.12,"changsha"); ###这里注意有三个参数
$redis->geoadd("city",114.06,22.32,"shenzhen");
$redis->geopos("shenzhen");
echo $redis->geodist("city","changsha","shenzhen","km");##计算长沙到深圳的直线距离。
- Hyperloglog
HyperLogLog 是一种用于计算唯一事物的概率数据结构(从技术上讲,这称为估计集合的基数 (不重复的数的数量)
可以统计网站uv 存在一定误差
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$clinet_ip = "22.22.33.33";
$redis->pfadd("uv",array($clinet_ip));
$clinet_ip = "22.22.33.34";
$redis->pfadd("uv",array($clinet_ip));
$clinet_ip = "22.22.33.33";
$redis->pfadd("uv",array($clinet_ip));
echo "uv is ".$redis->pfcount("uv");
?>
- Bitmaps(位图)
以0和1来保存实际数据 适合做签到统计,关注统计 能够以0和1来代表的一类数据
位图不是实际的数据类型,而是在 String 类型上定义的一组面向位的操作。由于字符串是二进制安全的 blob,并且它们的最大长度为 512 MB,因此它们适合设置最多 2^32 个不同的位。
<?php
$redis = new Redis(); #创建redis对象
$redis->connect('127.0.0.1',6379); # 连接redis 默认空密码情况 。有密码
if(!$redis->ping()) echo "连接redis失败";#ping
$redis->setbit("qiandao","1",0);
$redis->setbit("qiandao","2",1);
echo $redis->getbit("qiandao",2);#查看第二天签到情况 key里面可以加上名字啥的 这样直接可以定位某个人的签到情况。
php操作使用redis是非常简单的,只要创建好了redis对象,后面使用的函数和redis的命令一样,使用小写即可。