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

10 篇文章 0 订阅

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则可以存储字符串,链表,哈希结构,集合,有序集合.

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

1.2.4 redis,mysql,mongodb对比

对比redismysqlmongoDB
有库有库有库
无表有表有库
字段无字段有字段无字段

二.安装

官网地址: 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/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1                 #将plugins的值修改为0
installonly_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)在后面增加:

#Redis
export 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 chkconfig
B.  EXEC
修改前: EXEC=/usr/local/bin/redis-server
修改为: EXEC=/usr/local/redis/bin/redis-server
C.  CLIEXEC
修改前: CLIEXEC=/usr/local/bin/redis-cli
修改为 CLIEXEC=/usr/local/redis/bin/redis-cli
D.  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-aofaof日志文件检测工(比如断电造成日志损坏,可以检测并修复)
redis-check-dumprdb快照文件检测工具,效果同上

后台运行配置: 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

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值