【Linux基础服务教程】Redis安装和基本使用

一、数据库的类型

  • 关系型数据库RDBMS
  • MySQLOraclePostgreSQL
  • 适用场景:
  • 业务数据的持久化存储
  • 非关系型数据库NoSQL(Not Only SQL)
    • memcachedmongoDBredis
    • 优势: 支持高并发、速度快
      • 没有严格的数据约束规范(数据类型、主键等)
      • key-value键值对的方式进行存储
      • 基于内存进行存储
    • 适用场景:
      • 缓存服务器
      • 存储业务session

二、Redis特性

官网:https://redis.io

  • 开源的、跨平台的
  • key-value存储数据
  • 基于内存存储数据
  • 支持持久化存储数据
    • 两种方式:
      • rdb数据文件*.rdb
      • aof日志
  • 支持事务、主从复制、分片集群
  • 支持多实例
  • 配置简单

三、Redis安装部署

1.安装gcc编译器

[root@master ~]# yum install -y gcc

2.下载Redis

[root@master ~]# wget https://download.redis.io/releases/redis-5.0.14.tar.gz

3.安装Redis

[root@master ~]# tar xf redis-5.0.14.tar.gz
[root@master ~]# cd redis-5.0.14/
[root@master redis-5.0.14]# make
[root@master redis-5.0.14]# make PREFIX=/usr/local/redis install	#指定安装目录

4.准备Redis配置文件

[root@master redis-5.0.14]# mkdir /usr/local/redis/conf
[root@master redis-5.0.14]# cp redis.conf /usr/local/redis/conf

5.配置环境变量

[root@master ~]# vim /etc/profile
export PATH=$PATH:/usr/local/redis/bin

[root@master ~]# source /etc/profile	#让环境变量生效

[root@master ~]# redis-server --version	#测试
Redis server v=5.0.14 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=a8b13b484d1142e5

6.启动Redis

[root@master ~]# redis-server /usr/local/redis/conf/redis.conf	#前台启动

后台启动

[root@master ~]# nohup redis-server /usr/local/redis/conf/redis.conf &
[1] 6899
[root@master ~]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@master ~]# ps -aux | grep redis
root       6899  0.0  0.4 154000  8100 pts/1    Sl   20:14   0:00 redis-server 127.0.0.1:6379

7.加入开机启动项

[root@master ~]# vim /etc/rc.d/rc.local

export PATH=$PATH:/usr/local/redis/bin
redis-server /usr/local/redis/conf/redis.conf

[root@master ~]# chmod 777 /etc/rc.d/rc.local
[root@master ~]# reboot
[root@master ~]# ps -aux | grep redis	#自行重启测试
root        889  0.0  0.4 154000  8092 ?        Sl   20:24   0:00 redis-server 127.0.0.1:6379

8.关闭Redis服务

[root@master ~]# redis-cli shutdown

四、数据库管理操作

1.登录数据库

[root@master ~]# redis-cli
127.0.0.1:6379>

2.数据读写

127.0.0.1:6379> set url 127.0.0.1	#set 键=值
OK
127.0.0.1:6379> set uid 1001	#写入数据
OK

127.0.0.1:6379> get url		#get 键
"127.0.0.1"
127.0.0.1:6379> get uid		#查询数据
"1001"
127.0.0.1:6379> mset uid1 1002 uid2 1003 url1 10.10.10.128		#插入多条数据
OK
127.0.0.1:6379> mget uid uid1 url1	#查询多条数据
1) "1001"
2) "1002"
3) "10.10.10.128"

3.数据删除

127.0.0.1:6379> del uid		#删除数据
(integer) 1
127.0.0.1:6379> del uid1 uid2 url	#删除多条数据
(integer) 3

4.切换数据库

redis默认提供16个数据库,编号从0-15,默认使用0
每个数据库,数据都是独立

127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> select 4
OK

127.0.0.1:6379[3]> set uid 1001	#在3号库中写入数据
OK
127.0.0.1:6379[3]> select 0	#切换0号数据库
OK
127.0.0.1:6379> set uid 1001	#在0中写入同样的数据
OK
127.0.0.1:6379> get uid
"1001"
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> get uid
"1001"

5.数字管理操作

127.0.0.1:6379> set data 10
OK
127.0.0.1:6379> INCR data	#自增长1
(integer) 11
127.0.0.1:6379> get data
"11"
127.0.0.1:6379> INCR data
(integer) 12
127.0.0.1:6379> get data
"12"
127.0.0.1:6379> 
127.0.0.1:6379> DECR data	#自减1
(integer) 11
127.0.0.1:6379> DECR data
(integer) 10
127.0.0.1:6379> get data
"10"

6.事务

127.0.0.1:6379[3]> multi	#开始事务
OK
127.0.0.1:6379[3]> incr uid
QUEUED	#不会直接显示结果
127.0.0.1:6379[3]> incr uid
QUEUED
127.0.0.1:6379[3]> get uid
QUEUED
127.0.0.1:6379[3]> exec		#提交事务
1) (integer) 1002	#最后统一显示结果
2) (integer) 1003
3) "1003"

注意:如果在事务中存在错误操作,不会保存当前事务!

127.0.0.1:6379[3]> multi
OK
127.0.0.1:6379[3]> incr uid
QUEUED
127.0.0.1:6379[3]> 123jdasjdja
(error) ERR unknown command `123jdasjdja`, with args beginning with: 
127.0.0.1:6379[3]> get uid
QUEUED
127.0.0.1:6379[3]> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379[3]> get uid
"1003"

五、通过PHP连接Redis数据库

1.部署PHP环境

[root@master ~]# yum install -y httpd php php-gd php-mysql php-devel

2.创建测试页面

[root@master ~]# vim /var/www/html/index.php

<?php
  $redis = new Redis();
  $redis -> connect("127.0.0.1",6379);
  $redis -> set("name", "Tome");
  $var = $redis -> get("name");
  echo $var;
?>

3.启动httpd服务并测试

[root@master ~]# systemctl start httpd

php1

可以看到并不能正常访问,这是正常的,因为我们的php默认是不能连接到redis

4.为PHP添加连接Redis模块

1.下载模块并解压

[root@master ~]# ls
redis-php-4.1.1.tgz

[root@master ~]# tar xf redis-php-4.1.1.tgz
[root@master ~]# cd redis-4.1.1/
[root@master redis-4.1.1]#

2.安装模块

[root@master redis-4.1.1]# /usr/bin/phpize
Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525
[root@master redis-4.1.1]# ./configure --enable-redis --with-php-config=/usr/bin/php-config
[root@master redis-4.1.1]# make && make install
Installing shared extensions:     /usr/lib64/php/modules/	#安装目录输出信息
[root@master redis-4.1.1]# ls /usr/lib64/php/modules/
curl.so      gd.so    mysqli.so  pdo_mysql.so  pdo_sqlite.so  redis.so    zip.so
fileinfo.so  json.so  mysql.so   pdo.so        phar.so        sqlite3.so	#可以看到多了redis.so的模块

3.在PHP中加载模块

[root@master ~]# vim /etc/php.ini
extension=/usr/lib64/php/modules/redis.so

4.重启httpd服务并验证模块

[root@master ~]# systemctl restart httpd

[root@master ~]# php -m | grep -i redis		#可以使用这个命令查看模块是否加载
redis

php2

可以看到成功加载出来了!