(1).Redis概述

  Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value(键值型)数据库(非关系型数据库),并提供多种语言的API。

  Redis是一个高性能的Key-Value数据库。它的出现很大程度补偿来Memcached这类Key-Value型存储的不足,在部分场合下可以对关系型数据库起到很好的补充作用。它提供来Java、C/C++、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客户端,使用方便。

  Redis支持主从同步,Redis能够借助于Sentinel(哨兵,Redis自带的)工具来监控主从节点,当主节点发生故障时,会自己提升另外一个从节点成为新的主节点。

 1)支持的数据类型

  和Memcached类似,但它支持存储的Value类型相对更多,包括String(字符串)、List(列表)、Sets(集合)、Sorted Sets(有序集合)和Hash(哈希类型、关联数组)、Bitmaps(位图)和HyperLoglog。

 2)性能

  100万较小的键存储字符串,大概消耗100M内存;

  由于Redis是单线程,如果服务器主机上有多个CPU,只有一个能够使用,但并不意味着CPU会成为瓶颈,因为Redis是一个比较简单的K-V数据存储,CPU通常不会成为瓶颈的;

  在常见的linux服务器上,500K(50万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发.

 3)Redis与Memcache对比

  Memcache只能使用内存来缓存对象。而Redis除了可以使用内存来缓存对像,还可以周期性的将数据保存到磁盘上,对数据进行永久存储。当服务器突然断电或死机后, redis基于磁盘中的数据进行恢复;

  Redis是单线程服务器,只有一个线程来响应所有的请求。Memcache是多线程的;

  Redis支持更多的数据类型。

(2).安装

  yum安装redis时,建议使用Remi repository源。因为Remi源提供了目前最新版本的Redis,可以通该源使用YUM安装目前最新版本的Redis。另外还提供了PHP和MySQL的最新yum源,以及相关服务程序。

 1)Remi repository源依赖于epel源,因此需要先安装epel源

  1. [root@youxi1 ~]# yum -y install epel-release

 2)安装Remi repository源

  1. [root@youxi1 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  2. [root@youxi1 ~]# ls /etc/yum.repos.d/  //下载完成后会出现许多remi的yum源,这里要用到的是remi.repo这个源
  3. CentOS-Base.repo CentOS-Sources.repo remi-glpi92.repo remi-php70.repo remi-safe.repo
  4. CentOS-CR.repo CentOS-Vault.repo remi-glpi93.repo remi-php71.repo
  5. CentOS-Debuginfo.repo epel.repo remi-glpi94.repo remi-php72.repo
  6. CentOS-fasttrack.repo epel-testing.repo remi-modular.repo remi-php73.repo
  7. CentOS-Media.repo remi-glpi91.repo remi-php54.repo remi.repo

 3)使用指定的yum源安装Redis

  1. [root@youxi1 ~]# yum --enablerepo=remi install -y redis  //--enablerepo指定yum源
  2. [root@youxi1 ~]# redis-cli --version  //安装完成后使用命令查看一下版本
  3. redis-cli 5.0.5

  注意:remi源安装完成后,默认为不启动,在需求使用remi repository源安装程序时,需求--enablerepo=remi选项指定使用remi repository源是可以被使用的,然后进行安装。

 4)启动Redis并设置开机自启

  1. [root@youxi1 ~]# systemctl start redis
  2. [root@youxi1 ~]# systemctl enable redis
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

  注意:Redis的端口号是6379

