Redis
1、概念
-
Redis:REmote DIctionary Server(远程字典服务器)
完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,也被称为数据结构服务器
-
特点:
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
-
作用:
内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
模拟类似于HttpSession这种需要设定过期时间的功能
发布、订阅消息系统
定时器、计数器
2、Redis安装
-
安装Linux虚拟机
-
开启CPU虚拟化(BIOS中操作,百度教程)
-
下载安装VirtualBoxwww.virtualbox.org
-
下载安装Vagrant
- vagrant官方镜像仓库https://app.vagrantup.com/boxes/search
- vagrant下载https://www.vagrantup.com/downloads
- 安装完成后在cmd中输入vagrant验证
-
打开Windows cmd,运行Vagrant init centos/7,即可初始化一个centos7系统
-
初始化完成后在C:\Users\29518下出现Vagrantfile文件
-
运行vagrant up即可启动虚拟机,系统root用户的密码是vagrant
-
vagrant其他常用命令
- vagrant ssh:在Windows下cmd中使用该命令自动使用vagrant用户连接虚拟机。
-
默认虚拟机IP地址不是固定IP,开发不方便。
-
传统解决方式:
端口转发
修改虚拟机网关
-
修改Vagrantfile
config.vm.network “private_network”, ip: “192.168.56.10” 此处IP使用cmd输入ipconfig查看,最后两位需要更改。
修改完成后使用 vagront reload重新启动虚拟机。
使用ping命令查看是否互通
-
-
使用su root切换root用户,密码默认vagrant
-
注意:VirtualBox会与红蜘蛛、360、净网大师有冲突,需要卸载这些软件然后重启电脑。
-
-
安装Docker
-
虚拟化容器技术。基于镜像,可以秒级启动各种容器,每种容器都是一个完整的运行环境,容器之间互相隔离。docker下载各种服务镜像的网站https://hub.docker.com/
-
进入docker官网的安装文档按照步骤安装https://docs.docker.com/engine/install/centos/
-
启动docker
sudo systemctl start docker
-
开机自启动
sudo systemctl enable docker
-
查看镜像
sudo docker images
-
docker配置镜像加速
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://sr04wavx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
-
-
Docker中安装Redis
-
下载镜像文件
sudo docker pull redis
默认下载最新 -
创建实例并启动
mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf docker run -p 6379:6379 --name redis \ -v /mydata/redis/data:/data \ -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf
-
参数说明
- 将容器6379端口映射到主机6379端口,–name即给容器起名。
- 将容器中各种文件夹挂载到主机Linux文件夹下,后面修改配置文件不需要进入容器内部对应文件夹直接在主机Linux下对应目录更改(类似于快捷方式)。冒号前面是主机Linux对应目录,冒号后面对应容器中对应目录。
- 初始化root用户密码。
-
docker ps
查看正在运行的容器,每个运行的容器相当于一个Linux。(注意:使用sudo) -
查看镜像
sudo docker images
-
docker start redis
运行容器 -
修改配置文件redis.conf,加入
appendonly yes
,持久化操作,即重启Redis后存储的键值对也能保存。 -
docker exec -it redis redis-cli
执行redis-cli连接,即进入redis操作。 -
安装redis可视化界面Redis Desktop Manager
-
docker update redis --restart=always 设置redis镜像自动启动
-
3、基础知识
-
单进程
- 单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率。
- epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
-
数据库数量
- 默认16个数据库,类似数组下表从零开始,初始默认使用零号库
- 设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id databases 16
-
常用命令
- select:命令切换数据库
- dbsize:查看当前数据库的key的数量
- flushdb:清空当前库
- Flushall:通杀全部库
-
统一密码管理:16个库都是同样密码
-
Redis索引都是从零开始,默认端口是6379