redis总结1-Redis简介、安装、集群

来源:互联网 发布:多目标 优化 编辑:程序博客网 时间:2024/05/19 19:44

redis总结1-Redis简介、安装、集群

redis总结2-Redis六种数据类型命令总结(附命令实例)

redis总结3-持久化rdb,aof,运维命令,Sentinel监控

redis总结4-KEY设计技巧,常见问题

一.简介

1.1 NoSQL简介

1.1.1 定义

NoSQL(Not Only SQL),意为反SQL运动,是一项合新的数据库革命性运动,非关系型的数据库.
NoSQL是以key-value形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准(insert, delete,select)、ACID属性(事务处理)、表结构等等,这类数据库主要有以下特点:非关系型的、分布式的、开源的、水平可扩展的.
支持事务比较简单(不能满足现在的需求)

1.1.2 NoSQL特点

1.处理超大量的数据
2.运行在便宜的PC服务器集群上
3.击碎了性能瓶劲(性能高,无须优化)

1.1.3 NoSQL适用场景

1.对数据高并发读写(传统数据库上万次的写,硬盘I/O就会有问题)
2.对海量数据的高效率存储和访问(fielfeed:一个月有2.5亿用户动态)
3.对数据的高可扩展性和高可用性(nosql做分布式,很简单。没有固定的表结构,迭代开发时)

1.2 Redis简介

1.2.1 简介

redis是开源,BSD许可,高级的key-value存储系统.
可以用来存储字符串,哈希结构,链表,集合,因此,常用来提供数据结构服务.

为了保证效率,数据都是缓存在内存中,它也可以(方式一)周期性的把更新的数据写入磁盘或者(方式二)把修改操作写入追加的记录文件(相当于log文件)。

Redis提供的API语言包括:C、C++、C#、Clojure、Common Lisp、Erlang、Haskell、Java、Javascript、Lua、Objective-C、Perl、PHP、Python、Ruby Scala、Go、Tcl

1.2.2 Redis具体适用场合

1.取最新N个数据的操作
2.排行榜应用,取TOP N操作
3.需要精确设定过期时间的应用
4.计数器应用
5.Uniq操作,获取某段时间所有数据排重值
6.实时系统,反垃圾系统
7.Pub/Sub构建实时消息系统
8.构建队列系统
9.缓存

1.2.3 redis和memcached相比

1: redis可以用来做存储(storge), 而memccached是用来做缓存(cache)
这个特点主要因为其有”持久化”的功能.
2: 存储的数据有”结构”,对于memcached来说,存储的数据,只有1种类型–”字符串”,
而redis则可以存储字符串,链表,哈希结构,集合,有序集合.

类型 redis memcached 用途 存储(storge) 缓存(cache) 数据格式 字符串,链表,哈希结构,集合,有序集 只有1种类型–”字符串”,k/v类型 集群方式 Redis支持master-slave(主—从)模式应用 只支持单机,不支持主-从 持久化 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 不支持持久化 值大小 Redis单个value的最大限制是1GB memcached只能保存1MB的数据

1.2.4 redis,mysql,mongodb对比

对比 redis mysql mongoDB 库 有库 有库 有库 表 无表 有表 有库 字段 无字段 有字段 无字段

二.安装

官网地址: https://redis.io/

2.1 单机安装

2.1.1 更新gcc和tcl

[root@localhost ~]# yum install gcc tcl
Gcc参考文章
Tcl语言参考文章
注意:如果操作时请确认上网权限.如果需要登录,则用图形界面登录后再操作.
如果报错:” Loaded plugins: fastestmirror, refresh-packagekit, security No such command:”
参考文章

[root@pc]# vi  /etc/yum/pluginconf.d/fastestmirror.conf   [main]   enabled=0  //把1改为0  verbose=0  socket_timeout=3  hostfilepath=/var/cache/yum/timedhosts.txt   maxhostfileage=10  maxthreads=15  #exclude=.gov, facebook#vi /etc/yum.conf[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1                 #将plugins的值修改为0installonly_limit=5

2.1.2 下载安装包,上传文件,解压文件

redis官网:https://redis.io/
Redis 4.0.1下载地址:http://download.redis.io/releases/redis-4.0.1.tar.gz
[root@localhost ~]# tar -zxvf redis-3.0.7.tar.gz

image

