redis的下载及使用
1.下载
方式一(通过yum)
yum install redis -y
方式二(通过源码编译)
(1)下载源码包
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
(2)解压
tar -zxvf redis-4.0.10.tar.gz
(3)进入redis原码,编译且安装
cd redis-4.0.10
make && make install
(4)指定配置文件启动redis(可以自定制配置文件)
redis-server redis.conf
(5)更改配置文件为可以后台运行
找到配置文件中的daemonize,将它的配置右no更改为yes
过滤出文件的空白行和注释行
grep -v "^#" redis.conf | grep -v "^$"
2.redis的使用
1.redis的启动
指定文件启动服务端
redis-server redis.conf
启动客户端
redis-cli
注意问题1:当远程访问redis时,如果出现连接不上redis的情况,可能是配置文件bind参数的问题
解决方式:
在配置文件redis.conf中找到bind,若bind的参数为127.0.0.0,则改为0.0.0.0
注意问题2:更改redis默认端口
如果使用默认端口,可能产生安全问题,容易被攻击
在redis.conf配置文件中找到port,将默认参数由6379更改为自定义的参数
以后再登录时,需要指定端口登录:redis-cli -p 6388
注意问题3:更改redis的登录密码
在redis.conf配置文件中找到requirepass,将默认参数由foobared更改为自定义的参数
以后登录后自己需要进行验证才能使用redis:auth 19960926abc
登录时也可以直接指定端口密码:redis-cli -p 6380 -a 密码
2.发布订阅实验
启动两个redis-cli窗口,均订阅heilongjiang频道,启动第三个redis-cli窗口,向heilongjiang频道发送消息
窗口1:
窗口2:
窗口3:
PUBLISH channel msg
将信息 message 发送到指定的频道 channel
SUBSCRIBE channel [channel ...]
订阅频道,可以同时订阅多个频道
UNSUBSCRIBE [channel ...]
取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道
PSUBSCRIBE pattern [pattern ...]
订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所 有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类
PUNSUBSCRIBE [pattern [pattern ...]]
退订指定的规则, 如果没有参数则会退订所有规则
PUBSUB subcommand [argument [argument ...]]
查看订阅与发布系统状态
注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。
PSUBSCRIBE python*
客户端正则(支持模糊匹配)接收
指明配置文件启动
自定义redis的配置文件myredis.conf
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
指明myredis.conf配置文件启动
redis-server myredis.conf
3.数据持久化
注:redis关机后数据就没了,因为没有开启数据持久化
1.RDB持久化(通过sava命令触发)
在自定义的配置文件中添加
dbfilename dbmp.rdb #rdb持久化文件
########以下可以不写#################
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录
添加数据后要save才能算备份了
2.AOF持久化
怎么工作的:把每一步redis操作实记录到appendonly.aof中
在配置文件 redis.conf中添加最后两行
AOF持久化配置,两条参数
appendonly yes
appendfsync always 总是修改类的操作
everysec 每秒做一次持久化*****
no 依赖于系统自带的缓存大小机制
注:查看redis的版本
redis-server -v
4.redis不重启RDB数据切换到AOF数据
先准备一个rdb的服务端
CONFIG set appendonly yes #开启AOF功能
CONFIG SET save "" #关闭RDB功能
这一步的操作是临时生效,再启动还是rdb,所以应该将将aof操作写入配置文件
appendonly yes
appendfsync everyse
5.redis的主从同步
配置主从同步
1.启动三个redis数据库实例
创建三个配置文件
touch redis-6379.conf 主库
touch redis-6380.conf 从库
touch redis-6381.conf 从库
分别配置三个文件
在redis-6379.conf中
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379
另外另个文件通过sed命令快速生成
sed "s/6379/6380/g" redis-6379.conf > redis-6380.conf
sed "s/6379/6381/g" redis-6379.conf > redis-6381.conf
分别启动三个数据库的客户端和服务端
redis-server redis-6379.conf
redis-cli -p 6379
redis-server redis-6380.conf
redis-cli -p 6380
redis-server redis-6381.conf
redis-cli -p 6381
为从库设置主库
在6380从库中
SLAVEOF 127.0.0.1 6379
在6381从库中
SLAVEOF 127.0.0.1 6379
配置完成,检查数据库信息,看是否生效
info replication
测试
在主库中添加内容
从库中查看数据是否与主库同步
注:批量杀死进程(根据服务名杀死进程)
pkill redis-server #杀死进程名为redis-server的进程
6.手动进行主从复制故障切换
检查从库主从信息,此时master_link_status:down
redis-cli -p 6381
info replication
redis-cli -p 6382
info replication
既然主库挂了,我想要在6380 6381之间选一个新的主库
1.关闭6380的从库身份
redis-cli -p 6381
info replication
slaveof no one
2.将6381设为6380的从库
6382连接到6381:
[root@db03 ~]# redis-cli -p 6382
127.0.0.1:6382> SLAVEOF no one
127.0.0.1:6382> SLAVEOF 127.0.0.1 6381
3.检查6382,6381的主从信息
7.主从故障自动切换(redis哨兵)
1.什么是哨兵
保护redis主从集群,正常运转,当主库挂掉之后,自动在从库中挑选新的主库,进行同步
2.主从复制架构
3.Redis Sentinel架构
4.redis哨兵的安装配置
(1).准备三个数据库实例(三个配置文件,通过端口区分)并启动
redis-server redis-6379.conf
redis-server redis-6380.conf
redis-server redis-6381.conf
(2).准备三个啥哨兵的配置文件(写入是去掉注释)(不能直接复制,要更改主机名,地址,端口等信息)
redis-sentinel-26379.conf文件
port 26379
dir /var/redis/data/
logfile "26379.log"
// 当前Sentinel节点监控 192.168.119.10:6379 这个主节点
// 2代表判断主节点失败至少需要2个Sentinel节点节点同意
// mymaster是主节点的别名
sentinel monitor s15master 192.168.177.130 6379 2
//每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
sentinel down-after-milliseconds s15master 30000
//当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,
原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
sentinel parallel-syncs s15master 1
//故障转移超时时间为180000毫秒
sentinel failover-timeout s15master 180000
快速生成另外两个配置文件
sed "s/26379/26380/g" redis-sentinel-26379.conf > redis-sentinel-26380.conf
sed "s/26379/26381/g" redis-sentinel-26379.conf > redis-sentinel-26381.conf
(3).添加后台运行参数,使得三个哨兵进程,后台运行
echo "daemonize yes" >> redis-sentinel-26379.conf
echo "daemonize yes" >> redis-sentinel-26380.conf
echo "daemonize yes" >> redis-sentinel-26381.conf
(4).启动三个哨兵
redis-sentinel redis-sentinel-26379.conf
redis-sentinel redis-sentinel-26380.conf
redis-sentinel redis-sentinel-26381.conf
(5).查看哨兵的通信状态(最后一行)
redis-cli -p 6381 info replication
(6)杀死edis的主库
kill -9 5537
(7)查看另外两个库的节点状态
redis-cli -p 6380 info replication
redis-cli -p 6381 info replication
此时的6379库再重新启动会变成从节点
8.redis-cluster配置(集群)
1.作用
对于数据量太大,访问量太大,并发量太大的问题,通过redis-cluster搭建集群来解决该类问题
2.数据分布原理
分布式数据库首要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整个数据的一个子集。
常见的分区规则有哈希分区和顺序分区。Redis Cluster
采用哈希分区规则,因此接下来会讨论哈希分区规则。
节点取余分区
一致性哈希分区
虚拟槽分区(redis-cluster采用的方式)
(1)分区规则一:顺序分区
(2)分区规则二:哈希分区
例如按照节点取余的方式,分三个节点
1~100的数据对3取余,可以分为三类
余数为0
余数为1
余数为2
那么同样的分4个节点就是hash(key)%4
节点取余的优点是简单,客户端分片直接是哈希+取余
(3)分区规则三:虚拟槽分区
虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定范围内的整数集合,整数定义为槽(slot)。
Redis Cluster槽的范围是0 ~ 16383。
槽是集群内数据管理和迁移的基本单位。采用大范围的槽的主要目的是为了方便数据的拆分和集群的扩展,
每个节点负责一定数量的槽。
3.创建开启redis-cluster
(1)准备6个数据库实例(端口:7000-7005)
数据库的配置文件编写
port 7000
daemonize yes
dir "/opt/redis/data"
logfile "7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes #开启集群模式
cluster-config-file nodes-7000.conf #集群内部的配置文件
如果没有/opt/redis/data文件夹,创建文件夹
mkdir -p /opt/redis/data
快速创建另外五个配置文件
sed "s/7000/7003/g" redis-7000.conf >redis-7003.conf
sed "s/7000/7004/g" redis-7000.conf >redis-7004.conf
sed "s/7000/7005/g" redis-7000.conf >redis-7005.conf
......
(2)启动redis,用这六个配置文件
redis-server redis-7000.conf
redis-server redis-7001.conf
redis-server redis-7002.conf
redis-server redis-7003.conf
redis-server redis-7004.conf
redis-server redis-7005.conf
(3)配置ruby语言环境,脚本一键启动redis-cluster
下载ruby语言的源码包,编译安装
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
解压缩
tar -zxf ruby-2.3.1.tar.gz
cd ruby-2.3.1
./configure --prefix=/opt/ruby/ 释放makefile
make && make install 编译且安装
下载安装ruby操作redis的模块包
wget http://rubygems.org/downloads/redis-3.3.0.gem
gem install -l redis-3.3.0.gem
配置ruby的环境变量
echo $PATH vim /etc/profile
写入最底行
PATH=$PATH:/opt/ruby/bin/
读取文件
source /etc/profile 5.通过ruby的包管理工具去安装redis包,安装后会生成一个redis-trib.rb这个命令
一键创建redis-cluster 其实就是分配主从关系 以及 槽位分配 slot槽位分配
/root/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
6.检查节点主从状态
redis-cli -p 7000 info replication
redis-cli -p 7001 info replication
redis-cli -p 7002 info replication 7.向redis集群写入数据,查看数据流向
redis-cli -p 7000 -c #这里会将key自动的重定向,放到某一个节点的slot槽位中
set name s15
set addr shahe
redis的下载及使用的更多相关文章
- window php redis扩展下载地址
redis扩展下载 http://windows.php.net/downloads/pecl/snaps/redis/
- Windows下PHP的redis扩展下载地址
Redis下载地址:http://windows.php.net/downloads/pecl/releases/redis/ igbinary下载地址:http://windows.php.net/ ...
- redis的下载与安装(linux版)
redis的下载与安装(linux版) 1.下载路径 https://redis.io/download 2.上传到linux并且解压 3.进入解压之后的redis,并且make && ...
- Redis的下载、安装及启动
一.下载Redis 1. redis 的下载路径 https://pan.baidu.com/s/1tdMzOlcTlFC7Z3a3I_59hQ 提取码:5tgy 二.安装Redis cd到当前解压目 ...
- redis的下载和安装
下载 http://download.redis.io 这里我们以redis的5.0.5版本和centos7环境为基础介绍 安装 1.将下载的redis-5.0.5.tar.gz文件上传到linux上 ...
- redis 扩展下载
自己保存一下 免得以后忘记还得重新找T-T http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/ phpinfo查看自己的php信息下载对 ...
- redis入门(01)redis的下载和安装
参考链接: 命令手册 : http://www.redis.net.cn/order/ 菜鸟教程: http://www.runoob.com/redis/redis-install.html 一.概 ...
- Redis学习笔记(2)——Redis的下载安装部署
一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...
- CentOS7的安装以及redis的下载安装和连接redis desktop manager出现的问题
因为需要在springboot下使用redis,所以打算在linux下使用redis,并且使用redis desktop manage来连接管理,但是一路上出现个种问题现在总结一下. 如何安装Cent ...
- Redis之下载安装及基本使用
redis window系统的redis是微软团队根据官方的linux版本高仿的 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 1.1 redis下 ...
随机推荐
- IIS执行原理
IIS执行原理 服务器的监听(IIS6.0+版本) 当请求到达服务器时,请求最终会到达TCPIP.SYS驱动程序,TCPIP.SYS将请求转发给HTTP.SYS网络驱动程序的请求队列中(可以理解为 ...
- CUDA页锁定内存(Pinned Memory)
对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned).可分页内存是由操作系统API malloc()在主机上 ...
- Python 金融数据分析 (一)—— 股票数据
1. tushare 库 tushare 的官网请见:TuShare -财经数据接口包,是国人自己开发的 Python 爬数据工具(所谓的爬,自然就是在线连网获取数据),囊括股票.期货.宏观经济.电影 ...
- 各种图示的介绍及绘制(boxplot、stem)
1. 箱线图(boxplot) 也叫作箱形图: 一种用作显示一组数据分散情况资料的统计图.因形状如箱子而得名.在各种领域也经常被使用,常见于品质管理. 主要包含六个数据节点,将一组数据从大到小排列,分 ...
- 中国新超算彻底告别进口CPU 国产芯片已可与国外抗衡
日前,飞腾已经完成FT-2000plus服务器CPU的研制工作,飞腾公司的合作伙伴正在积极研发相应的整机产品.FT-2000plus这款芯片是以FT2000为基础的改进版本,虽然在单核性能上和Inte ...
- python 教程 第十一章、 异常
第十一章. 异常 1) try/except/else格式 try: s = raw_input('--> ') except EOFError: print 'Why did you d ...
- matlab 各种文件的读取(及读写问题的解决)
0. 文本文件 load('**.mat') load('**.mat', '-ascii') load('-mat', filename) load('-ascii', filename) 1. 音 ...
- C类型和存储方式的语言变量
变量的作用域:有效射程变量 >局部变量 1.在函数中的局部变量,量在该函数结束后自己主动撤销 2.函数内的复合语句中的局部变量(比方for语句),这个变量在复合语句结束后自己主动撤销.这个变量能 ...
- GTK+浅谈之一Windows10下QtCreator中GTK+环境搭建(十几篇)
一.简介 虽然GTK+是Linux下的开发环境,因为其跨平台特性,有时候需要在Windows上用到它的.如下是在Windows10下配置GTK+的开发环境. Gnome的开发基础结构是围 ...
- WPF中ListBox滚动时的缓动效果
原文:WPF中ListBox滚动时的缓动效果 上周工作中遇到的问题: 常规的ListBox在滚动时总是一格格的移动,感觉上很生硬. 所以想要实现类似Flash中的那种缓动的效果,使ListBox滚动时 ...