(3).配置文件信息

  Linux下,Redis的配置文件存放在/etc/目录下的redis.conf。以下列出来可能会用到的参数:

  1. //第69行,Redis监听的地址
  2. bind 127.0.0.1
  3. //第88行,安全模式,是否禁止外网访问Redis,yes表示启用,只能通过本地访问
  4. protected-mode yes
  5. //第92行,监听的端口号
  6. port 6379
  7. /*第101行,指定tcp-backlog长度。tcp-backlog是一个等待队列。
  8. * 当大量请求需要Redis处理时,需要等待的请求队列会通过backlog来缓存。
  9. * backlog的数量决定来可以缓存的队列数
  10. */
  11. tcp-backlog 511
  12. //第109行,指定使用sock文件通信以及sock文件位置。如果服务端和客户端在同一台主机上,建议打开。sock方式通信可以直接在内存中交换,不经过TCP/IP协议栈进行封装、拆封
  13. # unixsocket /tmp/redis.sock
  14. //第110行,定义sock文件的权限
  15. # unixsocketperm 700
  16. //第113行,表示客户端连接成功后,空闲多长时间超时(非活跃,没有数据交互)。0表示不开启此功能
  17. timeout 0
  18. //第130行,维持长链接的时间,单位秒
  19. tcp-keepalive 300
  20. //第136行,是否在后台运行守护进程。如果使用redis服务脚本启动,即使为no,也会运行一个守护进程。一般设置yes
  21. daemonize no
  22. //第147行,是由upstart还是systemd接管redis进程。默认无监督互动,不需要修改。
  23. supervised no
  24. //第158行,pid文件地址
  25. pidfile /var/run/redis_6379.pid
  26. //第166行,日志级别
  27. loglevel notice
  28. //第174行,日志文件位置
  29. logfile /var/log/redis/redis.log
  30. //第186行,默认由多少个数据库。但是在分布式中,只能有一个
  31. databases 16
  32.  
  33. /*第218到220行,快照存储策略,存到磁盘的持久化策略
  34. *第一个数字是单位时间,单位为秒;第二个数字是键值发生变化的次数
  35. * 例如第一个,900秒内至少发生1次键值变化,则做一次快照(持久化)
  36. * 第二个就是,300秒内至少发生10次键值变化,则做一次快照(持久化)
  37. * 所有条件是并列关系,根据不同的键值变化选择使用规则
  38. */
  39. save 900 1
  40. save 300 10
  41. save 60 10000
  42. //第235行,在进行快照备份时,一旦发生错误是否停止,默认yes即可
  43. stop-writes-on-bgsave-error yes
  44. //第241行,指定RDB文件是否压缩。yes表示压缩,会消耗CPU资源
  45. rdbcompression yes
  46. /*第250行,是否对RDB文件做校验码检测。
  47. *此项定义在redis启动时加载RDB文件是否对文件检查校验码,在redis生成RDB文件是会生成校验信息,在redis再次启动或装载RDB文件时,是否检测校验信息。
  48. *如果检测的情况下会消耗时间,会导致redis启动时慢,但是能够判断RDB文件是否产生错误。
  49. */
  50. rdbchecksum yes
  51. //第253行,RDB文件名称
  52. dbfilename dump.rdb
  53. //第263行,RDB文件存放的路径
  54. dir /var/lib/redis
  55.  
  56. //第286行,定义Master服务器的IP和端口,主从复制的配置信息
  57. # replicaof <masterip> <masterport>
  58. //第293行,定义Master服务器的密码,主从复制的配置信息
  59. # masterauth <master-password>
  60. //第308行,当从端在主从复制过程中与主端断开连接,yes表示继续提供服务,即使数据可能不是最新的;no表示对请求返回错误信息
  61. replica-serve-stale-data yes
  62. //第324行,从端只读
  63. replica-read-only yes
  64. //第355行,默认不使用diskless(无磁盘)同步方式
  65. repl-diskless-sync no
  66. //第367行,diskless(无磁盘)方式进行数据传递之前会有一个时间的延迟,以便从端能够进行到待传送的目标队列中,默认5秒
  67. repl-diskless-sync-delay 5
  68. //第373行,从端向主端发送ping的时间间隔,默认10秒
  69. # repl-ping-replica-period 10
  70. //第385行,设置超时时间
  71. # repl-timeout 60
  72. /*第400行,是否启用TCP_NODELAY。
  73. * 如果启用则会使用少量的TCP包和带宽去进行数据传输到从端,速度较慢;
  74. * 如果不启用则使用较多的带宽进行数据传输,速度较快。
  75. */
  76. repl-disable-tcp-nodelay no
  77. /*第413行,设置backlog的大小。backlog是一个缓冲区,在从端失联时存放要同步到从端的数据。
  78. * 因此当从端重连时,一般是不需要完全同步的。backlog越大,从端可以失联的时间就越长(相对来说)
  79. */
  80. # repl-backlog-size 1mb
  81. //第426行,一段时间后,从端还没有连上master,那么backlog(缓冲区)的内存将被释放。0表示永不释放,默认3600秒
  82. # repl-backlog-ttl 3600
  83. //第441行,从端的优先级设置,数字越小优先级越高。主端故障会根据优先级高的从端来进行恢复。如果设置的是0,那么该从端永远不会被选中
  84. replica-priority 100
  85. //第457到458行,当主端的可用从端小于3个或网路延迟岛屿10秒时,主端拒绝接收用户的写请求。
  86. # min-replicas-to-write 3
  87. # min-replicas-max-lag 10
  88.  
  89. //第507行,指定认证密码,默认不启动
  90. # requirepass foobared
  91.  
  92. //第539行,同时连接redis的最大数量
  93. # maxclients 10000

  特别注意:第69行的bind,第88行的protected-mode,第136行的daemonize,第539行的maxclients,还有主从复制的所有配置参数。

