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

[经验分享] Redis集群实战

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-25 09:14:29 | 显示全部楼层 |阅读模式
持久化存储
redis介绍
redis是基于key-value的持久化数据库存储系统,redis和memcached服务很想,但是redis支持的数据存储类型
服务更丰富
memcached支持value
redis支持string(字符)list(链表)  set(集合)  push、pop
redis比memcached服务性能好,但是比相对性的关系数据库(如mysql) 相对差

redis支持各种不同方式的排序,与memcached一样,为了保存效率,数据都是缓存在内存中提供服务,但是redis会定时的将
数据存储在磁盘当中,而且redis支持master-slave(主从)同步,这很类似MYSQL


redis优点
可以持久化存储数据
性能很高:redis支持超过100k+秒的读写频率。
丰富的数据类型:strings lists,hashes,Sets数据类型操作
redis支持主从复制


redis应用场景
传统的MYSQL+MEMCACHED架构遇到的问题
MYSQL数据库是适合进行海量数据存储的,加上通过Memcached热点数据放在内存cache中,随着访问量增长,就会出现
问题。
1需要不断的对MYSQL拆库拆表,Memcached也需要不断地扩充,占据大量的运维时间
2Memcached和MYSQL数据一致性问题
3Memcached数据库命中率低或当机,导致大量的访问直接穿透数据库,导致mysql无法支持访问
4跨级方cache同步一致性问题


redis最佳应用场景
1Redis最佳使用场景全部数据是in-memory(内存)
2Redis更多的场景作为Memcached替代
3当需要除key/value之外的更多数据类型支持的时候,使用Redis更合适
4支持持久化
5需要负载均衡的场景(redis主从同步)




redis部署搭建
MASTER 192.168.2.1
SLAVE  192.168.2.4


MASTER:
[iyunv@localhost ~]# ls
anaconda-ks.cfg  bbs  boke  install.log  install.log.syslog  mysql-5.5.32-linux2.6-x86_64.tar.gz  redis-3.0.2.tar.gz  test.sh  www
[iyunv@localhost ~]# tar zxf redis-3.0.2.tar.gz
[iyunv@localhost ~]# cd redis-3.0.2
[iyunv@localhost redis-3.0.2]# make  MALLOC=jemalloc
[iyunv@localhost redis-3.0.2]# make PREFIX=/application/redis install  指定安装路径



SLAVE
[iyunv@localhost ~]# ls
anaconda-ks.cfg  bbs  boke  install.log  install.log.syslog  mysql-5.5.32-linux2.6-x86_64.tar.gz  redis-3.0.2.tar.gz  test.sh  www
[iyunv@localhost ~]# tar zxf redis-3.0.2.tar.gz
[iyunv@localhost ~]# cd redis-3.0.2
[iyunv@localhost redis-3.0.2]# make  MALLOC=jemalloc
[iyunv@localhost redis-3.0.2]# make PREFIX=/application/redis install  指定安装路径
装完后bin有5个命令
[iyunv@localhost bin]# ls
redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server

redis-benchmark redis性能测试工具
redis-check-aof 更新日志检查
redis-check-dump
redis-cli Redis命令操作工具
redis-sentinel 用于本地数据库检查
redis-server Redis服务的启动程序


要想启动Redis要做环境变量
[iyunv@localhost redis]# export PATH=/application/redis/bin/:$PATH
[iyunv@localhost redis]# which  redis-server
/application/redis/bin/redis-server
永久生效修改文件
[iyunv@localhost redis]# vim /etc/profile
export PATH=/application/redis/bin/:$PATH
[iyunv@localhost redis]# . /etc/profile
redis配置
[iyunv@localhost redis-3.0.2]# mkdir /application/redis/conf
[iyunv@localhost redis-3.0.2]# cp redis.conf  /application/redis/conf/

