Redis的安装与使用

 ̄綄美尐妖づ 提交于 2019-12-20 09:00:03
Redis介绍
  1. Redis是远程的, 客户端与服务端可部署在不同的机器上, 通过自定义的协议进行传输和交互
  2. Redis是基于内存的, 其结构与数据都存在内存中, 所以操作会很高速, 性能远远高于基于硬盘的Mysql, 也很吃内存
  3. Redis是非关系型数据库( 其本质是存储数据的数据库, 其具有硬盘持久化机制, 可以将内存中的数据写入硬盘, 保证数据的完整性和安全性 ), Mysql为关系型数据库, 存储前需要定义字典, 然后按照定制的字典进行存储, 而Redis不需要定义字典就可存储
  4. 应用场景
    a. 缓存
    b.队列
    c. 数据存储
Redis 安装(服务端, 客户端)
  1. 系统Centos7, PHP7.2, 从官网下载稳定版源码包
[root@localhost chao]# ls
redis-5.0.5.tar.gz
[root@localhost chao]# php -v
PHP 7.2.24 (cli) (built: Oct 26 2019 12:28:19) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies
[root@localhost chao]#
  1. 解压源码包
[root@localhost chao]# tar -xf redis-5.0.5.tar.gz
[root@localhost chao]# ll
total 1936
drwxrwxr-x. 6 root root    4096 May 16  2019 redis-5.0.5
-rw-r--r--. 1 root root 1975750 Dec 19 14:46 redis-5.0.5.tar.gz
  1. 进入源码目录进行make操作
[root@localhost chao]# cd redis-5.0.5/
[root@localhost redis-5.0.5]# make
  1. 查看生成的二进制文件
[root@localhost redis-5.0.5]# ll src/redis*
  1. make install 将生成的文件放在 usr/local/bin文件下
[root@localhost redis-5.0.5]# sudo make install
....
[root@localhost redis-5.0.5]# which redis-server
/usr/local/bin/redis-server
  1. 修改配置文件
[root@localhost redis-5.0.5]# cp redis.conf /home/chao/config/redis/redis.conf
[root@localhost redis-5.0.5]# vim /home/chao/config/redis/redis.conf
...
// no 改为后台启动  yes
daemonize yes
...
// 多实例以及安全性考虑  修改默认端口
port 7200
...
  1. 使用源码文件下的 redis.conf 配置文件 启动Redis
[root@localhost redis-5.0.5]# redis-server /home/chao/config/redis/redis.conf
  1. 查看Redis是否启动
[root@localhost redis-5.0.5]# ps aux|grep redis-server
root      12286  0.2  0.7 153896  7652 ?        Ssl  15:24   0:00 redis-server 127.0.0.1:7200
root      12291  0.0  0.0 112712   968 pts/0    S+   15:24   0:00 grep --color=auto redis-server
Redis客户端使用
  1. 查看客户端位置
[root@localhost redis-5.0.5]# which redis-cli 
/usr/local/bin/redis-cli
  1. 启动 (默认会6379端口启动)
[root@localhost redis-5.0.5]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
// 拒绝后, Ctrl+C中断
// 指定端口启动
[root@localhost redis-5.0.5]# redis-cli -h 127.0.0.1 -p 7200
127.0.0.1:7200> 
  1. 查看redis-server的当前状态
127.0.0.1:7200> info
Redis数据类型

在这里插入图片描述

  1. string类型
    在这里插入图片描述
127.0.0.1:7200> set name laowang
OK
127.0.0.1:7200> get name
"laowang"
127.0.0.1:7200> set age 18
OK
127.0.0.1:7200> incr age
(integer) 19
127.0.0.1:7200> decr age
(integer) 18
127.0.0.1:7200> 

  1. list类型 (有序且不要求集合里的元素是唯一的)
    在这里插入图片描述
// 左边推入
127.0.0.1:7200> lpush list1 12
(integer) 1
127.0.0.1:7200> lpush list1 13
(integer) 2
// 右边弹出  先入先出 
127.0.0.1:7200> rpop list1
"12"
// 左边弹出  后入先出
127.0.0.1:7200> lpop list1
"13"
// list 元素可以重复
127.0.0.1:7200> lpush list2 12
(integer) 1
127.0.0.1:7200> lpush list2 13
(integer) 2
127.0.0.1:7200> lpush list2 12
(integer) 3
127.0.0.1:7200> llen list2
(integer) 3
127.0.0.1:7200>
  1. set类型( 无序且元素唯一 )
    在这里插入图片描述
// 插入一个元素
127.0.0.1:7200> sadd set1 12
(integer) 1
// 查看该集合有几个元素
127.0.0.1:7200> scard set1
(integer) 1
127.0.0.1:7200> sadd set1 13
(integer) 1
// 重复的元素插入失败
127.0.0.1:7200> sadd set1 13
(integer) 0
127.0.0.1:7200> scard set1
(integer) 2
127.0.0.1:7200>
// 查看元素是否存在该集合中
127.0.0.1:7200> sismember set1 13
(integer) 1
127.0.0.1:7200> sismember set1 15
(integer) 0
// 删除元素
127.0.0.1:7200> srem set1 13
(integer) 1
127.0.0.1:7200> sismember set1 13
(integer) 0
127.0.0.1:7200> 
  1. hash类型( 散列类型 )
    在这里插入图片描述
