博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搭建redis及主从复制
阅读量:3946 次
发布时间:2019-05-24

本文共 3445 字,大约阅读时间需要 11 分钟。

redis介绍

Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。

Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。

使用场景:

Redis的五个常见使用场景

1、会话缓存(Session Cache)
最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?
幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。
2、全页缓存(FPC)
除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。
再次以Magento为例,Magento提供一个插件来使用Redis作为全页缓存后端。
此外,对WordPress的用户来说,Pantheon有一个非常好的插件 wp-redis,
这个插件能帮助你以最快速度加载你曾浏览过的页面。
3、队列(秒杀,抢购,12306)list数据类型的使用
Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。
如果你快速的在Google中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用Redis创建非常好的后端工具,以满足各种队列需求。例如,Celery有一个后台就是使用Redis作为broker,你可以从这里去查看。
4、排行榜/计数器(set数据类型的使用)
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可:
当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行:
ZRANGE user_scores 0 10 WITHSCORES
Agora Games就是一个很好的例子,用Ruby实现的,它的排行榜就是使用Redis来存储数据的,你可以在这里看到。
5、发布/订阅
最后(但肯定不是最不重要的)是Redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统!(不,这是真的,你可以去核实)。
Redis提供的所有特性中,我感觉这个是喜欢的人最少的一个,虽然它为用户提供如果此多功能。

redis的数据类型:

Redis支持5种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

接下来是搭建过程

环境准备:

IP 服务
192.168.0.103 redis主
192.168.0.101 redis从

redis下载地址: https://redis.io/download

一、下载redis包编译安装

[root@k8s-master bin]# wget https://download.redis.io/releases/redis-6.2.4.tar.gz[root@k8s-master bin]# tar -zxf redis-6.2.4.tar.gz -C /usr/local/[root@k8s-master bin]# cd /usr/local/redis-6.2.4/[root@k8s-master redis-6.2.4]# make && make install PREFIX=/usr/local/redis

在这里插入图片描述

二、创建主配置文件存放目录

[root@k8s-node2 bin]# mkdir /usr/local/redis/etc[root@k8s-node2 bin]# cp -a /usr/local/redis-6.2.4/redis.conf  /usr/local/redis/etc/

三、启动redis-server

[root@k8s-node2 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
在这里插入图片描述
启动成功,这是redis运行界面,在这个界面可以看到对redis的所有操作。

但下面有一个WARING,这里的告警再说当前的TCP内核文件里配置的连接数较小,因为redis的连接数会超过当前的值,如有需要,可以将值设置成1024或2048,如果是测试环境可以设置成511。

优化redis,修改TCP内核文件 先Ctrl+C结束当前前台运行服务,之后修改文件

[root@k8s-node2 etc]# echo "511" > /proc/sys/net/core/somaxconn

修改后启动就不会出现WARING

在这里插入图片描述

当前是前台工作,会影响用户对服务器的其他操作,那咱们可以通过redis配置文件把前台服务改成后台。当然也可以通过

在启动服务命令后面添加&也是可以。

[root@k8s-node2 etc]# vim /usr/local/redis/etc/redis.conf

在这里插入图片描述

重新启动redis就会在后台运行

[root@k8s-node2 etc]# pkill redis[root@k8s-node2 etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

在这里插入图片描述

redis搭建完毕

redis主从复制

主服务器上不需要操作

一、只需要在当从服务器的redis配置文件中末尾添加 slaveof masterIP redis端口

[root@k8s-node2 etc]# vim /usr/local/redis/etc/redis.con在这里插入图片描述

如果主服务器设置了redis密码需要在末尾再添加一行

masterauth redis密码

在这里插入图片描述

设置完成后保存并重启从服务器redis

二、连接上从服务器查看主从连接配置信息

192.168.0.101:6379> info replication

在这里插入图片描述

master_host:192.168.0.103 #主节点的Host名称或IP地址
master_port:6379 #主节点监听的TCP端口
master_link_status:up #对master的连接(up或者down)
master_last_io_seconds_ago:3 #自上次与主节点交互以来,经过的秒数
master_sync_in_progress:0 #指示主节点正在与从节点同步数

三、如果能查询到状态,则在主服务器上创建键值测试是否同步(主服务器可以读写,从服务器只能读)

[root@k8s-master bin]# ./redis-cli -h 127.0.0.1

127.0.0.1:6379> set test 123
OK
在这里插入图片描述
登陆从服务器查看
在这里插入图片描述
能查询到即可完成

转载地址:http://kiqwi.baihongyu.com/

你可能感兴趣的文章
Android的Gradle技巧 1.7配置存储库
查看>>
android Collections 排序,
查看>>
Android的Gradle技巧 2.1设置项目属性
查看>>
Android的Gradle技巧 2.2将应用程序从Eclipse ADT移植到Android Studio
查看>>
Android的Gradle技巧 2.3从Eclipse移植应用程序ADT使用Eclipse
查看>>
昂山素季 Aung San Suu Kyi
查看>>
AI 人工智能第一课 从贝叶斯定理开始
查看>>
朴素贝叶斯python实现
查看>>
Logistic回归原理及公式推导
查看>>
并发性与并行性 并发性与并行性
查看>>
惰性求值,可组合和模块化的JavaScript
查看>>
How to Extend Django User Model 如何扩展Django用户模型
查看>>
两个行业的故事:编程语言与富裕国家和发展中国家之间的差异
查看>>
15个用于管理MySQL服务器mysqladmin命令
查看>>
服务器端I / O性能:Node,PHP,Java与Go
查看>>
多行文本编辑时,同一行编辑不同类型的字符时自动换行的问题
查看>>
如何使开机动画只播一次
查看>>
如何在平台上实现LED灯的效果?如信号灯,来短信/来电时LED动画闪烁
查看>>
restore factory属性的enable和disable
查看>>
Android LOG机制流程图
查看>>