(4).redis的简单使用

  最最简单的使用:redis-cli -h [IP地址] -p [端口号]。如果是连接本地,-h和-p都可以省略。

 1)Reids字符串操作

  键的命名规则:可以使用ASCII字符;键的长度不要过长,键的长度越长则消耗的空间越多;在同一个库中(名称空间),键的名称不得重复,如果复制键的名称,实际上是修改键中的值;在不同的库中(名称空间),键的多种名称可以重复;键可以实现自动过期。

  1. [root@youxi1 ~]# redis-cli
  2. 127.0.0.1:6379> set system centos  //创建键值
  3. OK
  4. 127.0.0.1:6379> get system  //获取键值
  5. "centos"
  6. 127.0.0.1:6379> exit
  7. [root@youxi1 ~]# systemctl restart redis  //重启
  8. [root@youxi1 ~]# redis-cli
  9. 127.0.0.1:6379> get system  //可以看到键值是存在的
  10. "centos"
  11. 127.0.0.1:6379> set name "youxi" EX 10  //如这般设置,则表示该键值值存在10秒
  12. OK
  13. 127.0.0.1:6379> get name  //10秒过后再次查看,这就是一个临时键值
  14. (nil)

 2)如果开启认证功能

  首先修改配置文件,开启认证功能

  1. [root@youxi1 ~]# vim /etc/redis.conf
  2. requirepass 123456  //在第507行,去除注释,设置认证密码
  3. [root@youxi1 ~]# systemctl restart redis

  此时再次使用redis

  1. [root@youxi1 ~]# redis-cli
  2. 127.0.0.1:6379> get system  //没有认证时,会报错
  3. (error) NOAUTH Authentication required.
  4. 127.0.0.1:6379> auth 123456  //认证
  5. OK
  6. 127.0.0.1:6379> get system  //认证后,再次获取键值,成功
  7. "centos"

(5).配置持久化

  Redis工作时所有数据集都是存储于内存中的。如果Redis崩溃或断电会导致所有数据丢失,所以Redis提供了持久化功能来保证数据的可靠性。Redis持久化有两种实现方法:RDB和AOF。

  RDB: 存储为二进制格式的数据文件,是默认启动的持久化机制;按事先定制的策略,周期性地将数据保存至磁盘。

  AOF:Append Only File类似于MySQL的二进制日志,记录每一次redis的写操作命令,以顺序IO方式附加在指定文件的尾部,是使用追加方式实现的,这也叫做一种附加日志类型的持久化机制。由于每一次的操作都记录,则会随着时间长而增大文件的容量,并且有些记录的命令是多余的。但是redis进程能够自动的去扫描这个对应的AOF文件,把其中一些冗余的操作给合并一个,以实现将来一次性把数据恢复。

  RDB的配置其实上面已经说明过了,我这里再复制一下,如下。总共就6个配置点。

  1. /*
  2. * 第218到220行,快照存储策略,存到磁盘的持久化策略
  3. *第一个数字是单位时间,单位为秒;第二个数字是键值发生变化的次数
  4. * 例如第一个,900秒内至少发生1次键值变化,则做一次快照(持久化)
  5. * 第二个就是,300秒内至少发生10次键值变化,则做一次快照(持久化)
  6. * 所有条件是并列关系,根据不同的键值变化选择使用规则
  7. */
  8. save 900 1
  9. save 300 10
  10. save 60 10000
  11. //第235行,在进行快照备份时,一旦发生错误是否停止,默认yes即可
  12. stop-writes-on-bgsave-error yes
  13. //第241行,指定RDB文件是否压缩。yes表示压缩,会消耗CPU资源
  14. rdbcompression yes
  15. /*第250行,是否对RDB文件做校验码检测。
  16. *此项定义在redis启动时加载RDB文件是否对文件检查校验码,在redis生成RDB文件是会生成校验信息,在redis再次启动或装载RDB文件时,是否检测校验信息。
  17. *如果检测的情况下会消耗时间,会导致redis启动时慢,但是能够判断RDB文件是否产生错误。
  18. */
  19. rdbchecksum yes
  20. //第253行,RDB文件名称
  21. dbfilename dump.rdb
  22. //第263行,RDB文件存放的路径
  23. dir /var/lib/redis

  AOF的配置从第679行开始,如果需要可以自己看一下。