启动Redis
[iyunv@localhost redis-3.0.2]# redis-server  /application/redis/conf/redis.conf
5522:M 18 Feb 05:02:08.448 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.2 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 5522
  `-._    `-._  `-./  _.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |                                 
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                          
              `-.__.-'                                               

5522:M 18 Feb 05:02:08.463 # Server started, Redis version 3.0.2
5522:M 18 Feb 05:02:08.464 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
5522:M 18 Feb 05:02:08.470 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5522:M 18 Feb 05:02:08.470 * The server is now ready to accept connections on port 6379

vm.overcommit_memory = 1提示这个错误
解决
[iyunv@localhost redis-3.0.2]# sysctl  vm.overcommit_memory=1
vm.overcommit_memory = 1

[iyunv@localhost redis-3.0.2]# redis-server  /application/redis/conf/redis.conf
5560:M 18 Feb 05:05:23.085 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.2 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 5560
  `-._    `-._  `-./  _.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |                                 
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                          
              `-.__.-'                                               

5560:M 18 Feb 05:05:23.087 # Server started, Redis version 3.0.2
5560:M 18 Feb 05:05:23.088 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5560:M 18 Feb 05:05:23.088 * DB loaded from disk: 0.001 seconds
5560:M 18 Feb 05:05:23.088 * The server is now ready to accept connections on port 6379

成功!


测试redis
[iyunv@localhost ~]# redis-cli
127.0.0.1:6379>

创建库查看库
127.0.0.1:6379> set  no002 xiaohu
OK
127.0.0.1:6379> get no002
"xiaohu"

不在命令行创建库
[iyunv@localhost ~]# redis-cli  -h 192.168.2.1 -p 6379 set no001 qi
OK
[iyunv@localhost ~]# redis-cli  -h 192.168.2.1 -p 6379 get no001
"qi"

删除数据库
[iyunv@localhost ~]# redis-cli   del no001
(integer) 1
[iyunv@localhost ~]# redis-cli   get  no001
(nil)


redis类型
字符串类型
列表类型 列表是数组  对应
[iyunv@localhost ~]# redis-cli  rpush messages "hello"
(integer) 1
[iyunv@localhost ~]# redis-cli  rpush messages "hell"
(integer) 2
显示
[iyunv@localhost ~]# redis-cli  lrange messages 0 2
1) "hello"
2) "hell"


redis集合  这种将3个值集合在一个变量值上  对应标签功能
127.0.0.1:6379> sadd myset a
(integer) 1
127.0.0.1:6379> sadd myset b
(integer) 1
127.0.0.1:6379> sadd myset c
(integer) 1
127.0.0.1:6379> smembers myset
1) "c"
2) "b"
3) "a"



redis 主从同步
MASTER 192.168.2.1
SLAVE  192.168.2.4
编辑slave的redis.conf
vim /application/redis/conf/redis.conf
在slaveof下面添加:
slaveof  192.168.2.1  6379 主库地址和端口号
slave查看
[iyunv@localhost redis-3.0.2]# redis-server  /application/redis/conf/redis.conf
6631:S 24 Mar 06:21:26.599 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.2 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 6631
  `-._    `-._  `-./  _.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |                                 
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                          
              `-.__.-'                                               

6631:S 24 Mar 06:21:26.611 # Server started, Redis version 3.0.2
6631:S 24 Mar 06:21:26.613 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
6631:S 24 Mar 06:21:26.613 * DB loaded from disk: 0.000 seconds
6631:S 24 Mar 06:21:26.613 * The server is now ready to accept connections on port 6379
6631:S 24 Mar 06:21:27.602 * Connecting to MASTER 192.168.2.1:6379
6631:S 24 Mar 06:21:27.602 * MASTER <-> SLAVE sync started  已经成功
6631:S 24 Mar 06:21:27.603 * Non blocking connect for SYNC fired the event.
6631:S 24 Mar 06:21:27.604 * Master replied to PING, replication can continue...
6631:S 24 Mar 06:21:27.606 * Partial resynchronization not possible (no cached master)
6631:S 24 Mar 06:21:27.611 * Full resync from master: 7a09e0f69c3888561658ec8a480d250d219c2444:1
6631:S 24 Mar 06:21:27.671 * MASTER <-> SLAVE sync: receiving 83 bytes from master
6631:S 24 Mar 06:21:27.671 * MASTER <-> SLAVE sync: Flushing old data
6631:S 24 Mar 06:21:27.671 * MASTER <-> SLAVE sync: Loading DB in memory
6631:S 24 Mar 06:21:27.672 * MASTER <-> SLAVE sync: Finished with success


