Redis 概述和安装 Redis
Redis 概述
Redis 的出现时间并不长,是 NoSQL 中的一种,基于键-值型的存储,在 2009 年第一次发布Redis。Redis 全称(Remote Dictionary Server)远程字典服务器,而这个字典服务器从本质上来讲,主要是提供数据结构的远程存储功能的,可以理解为 Redis 是一个高级的 K-V 存储和数据结构存储,因为 Redis 除了能够存储 K-V 这种简单的数据之外,还能够存储,列表、字典、hash 表、等对应的数据结构。
Redis 支持主从模式,Redis 能够借助于 Sentinel 工具来监控主从节点,当主节点发生故障时,会自己提升另外一个从节点成为新的主节点。
Redis 官网:https://redis.io/download
1、Redis 所支持的数据类型
支持存储的数据类型有、String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog。
2、Redis 性能评估
(1)、100 万较小的键存储字符串,大概消耗 100M 内存
(2)、由于 Redis 是单线程,如果服务器主机上有多个 CPU,只有一个能够使用,但并不意味着 CPU 会成为瓶颈,因为 Redis 是一个比较简单的 K-V 数据存储,CPU 通常不会成为瓶颈的
(3)、在常见的 linux 服务器上,500K(50 万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发
3、Redis 与 Memcache 对比
(1)、Memcache 只能使用内存来缓存对象。而 Redis 除了可以使用内存来缓存对像,还可以周期性的将数据保存到磁盘上,对数据进行永久存储。当服务器突然断电或死机后, redis 基于磁盘中的数据进行恢复。
(2)、Redis 是单线程服务器,只有一个线程来响应所有的请求。Memcache 是多线程的
(3)、Redis 支持更多的数据类型
安装 Redis
1. 安装 Remi repository 源
扩展:Remi repository 是什么源?
Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供维护。有了这个源之后,使用 YUM 安装或更新 PHP、MySQL、phpMyAdmin 等服务器相关程序的时候就非常方便了。但与此同时,Remi 源也提供了目前最新版本的 Redis,可以通该源使用 YUM 安装目前最新版本的 Redis。
2. 在安装 Remi repository 源时,需要依赖 epel 源,因此先安装 epel 源
[root@centos60 ~]# yum -y install epel-release
3. 安装 remi repository 源
[root@centos60 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
4. 使用 remi repository 源安装 Redis
[root@centos60 ~]# yum --enablerepo=remi install -y redis #选用 remi 源进行安装redis
注:--enablerepo=remi 指定某个yum源来进行安装,前提是有remi源
5. 查看 Redis 版本
[root@centos60 ~]# redis-cli --version
redis-cli 6.0.9
6. 启动 Redis
[root@centos60 ~]# systemctl start redis
[root@centos60 ~]# netstat -anput | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 39030/redis-server
注:redis 默认监听 6379 端口
Redis 基本操作
Redis 配置文件参数说明
Redis 配置文件存放路径:/etc/redis.conf
[root@centos60 ~]# vim /etc/redis.conf
0.0.0.0 表示所有的IP地址.
protected-mode yes #protected-mode 参数是为了禁止外网访问 redis,如果启用了,则只能够通过 lookback ip(97.0.0.1)访问 Redis。
port 6379 #默认监听端口:6379。
tcp-backlog 511 #指定 tcp-backlog 的长度。backlog 是一个等待队列。当有大量请求需要redis 处理时,redist 有可能处理不过来,需要等待的请求队列会通过 backlog 来缓存。backlog 的数量决定了可以缓存的队列数。
unixsocket /tmp/redis.sock #指定使用 sock 文件通信及 sock 文件位置,如果服务端和客户都在同一台主机上,建议打开此项,基于 sock 方式通信可以直接在内存中交换,数据不用再经过 TCP/TP协议栈进行封装、拆封。
unixsocketperm 700 #定义 sock 文件的访问权限。
timeout 0 #表示当客户端连接成功后,空闲(非活跃、或没有任何数据交互)多长时间则连接超时,0 表示不启用此功能。
tcp-keepalive 300 #定义是否启用 tcp-keepalive 功能。长链接功能。300秒
daemonize no #如果需要在后台运行,把该项改为 yes。如果使用 redis 服务脚本启动,即使daemonize 为 no,也会运行为一个守护进程。如果是源码编译安装的,则为脚本启动了,此项改为yes
supervised no #定义是 upstart 还是 systemd 接管 redis 进程。默认无监督互动,不需要修改。
loglevel notice #定义日志级别。
logfile /var/log/redis/redis.log #定义日志文件。
databases 16 #定义 redis 默认有多少个 databases,但是在分布式中,只能使用一个。
# masterauth <master-password> #如果连接主数据库时需要密码验证,这里指定密码。默认不启用。
# 限制同时连接的客户端数量。超过数量将不再接受新的请求并返回错误信息。
# maxclients 10000 #设置同时连接 redis 客户端的最大数量。
登录 Redis