文章目录

  • 1. 简介
  • 2. redis的下载和安装
  • 3. redis常用命令
  • 4 redis主从复制
  • 5. redis持久化
  • 6. Redis 的 Sentinel 分布式系统
  • 7. redis集群

1. 简介

非关系型数据库 NoSQL = Not Only SQL (不仅仅是SQL),NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!
中文网站:http://redis.cn/
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
主流的两种方式:
(1)做mysql的缓存使用
(2)可以直接作为数据库来用,是一个高性能的key-value数据库。值(value)可以是 字符串(String), 哈希(Hash),列表(list),集合(sets) 和 有序集合(sorted sets)等类型。

2. redis的下载和安装

(1)redis软件下载
下载地址:https://redis.io/download
在此下载最新版 redis-5.0.8
(2)redis安装
通过SecureCAT软件中的SecureFX,将在Windows中下载好的软件压缩包放到Linux中

tar zxf redis-5.0.8.tar.gz    解压
yum install -y gcc            安装gcc编译器
make && make install          编译&&安装
utils/install_server.sh       脚本文件,控制服务






至此,redis安装成功!

(3)启动

(4)设置监听所有接口


由默认的bind 127.0.0.1修改为 bind 0.0.0.0

修改完成后,重新启动

其中 netstat -antlp : 用于显示各种网络信息,a (all)表示显示所有选项,n表示拒绝显示别名,t表示仅显示tcp相关选项,l表示仅列出有在 Listen (监听) 的服務状态,p表示显示建立相关链接的程序名。
redis-cli:连接本地的 redis 服务

3. redis常用命令

config get *          //查看配置
select 1                 //选择数据库
flushdb           //清空当前数据库
flushall          //清空所有数据库
move key 1        //移动key
del key                  //删除
rename oldkey newkey   //改名
expire key 10      //设置过期时间
persist key       //设置持久化
keys user*        //查询
exists key        //判断是否存在

4 redis主从复制

mysql通过二进制日志实现主从复制,而redis是通过快照来实现主从复制

slaveof/replicaof 192.168.0.100 6379  (ip地址和端口)
min-slaves-to-write <slave 数量>
min-slaves-max-lag <秒数>  //当master在最小时间内收不到slave的心跳包和没有slave,则master失效
Redis 使用异步复制,因此无法确保 slave 是否实际接收到给定的写命令


(1)开启两台虚拟机,并都安装好redis

[root@server1 ~]# vim /etc/hosts
[root@server1 ~]# scp redis-5.0.8.tar.gz server2:  //复制redis的压缩包到server2中
The authenticity of host 'server2 (192.168.0.200)' can't be established.
ECDSA key fingerprint is SHA256:CEBeiYEy1Lo/5YQ5Sc5iu6DPEy1I5WNS1uUHsWprq9U.
ECDSA key fingerprint is MD5:51:1f:32:63:71:66:16:12:11:d9:70:43:54:e3:fb:1c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server2,192.168.0.200' (ECDSA) to the list of known hosts.
root@server2's password:
redis-5.0.8.tar.gz              100% 1939KB 108.1MB/s   00:00

进入/etc/hosts 目录,解析两台虚拟机
至此,成功将server1中的redis软件包复制到server2中!接下来通过给server2下载yum源安装redis