MASTER查看
[iyunv@localhost ~]# redis-server  /application/redis/conf/redis.conf
2178:M 19 Feb 03:22:56.204 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.2 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
(    '      ,       .-`  | `,    )     Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
|    `-._   `._    /     _.-'    |     PID: 2178
  `-._    `-._  `-./  _.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
|`-._`-._    `-.__.-'    _.-'_.-'|                                 
|    `-._`-._        _.-'_.-'    |                                 
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                          
              `-.__.-'                                               

2178:M 19 Feb 03:22:56.224 # Server started, Redis version 3.0.2
2178:M 19 Feb 03:22:56.224 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2178:M 19 Feb 03:22:56.224 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2178:M 19 Feb 03:22:56.224 * DB loaded from disk: 0.000 seconds
2178:M 19 Feb 03:22:56.224 * The server is now ready to accept connections on port 6379
2178:M 19 Feb 03:37:57.011 * 1 changes in 900 seconds. Saving...
2178:M 19 Feb 03:37:57.014 * Background saving started by pid 2374
2374:C 19 Feb 03:37:57.046 * DB saved on disk
2374:C 19 Feb 03:37:57.046 * RDB: 6 MB of memory used by copy-on-write
2178:M 19 Feb 03:37:57.120 * Background saving terminated with success
2178:M 19 Feb 03:52:58.020 * 1 changes in 900 seconds. Saving...
2178:M 19 Feb 03:52:58.031 * Background saving started by pid 2546
2546:C 19 Feb 03:52:58.049 * DB saved on disk
2546:C 19 Feb 03:52:58.049 * RDB: 6 MB of memory used by copy-on-write
2178:M 19 Feb 03:52:58.138 * Background saving terminated with success
2178:M 19 Feb 04:09:04.556 * Slave 192.168.2.4:6379 asks for synchronization
2178:M 19 Feb 04:09:04.556 * Full resync requested by slave 192.168.2.4:6379
2178:M 19 Feb 04:09:04.556 * Starting BGSAVE for SYNC with target: disk
2178:M 19 Feb 04:09:04.557 * Background saving started by pid 2773
2773:C 19 Feb 04:09:04.580 * DB saved on disk
2773:C 19 Feb 04:09:04.581 * RDB: 6 MB of memory used by copy-on-write 主库也接受到了
2178:M 19 Feb 04:09:04.620 * Background saving terminated with success
2178:M 19 Feb 04:09:04.620 * Synchronization with slave 192.168.2.4:6379 succeeded





在从库做个监控,主库写数据验证
[iyunv@localhost ~]# redis-cli  主库创建数据库
127.0.0.1:6379> set t1 xiaohu01
OK
127.0.0.1:6379> get t1
"xiaohu01"
查看从库同步
[iyunv@localhost ~]# redis-cli  -h 192.168.2.4 get t1
"xiaohu01"
远程连接到从库查看数据同步了


[iyunv@localhost ~]# redis-cli  -h localhost -p 6379 monitor 从库开启监控数据库写入
OK
1458772016.182626 [0 192.168.2.1:6379] "PING"



运维网声明 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-208444-1-1.html 上篇帖子: REDIS 勿删除rdb文件如何从内存中恢复数据 下篇帖子: redis性能问题排查
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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