1.redis是什么?
基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis是一个key-value存储系统。
它支持存储的value类型:string(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)和hash(哈希类型)。
这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,
与memcached一样,数据都是缓存在内存中。。
redis会周期性的把更新的数据写入磁盘(rdb)或者把修改操作写入追加的记录文件(aof),
并且在此基础上实现了master-slave(主从)同步。
2.为什么要用redis?
(1)速度快
因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)。
(2)支持丰富数据类型
支持string,list,set,sorted set,hash。
(3)支持事务,操作都是原子性
所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。
(4)丰富的特性
可用于缓存,消息,按key设置过期时间,过期后将会自动删除。
3.memcache与redis的区别都有哪些?
(1)存储方式
Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。
Redis有部份存在硬盘上,这样能保证数据的持久性。
(2)数据支持类型
Memcache对数据类型支持相对简单。
Redis有复杂的数据类型。
(3)使用底层模型不同
它们之间底层实现方式以及与客户端之间通信的应用协议不一样。
Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
(4)value大小
redis最大可以达到1GB,而memcache只有1MB
4.redis适合的场景
(1)会话缓存(Session Cache)
最常用的一种使用Redis的情景是会话缓存(session cache)。
用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。
(2)全页缓存(FPC)
Redis还提供很简便的FPC平台。即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降。
(3)队列
Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。
(4)排行榜/计数器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)。
(5)发布/订阅
5.Linux中安装redis的具体过程如下:
(1)搭建实验环境
三台rhel7.3的虚拟机+一台物理机
之所以开这么多台,是为了后面的集群使用
主机信息 | 主机功能 |
---|---|
server1(172.25.2.1) | redis主服务器 |
server2(172.25.2.2) | redis从服务器1 |
server3(172.25.2.3) | redis从服务器2 |
真机(172.25.2.250) | 下载资源和共享yum源 |
在真机中创建三个快照,为了确保实验环境干干净净
用真机连接三个虚拟机
到这里基本的实验环境已经搭建完毕,接下来我们部署redis
每个节点配置yum、安装gcc(如果已安装,请略过)
(2)从真机给redis的三个节点都传送redis的安装包
获取redis包(目前使用5.0以上版本,为了后面的redis cluster)
(3)在server1(主服务器)上面进行编译安装redis,进行基本的配置
解压,进入解压后的目录
开启编译安装
进行编译与安装(编译成功后会出现新的redis脚本,eg:redis-cli),进入utils/下面,开启redis
查看进程
发现此时仅仅监听本机
修改redis的配置文件
改为监听所有
重新启动redis,再次查看
注意:第一次使用脚本方式启动redis之后才可以使用systemd的方式来控制redis服务
使用redis-cli (redis命令行工具)进行测试
发现可以写入数据,查看数据,删除数据
注意:这里的数据是key-value形式,如果是同一个key的value,会进行覆盖
(4)在server2(从服务器)上面进行编译安装redis,进行基本的配置
解压,进入解压目录
开始编译和安装
开启redis
编辑配置文件,设置server2是从服务器,它的主服务器是server1
注意redis的监听端口是6379
重启服务
查看端口
(5)测试
在server1上写入数据并且查看
在server2上查看数据,可以看出实现了基本的主从复制,但是不能删除,没有权限
总结:也可以看出redis的主从同步比mysql简单的多
6.什么是主从复制?
redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),
主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,
并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
从数据库的数据是以自己的主数据库为标准的