Redis6

二)Redis概述和安装

2.1)Redis概述

Redis是一个开源的key-value存储系统:

  • Redis支持存储的value类型包括:string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型);这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的;在此基础上,Redis还支持各种不同方式的排序;
  • Redis为了保证效率,数据都是缓存在内存中;但会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

2.1.1)应用场景

2.1.1.1)配合关系型数据库做高速缓存

  • 高频次,热门访问的数据,降低数据库IO
  • 分布式架构,做session共享

2.1.1.2)多样的数据结构存储持久化数据

redis 嵌入式 移植 redis 嵌入式版本_单线程

2.2)Redis安装

Redis官网:Redis Redis中文官网:CRUG网站

如下图,进行下载:

redis 嵌入式 移植 redis 嵌入式版本_redis 嵌入式 移植_02

上传至Linux系统中

2.2.1)安装步骤

准备工作:下载安装最新版的gcc编译器

进入Linux系统的Root用户,安装gcc 编译环境


yum install gcc


安装完成后输入下列命令进行检验


gcc --version


解压 redis压缩包


tar -zxvf redis-6.2.6.tar.gz


进入解压后的 redis-6.2.6文件,输入 make 命令进行编译

当看到 'make test' 后,再执行命令:


make install


成功安装后,在 /usr/local/bin 目录下可以看到 Redis 的相关服务

redis 嵌入式 移植 redis 嵌入式版本_redis 嵌入式 移植_03

相应模块用途如下:

  • redis-benchmark:性能测试工具,可以在自己环境运行,看看自己服务器性能如何
  • redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
  • redis-check-dump:修复有问题的dump.rdb文件
  • redis-sentinel:Redis集群使用
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作入口

2.2.2)前台启动(不推荐)

前台启动,命令行窗口不能关闭,否则服务器停止,命令启动


redis-server


redis 嵌入式 移植 redis 嵌入式版本_redis 嵌入式 移植_04

 2.2.3)后台启动(推荐)

修改redis目录下的配置文件 redis.conf,将daemonize no改成yes,如下图:

redis 嵌入式 移植 redis 嵌入式版本_redis 嵌入式 移植_05

进入 /usr/local/bin 目录下,执行命令即可启动 redis 服务


redis-server /root/redis/redis-6.2.6/redis.conf


启动及验证如下图:

redis 嵌入式 移植 redis 嵌入式版本_redis_06

 2.2.4)Redis关闭

单实例关闭:


redis-cli shutdown


也可以进入终端后再关闭,如下图:

redis 嵌入式 移植 redis 嵌入式版本_redis 嵌入式 移植_07

 也可以直接根据进程号,kill -9 + pid号

2.2.5)Redis介绍相关知识

  • 默认16个数据库,类似数组下标从0开始,初始默认使用0号库
  • 使用命令 select <dbid>来切换数据库。如: select 8
  • 统一密码管理,所有库同样密码
  • dbsize查看当前数据库的key的数量
  • flushdb清空当前库
  • flushall通杀全部库

2.2.5.1)多路复用

指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)

串行 vs 多线程+锁(memcached) vs 单线程+多路IO复用(Redis)

(与Memcache三点不同: Redis 支持多数据类型,支持持久化,单线程+多路IO复用)

单线程+多路IO复用(Redis)说明:

redis 嵌入式 移植 redis 嵌入式版本_Redis_08

买票的人在不确定黄牛是否可以买到票时,无需等待,继续做其他事,直到黄牛买到票后返回给他,体现了多路IO复用的思路,而黄牛与火车站是一对一的关系,体现了单线程