2.1.3 创建安装目录,准备将redis安装到该目录下

[root@localhost ~]# mkdir /usr/local/redis

image

2.1.4 进入到第2步的解压后的redis文件夹中

2.1.4.1 进入目录

image
image

2.1.4.2 执行安装语句

[root@localhost ~]# make PREFIX=/usr/local/redis install

image
image
image

2.1.5 复制源文件中的配置文件

2.1.5.1 创建 conf文件夹

[root@localhost ~]# mkdir conf

image
创建之后:
image

2.1.5.2 复制配置文件

[root@localhost redis]#  cp /usr/local/src/redis-3.0.7/redis.conf /usr/local/redis/conf/6379.conf

image

2.1.5.3 修改配置文件

1)将daemonize的值修改为yes
[:set number 显示行数]
2)pidfile的值修改为 /var/run/redis_6379.pid
image
配置详解

2.1.6 启动服务

2.1.6.1 进入文件目录

[root@localhost bin]# cd /usr/local/redis/bin[root@localhost bin]# pwd/usr/local/redis/bin[root@localhost bin]# ./redis-server

image

2.1.6.2 测试使用

image

2.2 设值环境变量及服务

以上安装完之后通过命令启动服务之后,需要新开一个窗口来进行操作,没有将服务设值为后台服务.也没有配置环境变量.也没有设值随机启动.下步操作实现该功能.

2.2.1 配置环境变量

1)编辑

[root@localhost ~]#  vi /etc/profile  

image
2)在后面增加:

#Redisexport PATH=$PATH:/usr/local/redis/bin保存退出:

image
3)生效

[root@localhost bin]# source /etc/profile  

image

2.2.2 配置redis为服务

1) 默认启动脚本在 /usr/local/src/redis-3.0.7/utils/redis_init_script
image
2) 将启动脚本copy到/etc/rc.d/init.d/目录下,并命名为redis

[root@localhost bin]#  cp /usr/local/src/redis-3.0.7/utils/redis_init_script /etc/rc.d/init.d/redis

3) 修改配置

需要修改的配置A.  添加注册chkconfig在注释的最后增加:#chkconfig: 2345 80 90如果不添加启动会报: :service redis does not support chkconfigB.  EXEC修改前: EXEC=/usr/local/bin/redis-server修改为: EXEC=/usr/local/redis/bin/redis-serverC.  CLIEXEC修改前: CLIEXEC=/usr/local/bin/redis-cli修改为 CLIEXEC=/usr/local/redis/bin/redis-cliD.  CONF修改前: CONF="/etc/redis/${REDISPORT}.conf"修改后: CONF="/usr/local/redis/conf/${REDISPORT}.conf"E.  start 修改前: $EXEC $CONF 修改后: $EXEC $CONF &

修改前截图:
image
修改后截图:
image

(vi可以通过 通过 :set nu 来显示行数)

2.2.3 将Redis注册为服务

[root@localhost utils]#  chkconfig --add redis

2.2.4 配置防火墙

1) 编辑配置

[root@localhost utils]#  vi /etc/sysconfig/iptables

2) 在以前配置中增加配置

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

image

此处一定要注意.添加在22后面.不要放在commit的前面.

3) 配置生效

[root@localhost utils]# service iptables restart

2.2.5 配置6379.conf

1) 修改daemonize 的值为yes(修改前为no) :
daemoniz yes
2) 修改pidfile为 /var/run/redis_6379.pid
pidfile /var/run/redis_6379.pid
image
image

2.2.6 测试服务

1) 启动 [root@localhost ~]#service redis start
2) 停止 [root@localhost ~]#service redis stop
image

2.2.7 服务随机启动

1) 配置启动服务
[root@localhost utils]# chkconfig redis on
2) 查看配置服务
[root@localhost utils]# chkconfig –list redis
3) 如果需要关闭启动服务

[root@localhost utils]# chkconfig redis off  

image
4) 重启机器测试
Reboot

2.2.8 使用工具查看连接redis

image
image

2.3 安装后的目录结构:

文件名称 说明 redisredis-cli 客户端 redisredis-server 服务端 rowredis-benchmark 性能测试工具 redis-check-aof aof日志文件检测工(比如断电造成日志损坏,可以检测并修复) redis-check-dump rdb快照文件检测工具,效果同上