// 插入 
127.0.0.1:7200> hset hash1 key1 12
(integer) 1
// 根据key值获取
127.0.0.1:7200> hget hash1 key1
"12"
127.0.0.1:7200> hset hash1 key2 13 key3 15
(integer) 2
127.0.0.1:7200> hget hash1 key3
"15"
// 获取多个
127.0.0.1:7200> hmget hash1 key1 key2 key3
1) "12"
2) "13"
3) "15"
// 修改值
127.0.0.1:7200> hset hash1 key2 999
(integer) 0
127.0.0.1:7200> hget hash1 key2
"999"
  1. sort set类型 (有序分数集)
    在这里插入图片描述
// 插入
127.0.0.1:7200> zadd zset1 10.1 val1
(integer) 1
127.0.0.1:7200> zadd zset1 11.2 val2
(integer) 1
127.0.0.1:7200> zadd zset1 9.2 val333333333333333
(integer) 1
// 查看元素个数
127.0.0.1:7200> zcard zset1
(integer) 3
// 查看排序 从0到2 
127.0.0.1:7200> zrange zset1 0 2 withscores
1) "val333333333333333"
2) "9.1999999999999993"
3) "val1"
4) "10.1"
5) "val2"
6) "11.199999999999999"
// 查看某个元素的排名
127.0.0.1:7200> zrank zset1 val1
(integer) 1
127.0.0.1:7200> zrank zset1 val2
(integer) 2
127.0.0.1:7200> zrange zset1 0 2 withscores
1) "val333333333333333"
2) "9.1999999999999993"
3) "val1"
4) "10.1"
5) "val2"
6) "11.199999999999999"

// 修改val2值的score值
127.0.0.1:7200> zadd zset1 8.2 val2
(integer) 0
// 排序变化
127.0.0.1:7200> zrange zset1 0 2 withscores
1) "val2"
2) "8.1999999999999993"
3) "val333333333333333"
4) "9.1999999999999993"
5) "val1"
6) "10.1"
127.0.0.1:7200>
// 将val1 与 val2 的score相同, 则按照值的字符前后顺序排序
127.0.0.1:7200> zadd zset1 8.2 val1
(integer) 0
127.0.0.1:7200> zrange zset1 0 2 withscores
1) "val1"
2) "8.1999999999999993"
3) "val2"
4) "8.1999999999999993"
5) "val333333333333333"
6) "9.1999999999999993"
127.0.0.1:7200>
安装PHP的Redis扩展
  1. 服务器环境: Linux/ CentOS7, PHP7.2, 查看PHP的扩展
[root@localhost redis-5.0.5]# php -m
  1. 安装 phpize / php-config 编译工具并查看其位置
[root@localhost redis-5.0.5]# yum install php-devel
......
[root@localhost redis-5.0.5]# which phpize
/usr/bin/phpize
[root@localhost redis-5.0.5]# which php-config
/usr/bin/php-config
  1. 下载PHP Redis扩展
[root@localhost chao]# wget https://github.com/edtechd/phpredis/archive/php7.zip
......
[root@localhost chao]# ls
config  php7.zip  redis-5.0.5
  1. 安装
// 解压
[root@localhost chao]# unzip php7.zip
[root@localhost chao]# cd phpredis-php7/
[root@localhost phpredis-php7]# phpize
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
[root@localhost phpredis-php7]# 

// 配置环境 php-config位置 在上面2中找到
[root@localhost phpredis-php7]# ./configure --with-php-config=/usr/bin/php-config

// 编译安装
[root@localhost phpredis-php7]# make && make install
  1. 配置php.ini
// 查找 php.ini 的位置
[root@localhost phpredis-php7]# php --ini
......
// 编辑 php.ini
[root@localhost phpredis-php7]# vim /etc/php.ini

//增加
extension=redis.so
  1. 确认是否安装成功
[root@localhost phpredis-php7]# php -m
PHP操作Redis

文档地址: https://github.com/phpredis/phpredis

// redis 连接
$redis = new \Redis();
$redis->connect('127.0.0.1', 7200);

// string 操作
$redis->delete('str1');  // 确保操作的key为空
$redis->set('str1','laowang');
$str = $redis->get('str1');

$redis->delete('age');
$redis->set('age',20);
$redis->incr('age');
$redis->decr('age', 2);
$age = $redis->get('age');

// list 操作 队列 先进先出, 实现异步行为(下单)
$redis->delete('list1');
$redis->lPush('list1', "a");
$redis->lPush('list1', "b");
$redis->lPush('list1', "c");
$list = $redis->rPop('list1');

// set类型 操作
$redis->delete('set1');
$redis->sAddArray('set1', array("A", "B", "C", "C"));
$set = $redis->sCard('set1');
$set = $redis->sMembers('sets');  // 以数组形式返回所有的元素

// hash类型操作 适合存储复杂数据
$redis->delete('hash1');
$redis->hSet('hash1', 'name', 'laowang');
$redis->hSet('hash1', 'age', 25);
$redis->hSet('hash1', 'gender', 1);
$hash = $redis->hGet('hash1', 'name');
$hash = $redis->hMGet('hash1', ['name', 'age']); // 以数组形式返回

// sort set类型 操作 (排行榜)
$redis->delete('zset1');
$redis->zAdd('zset1', 100, 'a', 90, 'b', 99, 'd', 60, 'z');
// 0 z, 1 b, 2 d, 3 a
$zset = $redis->zRange('zset1', 0, -1);  // 以数组形式 从低到高获取所有元素

// 0 a, 1 d, 2 b, 3 z
$zset = $redis->zRevRange('zset1', 0, -1); // 以数组形式 从高到低获取所有元素
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!