设为首页 收藏本站
查看: 816|回复: 0

[经验分享] redis介绍、主从配置

[复制链接]

尚未签到

发表于 2018-11-5 07:32:22 | 显示全部楼层 |阅读模式
  NoSQL之redis介绍:
  remote rerictionry server 是一个基于key-value键值对的持久化数据库存储系统,redis和memcached缓存服务很像。
  但是redis支持的数据存储类型更丰富,包括string、list、set、和zset等,这些数据类型都支持push/pop、add/remove
  及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
  与memcached缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务,和memcached不同的是(memcached目前好像也支持持久化,未验证),redis持久化
  缓存服务还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是,
  redis还支持master-slave同步。redis的出现,在一定程度上弥补了memcached这类key-value内存缓存服务的不足,
  在一些场合可以对关系数据库起到很好的补充作用,redis提供了python,ruby,php等客户端,使用很方便
  http://www.redis.io/documentation
  http://www.redis.cn
  redis优点:
  持久化:与memcached不同,可以持久化存储数据
  性能很高:redis能支持超过100K+每秒的读写频率。
  丰富的数据类型:redis支持二进制的string,lists,hashes,sets及ordered sets等数据类型操作。
  原子:redis的所有操作都是原子性的,同时redis还支持对几个操作全并后的原子性执行。
  丰富的特性:redis还持之publish/subscribe,通知,key过期等等特性。
  redis支持异机主从复制
  redis数据类型:
  string
  hash
  list
  set
  sorted set
  redis的应用场景:
  传统的mysql+memcached的网站架构遇到的问题
  mysql数据库实际上是适合进行海量数据存储的,加上通过memcached将热点数据存放到内存cache里,达到加速数据访问的目的。
  绝大部分公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,很多问题就会暴漏出来
  1.需要不断的对mysql进行拆库拆表,memcached也需不断跟着扩容,扩容和维护工作占据大量开发运维时间
  2.memcached跟mysql数据库的数据一致性问题
  3.memcached数据命中率低或down机,会导致大量访问直接穿透到数据库,导致mysql无法支撑业务访问
  4.跨机房cache同步一致性问题
  redis的最佳应用场景:
  1.redis最佳使用场景是全部数据in-memory
  2.redis更多场景是作为memcached的替代品来使用,需要开发支持
  3.当需要除了key-value之外的更多数据类型支持时,使用redis更合适
  4.支持持久化
  5.需要负载均衡的场景(redis主从同步)
  redis安装:
  获取redis:
cd /usr/local/src/  
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
  安装:
tar -zxf redis-3.0.7.tar.gz  
cd redis-3.0.7
  
cp redis.conf /etc/redis.conf
  
make MALLOC=jemalloc
  
make PREFIX=/usr/local/redis install
  配置环境变量:
  echo 'PATH=/usr/local/redis/bin:$PATH' >>/etc/profile
  . /etc/profile
  启动redis:
nohup redis-server /etc/redis.conf &  客户端工具的使用:
redis-cli -h 127.0.0.1 -p 6379  客户端常用命令:
set no002  sunwukong    #设置一个键,值为sunwukong  
get no002#获取键no002的值
  
del no002#删除键为no002的值
  
keys *#获取当前reds下的所有key
  
info                    #查看当前redis的状态信息
  redis主从复制的说明:
  Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:
  1.master可以有多个slave
  2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构
  3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。
  4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求,比如sort操作可以使用slave来处理。也可以用来做简单的数据冗余
  5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。
  下面介绍下主从复制的过程
  当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。
  redis主从复制的配置
  redis从操作:
[root@localhost ~]# cat /etc/redis.conf |grep 'slaveof'  

  
# Master-Slave replication. Use slaveof to make a Redis instance a copy of
  
# slaveof  
  在此行下新添加一行
slaveof 192.168.1.100 6379  保存重启主和从的redis服务出现下面的信息表示主从同步正常
DSC0000.png

DSC0001.png

  验证:
  在redis主服务器上创建一个数据
[root@localhost ~]# redis-cli  
127.0.0.1:6379> keys *
  
(empty list or set)
  
127.0.0.1:6379> set mydata   john.gou
  
OK
  
127.0.0.1:6379> get mydata
  
"john.gou"
  
127.0.0.1:6379>
  在redis从服务器上验证
[root@localhost ~]# redis-cli  
127.0.0.1:6379> get mydata
  
"john.gou"
  

  
127.0.0.1:6379> set mykey 123
  
(error) READONLY You can't write against a read only slave.
  ps:可以看到从服务器上的数据已经同步,并且不可以在从上添加数据。redis主从同步搭建完成
  此博客的redis主从同步优点和同步过程抄录于http://blog.csdn.net/yangzhenzhen/article/details/8512292



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630837-1-1.html 上篇帖子: php使用Redis存储 下篇帖子: redis分片存储集群的搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表