后台运行配置: conf中的daemonize yes

2.4 配置详解

名称 说明 备注 daemonize 如果需要在后台运行,把该项心为yes pidfile 配置多个pid的地址,默认在/var/run/redis.pid bind 绑定ip,设置后只接受来自该ip的请求 port 监听端口,默认为6379 timeout 设置客户端连接时的超时时间,单位为秒 loglevel 分为4级,debug、verbose、notice、warning logfile 配置log文件地址 databases 设置数据库的个数,默认使用的数据库为0 save 设置redis进行数据库镜像的频率 rdbcompression 在进行镜像备份时,是否进行压缩 Dbfilename 镜像备份文件的文件名 Dir 数据库镜像备份的文件放置路径 Slaveof 设置数据库为其他数据库的从数据库 Masterauth 主数据库连接需要的密码验证 Requirepass 设置登录登录时需要使用的密码 Maxclients 限制同时连接的客户数量 Maxmemory 设置redis能够使用的最大内存 Appendonly 开启append only模式 Appendfsync 设置对appendonly.aof文件同步的频率 vm-enabled 是否开启虚拟内存支持 vm-swap-file 设置虚拟内存的交换文件路径 vm-max-memory 设置redis使用的最大物理内存大小 vm-page-size 设置虚拟内存的页大小 vm-pages 设置交换文件的总的page数量 vm-max-threads 设置VMIO同时使用的线程数量 Glueoutputbuf 把小的输出缓存存放在一起 hash-max-zipmap-entries 设置hash的临界值 Activerehashing 重新hash

2.5 关于rdp,和aof

2.5 集群

2.5.1 集群作用

  • 主从备份,防止主机宕机,
  • 读写分离,分担master的任务
  • 任务分离,如由从服务器担任备份和计算工作

2.5.2 集群的两种方式及通信过程

image
集群的两种方式如上图,第二种集群方式更好,因master宕机后,可以直接切换到slave1

image

主动同步过程:
1) slave启动后发现master主服务,自动连接到master,
2) 然后就开始同步,master开始dump出rdb到,然后salve同步到rdb之后,直接放到slave内存中.
3) 在同步的过程中,产生的新的更新在aof,等rdb同步完成后,然后同步aof到slave中,
4) 然后master再有改变,则通过replicationFeedSavles同步到slave中.

2.5.2 redis集群配置

1) 6379为主,复制配置文件,6380,6381 为从
2) 6380,6381分别修改pidfile为6380,6381,port修改为6380,6381
3) 6379关rdb,开aof,6380开启rdb,不开aof,6381不开启rdb,不开aof
4) 申明6380,6381的为从服务,从属的主服务地址,端口
5) 6379主服务可以配置密码,从服务6380,6381配置对应的主服务的密码

  • Master配置:
    1:关闭rdb快照(备份工作交给slave)
    2:可以开启aof

  • slave配置:
    1: 声明slave-of
    2: 配置密码[如果master有密码]
    3: [某1个]slave打开 rdb快照功能
    4: 配置是否只读[slave-read-only]

  • 缺陷:
    每次salave断开后,(无论是主动断开,还是网络故障) ,再连接master
    都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍.
    所以要记住—多台slave不要一下都启动起来,否则master可能IO剧增

配置的图示如下:

redis-集群-6379-1-关闭rdb:
redis-集群-6379-1-关闭rdb
redis-集群-6379-2-设置密码:
redis-集群-6379-2-设置密码
redis-集群-6380-1-修改pid和port:
redis-集群-6380-1-修改pid和port
redis-集群-6380-2-开启rdb:
redis-集群-6380-2-开启rdb
redis-集群-6380-3-开启slaveof
redis-集群-6380-3-开启slaveof

redis-集群-6380-4-开启只读
redis-集群-6380-5-设置访问master的密码:
redis-集群-6380-5-设置访问master的密码
redis-集群-6381-1-pid和port:
redis-集群-6381-1-pid和port
redis-集群-6381-2-关闭aof:
redis-集群-6381-2-关闭aof
redis-集群-6381-2-关闭rdb:

redis-集群-6381-2-关闭rdb

redis-集群-6381-3-开启slaveof

redis-集群-6381-4-设置访问master的密码:
redis-集群-6381-4-设置访问master的密码

6379.conf
6380.conf
6381.conf

原创粉丝点击