[root@server1 ~]# ssh-keygen
[root@server1 ~]# ssh-copy-id server2      //设置免密
[root@server1 ~]# cd /etc/yum.repos.d/
[root@server1 yum.repos.d]# scp dvd.repo server2:/etc/yum.repos.d/   //将server1的dvd.repo复制到server2中
[root@server2 ~]# mount /dev/cdrom /media/    //将光驱文件挂载到media目录
mount: /dev/sr0 is write-protected, mounting read-only
[root@server2 ~]# yum repolist    //安装yum源
This system is not registered with an entitlement server. You can use subscription-manager to register.
dvd                                                                                                                                                              | 4.3 kB  00:00:00
(1/2): dvd/group_gz                                                                                                                                              | 146 kB  00:00:00
(2/2): dvd/primary_db                                                                                                                                            | 4.2 MB  00:00:00
repo id                                                                                  repo name                                                                                status
dvd                                                                                      rhel7.6                                                                                  5,152
repolist: 5,152
[root@server2 ~]# yum install -y gcc     //安装gcc
[root@server2 ~]# tar zxf redis-5.0.8.tar.gz   //解压
[root@server2 ~]# ls
redis-5.0.8  redis-5.0.8.tar.gz
[root@server2 ~]# cd redis-5.0.8/
[root@server2 redis-5.0.8]# make && make install   //安装redis
//安装完成后,源码包中utils目录下有一个install_server.sh文件,运行根据提示可初始化redis运行环境,包括启动脚本,端口号,根数据文件目录等
[root@server2 redis-5.0.8]# utils/install_server.sh
Installation successful!
[root@server2 redis-5.0.8]# vim /etc/redis/6379.conf  //进入配置文件,修改为监听所有接口
[root@server2 redis-5.0.8]# /etc/init.d/redis_6379 restart  //用脚本文件启动redis服务
Stopping ...
Redis stopped
Starting Redis server...
[root@server2 redis-5.0.8]# redis-cli   //连接本地redis服务
127.0.0.1:6379>

至此,在server1和server2中均安装好了redis

(2)设置主从

主机server1

[root@server1 yum.repos.d]# redis-cli
127.0.0.1:6379> set name nzz   //设置名字
OK
127.0.0.1:6379>

从机server2

127.001:6379> info    //查看配置信息
# Replication
role:master     //初始状态是master
127.0.0.1:6379> REPLICAOF 192.168.0.100 6379  //修改为server1的slave
OK
127.0.0.1:6379> info
# Replication
role:slave     //现在的状态是server1的slave
master_host:192.168.0.100
master_port:6379
127.0.0.1:6379> get name
"nzz"      //可以看出server1刚设置的数据nzz过来了

查看主机server1的配置

[root@server1 ~]# redis-cli
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.0.200,port=6379,state=online,offset=2576,lag=1

可以看出连接了一个从机server2 (ip=192.168.0.200)

5. redis持久化

RDB 在指定的时间间隔能对数据进行快照存储(默认)
AOF 以追加的方式保存所有写操作save 900 1    #当有一条Keys数据被改变时,900秒刷新到Disk一次
save 300 10   #当有10条Keys数据被改变时,300秒刷新到Disk一次
save 60 10000 #当有10000条Keys数据被改变时,60秒刷新到Disk一次appendonly yes             #启用AOF持久化方式
appendfsync everysec        #每秒钟强制写入磁盘一次
  • RDB是一个非常紧凑的文件,它保存了某个时间点得数据集,非常适用于数据集的备份。
  • 与AOF相比,在恢复大的数据集的时候,RDB方式会更快一些。
  • 定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度要快, 除此之外, 使用 RDB 还可以避免 AOF 程序的 bug 。

6. Redis 的 Sentinel 分布式系统

监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作(shutdown)时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器

7. redis集群

Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。
Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。Redis 集群的优势:

  • 自动分割数据到不同的节点上
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令

Redis 集群的数据分片:

Redis 集群没有使用一致性hash,,而是引入了 哈希槽的概念

Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽。集群的每个节点负责一部分hash槽,比如当前集群有3个节点,那么:

  • 节点 A 包含 0 到 5500号哈希槽
  • 节点 B 包含5501 到 11000 号哈希槽
  • 节点 C 包含11001 到 16384号哈希槽

这种结构很容易添加或者删除节点。比如如果想新添加个节点D, 需要从节点 A,B,C中得部分槽到D上。如果想移除节点A,需要将A中的槽移到B和C节点上,然后将没有任何槽的A节点从集群中移除即可。由于从一个节点将哈希槽移动到另一个节点并不会停止服务,所以无论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可用的状态。