CentOS7下yum安装Redis的更多相关文章

  1. CentOS7下Yum安装Redis并配置主从

    原文 :https://blog.51cto.com/11134648/2158209 Redis简介: Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.它通常被 ...

  2. centos7 下 yum 安装Nginx

    centos7 下 yum 安装和配置 Nginx 添加yum源 Nginx不在默认的yum源中,可以使用epel或者官网的yum源,这里使用官网的yum源 rpm -ivh http://nginx ...

  3. 在CentOs7上yum安装redis

    在开始安装步骤之前,先把我的CentOs和redis版本号列出来: # 系统/软件 版本号 1 CentOS7 CentOS Linux release 7.2.1511 (Core) 2 redis ...

  4. centos6.3下yum安装redis

    我得是centos 6.3,如果直接用yum安装redis,报错,如下: [root@CentOS6 etc]# yum install redis Loaded plugins: fastestmi ...

  5. CentOS7 下 yum 安装 Docker CE

    前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker 官网有安装步骤,本文只是记录 ...

  6. Linux下yum安装Redis

    检验是否有yum源: [root@localhost ~]# yum install redis 显示没有软件包Redis,安装epel仓库(提供一些RHEL/CentOS默认不提供的软件包). [r ...

  7. CentOS7.6 linux下yum安装redis以及使用

    一.安装redis 1.检查是否有redis yum 源 1 yum install redis 2.下载fedora的epel仓库 1 yum install epel-release 3.安装re ...

  8. CentOS7 linux下yum安装redis以及使用

    1.安装redis数据库 yum install redis 2.下载fedora的epel仓库 yum install epel-release 3.启动redis服务 systemctl star ...

  9. Centos7下yum安装kubernetes

    一.前言    Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上 ...

随机推荐

  1. NET Framework 的泛型

    NET Framework 的泛型 泛型是具有占位符(类型参数)的类.结构.接口和方法,这些占位符是类.结构.接口和方法所存储或使用的一个或多个类型的占位符.泛型集合类可以将类型参数用作它所存储的对象 ...

  2. linux中service模板

    [Unit] Description=描述 After=syslog.target network.target remote-fs.target nss-lookup.target [Service ...

  3. nachos3.4 threads管理 (c++)

    Main.cc //引导代码初始化操作系统内核.允许直接调用内部操作系统功能,简化调试和测试.在实践中,bootstrap代码只会初始化数据结构, //并启动一个用户程序来打印登录提示.//许多内容只 ...

  4. 3种方法实现CSS隐藏滚动条并可以滚动内容

    隐藏滚动条的同时还需要支持滚动,我们经常在前端开发中遇到这种情况,最容易想到的是加一个iscroll插件,但其 实现在CSS也可以实现这个功能,我已经在很多地方使用了,下面一起看看这三种方法. 方法1 ...

  5. 【CSP-S 2019】【洛谷P5665】划分【单调队列dp】

    前言 \(csp\)时发现自己做过类似这道题的题目 : P4954 [USACO09Open] Tower of Hay 干草塔 然后回忆了差不多\(15min\)才想出来... 然后就敲了\(88p ...

  6. learning java AWT 布局管理器 GridLayout

    GridLayout布局管理器将容器分割成纵横线分格的网格,每个网格所占的区域大小相同. import java.awt.*; public class GridLayoutTest { public ...

  7. 地区sql

    /*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...

  8. python 链表的反转

    code #!/usr/bin/python # -*- coding: utf- -*- class ListNode: def __init__(self,x): self.val=x self. ...

  9. SpringData 简单的条件查询

    今天在写springdata条件查询时,JpaRepository的findOne方法,不知道是因为版本的原因还是其他原因,总是查询不出来数据 //springdata jpa版本为1.5.15,配置 ...

  10. 使用composer下载依赖包下载失败的解决方法

    下载好的composer默认的下载地址是国外的,在下载的过程中网络不好或者可能被墙,将下载的地址换成国内的地址即可 有两种方式启用本镜像服务: 系统全局配置: 即将配置信息添加到 Composer 的 ...