什么是Redis Redis是远程的,基于内存的,非关系型数据库
Redis 应用场景 1、缓存 缓存数据
2、队列 list 实现队列
3、数据存储
Redis 安装 1、服务器环境: Linux / Centos
2、Redis
3、预装 gcc tclyum install gcc-c++
【安装步骤】 1、下载 Rediswget http://download.redis.io/releases/redis-5.0.5.tar.gz
2、解压 Redistar -xf redis-5.0.5.tar.gz
解压后,进入源码目录,执行 make
命令。 安装完后页面:
3、将 src
目录下二进制文件安装到 /usr/local/bin
下。 执行命令 sudo make install
4、配置项 一般 redis 参考的默认配置文件为解压目录下的 redis.conf ,先把该文件复制到其他目录下,并对其进行配置项修改。
daemonize no //改为yes ,配置redis server 后台进程启动 port 6379 //默认端口 7200
5、启动 Redis server
/usr/local/bin/redis-server /opt/redis/config/redis.conf //以配置项启动redis-server ps aux|grep redis-server //查看进程是否开启成功 kill -9 XX //杀死进程
Redis 客户端
#redis-cli --help redis-cli -h 127.0.0.1 -p 7200 [root@izwz94ryybsa2lcqvewvzqz redis-5.0.5]# redis-cli -h 127.0.0.1 -p 7200 127.0.0.1:7200> info
Redis 数据类型以及各数据类型的使用场景
数据类型
存储的值
读写能力
String
字符串、整数或浮点,统称为元素
对字符串操作 对整数类型加减
List
序列集合且每个节点包含一个元素
序列两端推入、或弹出元素 修建、查找或移除元素
Set
各不相同的元素
从集合中插入或删除元素
Hash
有key-value 的散列组 key 是字符串,value 是元素
按照key 进行增加删除
Sort Set
带分数的score-value有序集合 score 为浮点,value 是元素
集合插入,按照分数范围查找
【String】 key | value(string/int/float)
127.0.0.1:7200> set string1 eric OK 127.0.0.1:7200> get string1 "eric" 127.0.0.1:7200> set string2 4 OK 127.0.0.1:7200> get string2 "4" 127.0.0.1:7200> incr string2 (integer) 5 127.0.0.1:7200> get string2 "5" 127.0.0.1:7200> decr string2 (integer) 4 127.0.0.1:7200> decrby string2 2 (integer) 2
【List】 列表,元素不唯一
lpush list1 12 // 12 lpush list1 13 // 13 12 lindex list1 0 // 13 rpop list1 //12 #先进先出
【Set】 集合,元素唯一
sadd set1 redis sadd set1 memcached smembers set1
【Hash】 哈希
hset key field value # 将哈希表 key 中的字段 field 的值设为 value 。
【Sort Set】 有序集合
ZADD key score1 member1 [score2 member2] # 向有序集合添加一个或多个成员,或者更新已存在成员的分数
操作 Redis 【服务器安装要求】
1、Linux 服务器 (这里使用 Centos )
2、PHP 5.3 (phpize / php-config ) 以上,具体和下载的 redis 要求版本一致
3、PHP redis 拓展
下载php-redis 拓展
wget https://github.com/phpredis/phpredis/archive/develop.zip
make 出现错误
[root@izwz94ryybsa2lcqvewvzqz phpredis-develop]# make /bin/sh /opt/phpredis-develop/libtool --mode=compile cc -I. -I/opt/phpredis-develop -DPHP_ATOM_INC -I/opt/phpredis-develop/include -I/opt/phpredis-develop/main -I/opt/phpredis-develop -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /opt/phpredis-develop/redis.c -o redis.lo libtool: compile: cc -I. -I/opt/phpredis-develop -DPHP_ATOM_INC -I/opt/phpredis-develop/include -I/opt/phpredis-develop/main -I/opt/phpredis-develop -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /opt/phpredis-develop/redis.c -fPIC -DPIC -o .libs/redis.o In file included from /opt/phpredis-develop/redis.c:27:0: /opt/phpredis-develop/common.h:12:28: fatal error: zend_smart_str.h: No such file or directory #include <zend_smart_str.h> ^ compilation terminated. make: *** [redis.lo] Error 1
make 出现错误,是因为下载的 redis 版本要求的PHP版本 和服务器的版本不一致导致的。最新版的redis,最低要求 PHP7.0 或以上。 原先服务器用的是php5.6,于是升级到php 7.1。首先卸载5.6 yum remove php-common
然后再安装PHP7.1
yum install -y php71w-fpm php71w-opcache php71w-cli php71w-gd php71w-imap php71w-mysqlnd php71w-mbstring php71w-mcrypt php71w-pdo php71w-pecl-apcu php71w-pecl-mongodb php71w-pecl-redis php71w-pgsql php71w-xml php71w-xmlrpc php71w-devel mod_php71w
make && make install 成功
下一步,更改 php.ini 文件,加载 redis.so 模块extention=redis.so
使用命令php -m
查看加载的模块,即可看到已经加载 redis
【PHP 如何连接 redis 】 phpredis 文档https://github.com/phpredis/phpredis
$redis = new \Redis(); $redis->connect('127.0.0.1',7200); //string 操作,保存json $redis->delete("string1"); $redis->set("string1","val1"); $val = $redis->get("string1"); var_dump($val); $redis->set("string1",4); $redis->incr("string1",2); $val = $redis->get("string1"); var_dump($val);
//list 实现队列,先进先出,异步行为 $redis->delete("list1"); $redis->lPush("list1","A"); $redis->lPush("list1","B"); $redis->lPush("list1","C"); $val = $redis->rPop("list1"); var_dump($val);//输出A
//set 唯一集合 $redis->delete("set1"); $redis->sAdd("set1","A"); $redis->sAdd("set1","B"); $redis->sAdd("set1","C"); $redis->sAdd("set1","C"); $val = $redis->sCard("set1"); var_dump($val); var_dump($redis->sMembers("set1"));
//hash 一般用于存储复杂属性 $redis->delete("driver1"); $redis->hSet("driver1","name","shayvmo"); $redis->hSet("driver1","age",25); $redis->hSet("driver1","gender",1); var_dump($redis->hGet("driver1","name"); var_dump($redis->hMGet("driver1","name","age");
// sort set 排行榜 // zAdd zRange 分数低到高 zRevRange 高到低 $redis->delete("zset1"); $redis->zAdd("zset1",100,'shayvmo'); $redis->zAdd("zset1",88,'shayvmo88'); $redis->zAdd("zset1",97,'shayvmo97'); $redis->zAdd("zset1",93,'shayvmo93'); var_dump($redis->zRange("zset1",0,-1));//分数低到高全部返回 var_dump($redis->zRevRange("zset1",0,-1));//分数高到低全部返回 var_dump($redis->zRevRange("zset1",0,-1,true));//分数高到低全部返回,并返回分数
【注意事项】 运行PHP 文件时,出错
PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: php_json_decode_ex in Unknown on line 0
解决方法: 去掉php.ini
中的 extension=redis.so
来源链接:https://stackoverflow.com/questions/41052999/php-warning-unable-to-load-dynamic-library-usr-lib64-php-modules-solr-so-und