Linux 之 Redis

mac2022-06-30  26

Linux 之 Redis


  参考教程:【千峰教育】


 

一、Redis简介:

  说明:  

    1、也是一种类似于Memcached的key-value机制的存储服务    2、是非关系型数据库(NoSQL)的一种    3、官网:www.redis.io,中文网:www.redis.cn

  特点:

    1、能够持久化存储数据,而Memcached不能    2、value支持更多的数据类型    3、支持数据备份,主从模式 


 

二、Redis安装:

  1、解压:     tar -zxvf redis-3.2.8.tar.gz     (我选择的版本:wget http://download.redis.io/releases/redis-5.0.3.tar.gz)   2、移动     cp -R redis-3.2.8 /usr/local/redis   3、安装(无需配置编译)     cd /usr/local/redis     make install   4、redis服务介绍:     安装完成后,/usr/local/redis/src 目录中有两个服务程序     客户端:redis-cli     服务端:redis-server   5、服务端测试:./redis-server

  6、将服务添加到环境变量中:

    默认配置文件路径:/usr/local/redis/redis.conf     添加环境变量:       vim /etc/profile       export PATH=$PATH:/usr/local/redis/src/       source /etc/profile   7、设置开机启动:    (1)编辑配置文件       cd /usr/local/redis/       cp redis.conf redis.conf.bak #备份一下       vim redis.conf       daemonize yes #默认是no,是否以守护进程的方式运行     (2)编辑启动脚本文件       cd /usr/local/redis/utils/       cp redis_init_script redis_init_script.bak #备份一下       vim redis_init_script       EXEC=/usr/local/redis/src/redis-server       CLIEXEC=/usr/local/redis/src/redis-cli       CONF=/usr/local/redis/redis.conf     (3)测试启动脚本(可以通过ps查看并用redis-cli连接)       ./redis_init_script start     (4)开机启动       vim /etc/rc.local       添加:       /usr/local/redis/utils/redis_init_script start   8、服务测试:     (1)查看进程       ps aux | grep redis     (2)使用客户端连接       /usr/local/redis/src/redis-cli       参数:         -h 主机         -p 端口号,默认6379         -a 指定密码       输入:ping,显示pong,表示通了。   9、设置密码     (默认是没有密码的)     (1)单次生效       设置密码:config set requirepass 123456       获取密码:config get requirepass       授权使用:auth 123456     (2)永久生效       修改配置文件:vim redis.conf       取消requirepass行前的注释,后面加上密码即可。       requirepass 123456       说明:启动密码后,无密码也可以连接,但是没有权限进行操作。  10、客户端操作:     常用命令:       ping:查看服务器是否允许(结果显示pong表示允许)       quit:关闭当前连接       auth:验证当前连接(auth 密码)       select:选择库,1-15,共16个,默认使用0(示例:select 2)       flushdb:删除当前数据库数据       flushall:删除所有数据库数据       DEL:删除键       EXISTS:检查键是否存在   11、数据类型介绍:       (1)字符串(String):是最基本的数据类型,与Memcached的Key-Value一样。         设置:SET key value         获取:GET key       (2)哈希(Hash):是一个键值对集合,特别适合存储对象。         设置:HMSET user:1 name zhangsan age 12         获取所有信息:HGETALL user:1         获取单个信息:HGET user:1 name       (3)列表(List):按照插入顺序排序,可以添加一个元素到列表的头部或尾部。         左侧压入:lpush key value [value2 value3 ...]         右侧压入:rpush key value [value2 value3 ...]         左侧弹出:lpop         右侧弹出:rpop         范围显示:lrange key start stop(示例:lrange key 0 -1显示全部)         显示个数:llen key       (4)集合(Set):string类型的无序集合,集合中的数据是唯一的。         添加数据:sadd key value [value2 value3 ...]         显示数据:smembers key         显示总数:scard key         随机移除:spop key [count] 默认随机移除一个

      (5)有序集合(zset:zort set)         不同于set的是每个元素都会关联一个double类型的分数。         redis正是通过分数来为集合中的成员进行从小到大的排序。         添加数据:zadd key score value         显示数据:zrange key start stop         显示总数:zcard key         显示范围:zcount key start stop         显示序号:zrank key member         显示分数:zscore key member


三、PHP操作redis:

  1、安装php-redis扩展:     教程中的示例:  

      下载:https://github.com/phpredis/phpredis/tree/php7/phpredis-php7.zip       解压:unzip phpredis-php7.zip       进入:cd phpredis-php7       解压:phpize       配置:./configure --with-php-config=/usr/local/php7/bin/php-config       编译:make       安装:make install     我选择的版本:       下载:wget https://github.com/phpredis/phpredis/archive/4.3.0.tar.gz       解压:tar -zxvf 4.3.0.tar.gz       进入解压后的目录:cd 4.3.0       解压:phpize       配置:./configure --with-php-config=/usr/local/php7/bin/php-config       编译:make       安装:make install

 

    安装完成,结果显示(这里的路径下面要用):

    Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20180731/

  2、修改PHP配置文件php.ini     vim /usr/local/php7/etc/php.ini     将上一步的路径添加进来     extension=/usr/local/php7/lib/php/extensions/no-debug-no-zts-20180731/redis.so   3、重启php-fpm     service php-fpm restart   4、测试扩展库是否安装成功     phpinfo()   5、php代码操作redis    示例一:

//创建对象 $redis = new Redis(); //连接服务器 $redis->connect('127.0.0.1',6379); //密码认证 $redis->auth('123456'); //设置 $redis->set('name','zhang san'); //获取 $name = $redis->get('name'); var_dump($name);

  示例二:

 

    (假设要进行抢购秒杀,lpush.php记录抢到的用户,rpop.php处理队列中的中奖用户。)     lpush.php:

$redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->auth('123456'); //记录抢到的用户,为了测试这里用随机的名字代替,实际是记录真实的用户 $redis->lpush('user_id','user_'.mt_rand(1,10000));

    rpop.php: 

$redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->auth('123456'); var_dump($redis->rpop('user_id'));

注意事项:

  选择php-redis扩展时,选择不同的版本,可能结果不一样,我开始选择的是,php官网的redis-2.2.5.tgz版本,编译时就报错:

... ...,致命错误:ext/standard/php_smart_str.h:没有那个文件或目录 ... 编译中断。make: *** [redis.lo] 错误 1

在网上搜索后,得到的说法是:因为最新的 phpredis 分了几大分支,针对最新的PHP稳定发行版 php7 有专门为php7的分支,所以我们从github拉下phpredis 源码。

然后从github上找了一个版本:https://github.com/phpredis/phpredis/archive/4.3.0.tar.gz。

下载重新安装成功了。


 

转载于:https://www.cnblogs.com/gyfluck/p/10530186.html

最新回复(0)