Linux(四)——redis服务相关推荐

  1. Linux下Redis服务启动与关闭

    Linux下Redis服务启动与关闭 一.启动 二.关闭 三.远程连接Redis服务 四.Connection refused报错 五.其他报错 一.启动 注意:本人redis安装路径是:/usr/l ...

  2. 宝塔Linux面板redis服务开多个端口

    宝塔Linux面板中redis多开服务 宝塔Linux面板redis服务开多个端口 教程 宝塔Linux面板redis服务开多个端口 教程 场景:在一个服务器部署了多个项目时,多个项目都用到了redi ...

  3. redis连不上java,java使用jedis连不上linux上redis服务

    java用的jedis连接redis.reids是安装在虚拟机里面,ip是192.168.216.128,在本地能ping通虚拟机,并且xshell也能远程登录虚拟机.虚拟机内的redis服务正常,可 ...

  4. linux配置redis服务,Linux下安装Redis并设置相关服务

    一.简介 Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使 ...

  5. Linux安装Redis服务

    tar xf /home/source/redis-3.0.6.tar.gz cd redis-3.0.6 make PREFIX=/usr/local/redis install mkdir /et ...

  6. linux配置redis服务,记一次linux下安装redis, 设置redis服务, 及添加环境变量

    一. redis的安装 cd /opt                                                                                # ...

  7. linux 启动redis服务

    centos服务器重启后启动redis服务 一. 未配置 系统 Unit 手动重启 1.查看redis配置文件路径 2.找到 redis-server 启动文件 3. 服务启动 ./redis-ser ...

  8. linux安装redis服务,配置PHP扩展

    Redis安装 1,安装redis wget http://download.redis.io/releases/redis-3.0.5.tar.gz tar -zxvf redis-3.0.5.ta ...

  9. Redis | 安装Redis和启动Redis服务

    目录 一.Redis简介 1.1 简介 二.Redis安装 2.1 Windows安装Redis 2.2 Linux安装Redis 三.Redis服务启动和停止 3.1 Windows启动Redis服 ...

最新文章

  1. MPB:中科院城环所苏建强、朱永官等-功能基因高通量定量方法
  2. Android之PullToRefresh控件源码解析
  3. Shell脚本中command not found报错处理
  4. java基础之冒泡排序
  5. nebula如何实现用in实现any(x,y,z)的效果
  6. tomcat自启动设置
  7. SiteMesh参考
  8. 自动驾驶模拟器Carla之python编程-(1)简介
  9. 安卓应用安全指南 5.3.2 将内部账户添加到账户管理器 规则书
  10. mysql 存储过程创建表_MySQL之存储过程按月创建表的方法步骤
  11. AlwaysOn业务IP和高可用IP分开使用(四)
  12. Java面试宝典(超级详细)
  13. Linux 如何从网上下载文件
  14. 微信3D小游戏已达数百款,这里肯定有你没玩过的小游戏!
  15. 还在为表情包而发愁吗?今天教你用 Python 画一个奸笑(滑稽)表情(内附源码)
  16. 最快的PID参数整定口诀
  17. java基于springboot高校信息资源共享网站系统
  18. Vmware vCenter虚拟机克隆后MAC地址的修改问题
  19. 基于JavaWeb医疗管理系统的开发与实现
  20. git via xkcd

热门文章

  1. 电脑记事本_带日历的电脑桌面记事本?
  2. word中公式编辑器编号
  3. POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)
  4. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析)
  5. linux 系统lv扩展_linux 扩展lv
  6. linux 如何让.开头的文件不隐藏_每日一课 | Linux:如何gzip文件夹
  7. 2019-10-20 莉萨如(Lissajous)曲线演示工具
  8. 通用mapper笔记
  9. MYSQL5.7版本sql_mode=only_full_group_by问题
  10. ssh配置文件ssh_config和sshd_config区别