2.Redis概述安装
redis特点:
1.Redis是一个开源的key-value存储系统。
2.和Memcached类似,它支持存储的velue类型相对更多,包括String(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合) 和hash(哈希类型)。
3.这些数据类型都支持push/pop、add/remove 及取交集、并集、差集及更丰富的操作,而且这些操作都是原子性的。
4.在此基础上,,Redis支持各种不同方式的排序。
5.与Memcached一样,为了保证效率,数据都缓存在内存中。
6.区别的是Redis会周期型的把更新的数据写入磁盘或者把修改的操作写入追加的记录文件中。
7.并且在此基础上实现了master-slave(主从)同步。
2.1应用场景
2.1.1 配合关系型数据库做高速缓存
1.高频次,热门访问的数据,降低数据库的IO
2.分布式架构,做session的共享
2.1.2多样的数据结构存储持久化数据
例如:
2.2 Redis安装
1.Redis官网 http://redis.io
Redis中文官网 http://redis.cn
2.安装步骤
1.下载安装包
2.准备工作 : 下载安装最新版的gcc编译器
安装c语言编译环境
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
测试gcc
gcc -version
3.解压命令:tar -zxvf redis-6.2.1.tar.gz
4.解压完后进入目录 : cd redis-6.2.1
5.在redis-6.2.1 目录下再执行 make 命令(只是编译好了)
6.如果没有准备好c语言编译环境,make会报错 -Jemalloc/jemalloc.h:没有那个文件 (解决:运行make distclean)
7.跳过make test 继续执行: make intall (安装)
3.查看默认安装目录:
1.redis-banchmark : 性能测试工具,可以在自己本子上运行,测试自己本子的性能如何
2.redis-check-aof : 修复有问题的AOF文件
3.redis-check-dump:修复有问题的dump.rdb文件
4.redis-sentinel : Redis集群使用
5.redis-server : Redis 服务启动命令
6.redis-cli :客户端,操作入口
4.前台启动(不推荐)
前台启动,命令行窗口不能关闭,否则服务停止
5.后台启动(推荐)
1.备份redis.conf
拷贝一份redis.conf到其他目录 cp 下载/redis/redis-6.2.6/redis.conf /etc
2.后台启动设置daemonize no 改成 yes
修改redis.conf(128行)文件中的daemonize no 改成 yes ,让服务在后台启动
3.Redis启动
hadoop@ubuntu:/usr/local/bin$ redis-server /etc/redis.conf
4.用客户端访问:redis-cli
5.测试验证 : ping
6.Redis关闭
1.单实例关闭 : redis-cli shutdown
2.也可以进入终端后关闭
3.找到进程号 执行kill命令
ps -ef | grep redis 查看带有redis的进程
kill -9 8955 杀掉进程号为8955的进程
6.Redis相关知识介绍
1.端口 6379 -> Merz(人名)
2.默认16个数据库,类似数组下标从0开始,初始默认使用0号库
3.使用命令select dbid 来切换数据库,如:select 8
4.统一密码管理,所有的库使用同样的密码。
5.dbsize 查看当前数据库key的数量
6.flushdb 清空当前库
7.flushall 通杀全部库
Redis是单线程+多路IO复用技术
多路复用是指 使用一个线程来检查多个文件描述符(Socket)的就绪状态。比如调用select和poll函数,传入多个文件描述符,如果有一个描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作,可以在同一个线程中执行,也可以启动线程执行(比如使用线程池)
串行 vs 多线程+锁(memcached) vs 单线程+ 多路IO复用(redis)
总结:redis与memcached三点不同:
1.redis支持多数据类型,如string、list、set…,memcached只支持string类型
2.redis支持持久化,memcached不支持
3.redis是由单线程 + 多路IO复用实现的,memcached由多线程 + 锁 实现的