千家信息网

Redis集群实战

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,Redis基础到集群实战笔记持久化存储redis介绍redis是基于key-value的持久化数据库存储系统,redis和memcached服务很想,但是redis支持的数据存储类型服务更丰富memc
千家信息网最后更新 2024年09月22日Redis集群实战

Redis基础到集群实战笔记

持久化存储

redis介绍

redis是基于key-value的持久化数据库存储系统,redismemcached服务很想,但是redis支持的数据存储类型

服务更丰富

memcached支持value

redis支持string(字符)list(链表) set(集合) pushpop

redismemcached服务性能好,但是比相对性的关系数据库(如mysql) 相对差

redis支持各种不同方式的排序,与memcached一样,为了保存效率,数据都是缓存在内存中提供服务,但是redis会定时的将

数据存储在磁盘当中,而且redis支持master-slave(主从)同步,这很类似MYSQL

redis优点

可以持久化存储数据

性能很高:redis支持超过100k+秒的读写频率。

丰富的数据类型:strings listshashesSets数据类型操作

redis支持主从复制

redis应用场景

传统的MYSQL+MEMCACHED架构遇到的问题

MYSQL数据库是适合进行海量数据存储的,加上通过Memcached热点数据放在内存cache中,随着访问量增长,就会出现

问题。

1需要不断的对MYSQL拆库拆表,Memcached也需要不断地扩充,占据大量的运维时间

2MemcachedMYSQL数据一致性问题

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:

[root@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

[root@localhost ~]# tar zxf redis-3.0.2.tar.gz

[root@localhost ~]# cd redis-3.0.2

[root@localhost redis-3.0.2]# make MALLOC=jemalloc

[root@localhost redis-3.0.2]# make PREFIX=/application/redis install 指定安装路径

SLAVE

[root@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

[root@localhost ~]# tar zxf redis-3.0.2.tar.gz

[root@localhost ~]# cd redis-3.0.2

[root@localhost redis-3.0.2]# make MALLOC=jemalloc

[root@localhost redis-3.0.2]# make PREFIX=/application/redis install 指定安装路径

装完后bin5个命令

[root@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要做环境变量

[root@localhost redis]# export PATH=/application/redis/bin/:$PATH

[root@localhost redis]# which redis-server

/application/redis/bin/redis-server

永久生效修改文件

[root@localhost redis]# vim /etc/profile

export PATH=/application/redis/bin/:$PATH

[root@localhost redis]# . /etc/profile

redis配置

[root@localhost redis-3.0.2]# mkdir /application/redis/conf

[root@localhost redis-3.0.2]# cp redis.conf /application/redis/conf/

启动Redis

[root@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提示这个错误

解决

[root@localhost redis-3.0.2]# sysctl vm.overcommit_memory=1

vm.overcommit_memory = 1

[root@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

[root@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"

不在命令行创建库

[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6379 set no001 qi

OK

[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6379 get no001

"qi"

删除数据库

[root@localhost ~]# redis-cli del no001

(integer) 1

[root@localhost ~]# redis-cli get no001

(nil)

redis类型

字符串类型

列表类型 列表是数组 对应

[root@localhost ~]# redis-cli rpush messages "hello"

(integer) 1

[root@localhost ~]# redis-cli rpush messages "hell"

(integer) 2

显示

[root@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

编辑slaveredis.conf

vim /application/redis/conf/redis.conf

slaveof下面添加:

slaveof 192.168.2.1 6379 主库地址和端口号

slave查看

[root@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查看

[root@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

在从库做个监控,主库写数据验证

[root@localhost ~]# redis-cli 主库创建数据库

127.0.0.1:6379> set t1 xiaohu01

OK

127.0.0.1:6379> get t1

"xiaohu01"

查看从库同步

[root@localhost ~]# redis-cli -h 192.168.2.4 get t1

"xiaohu01"

远程连接到从库查看数据同步了

[root@localhost ~]# redis-cli -h localhost -p 6379 monitor 从库开启监控数据库写入

OK

1458772016.182626 [0 192.168.2.1:6379] "PING"


数据 支持 数据库 类型 同步 存储 场景 服务 主从 问题 内存 命令 性能 一致 成功 一致性 不断 字符 工具 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电脑的服务器怎么判断是开还是关 一个数据中心放几个服务器 vue用的是什么服务器 网络安全基本知识视频 花雨庭迷你服务器 江西互联网新科技 女生读计算机网络技术好就业吗 网络安全知识宣讲新闻稿 沙龙主题软件开发 我的世界1.17中国服务器 连云港java软件开发项目 研究服务器安全的背景及意义 数据库怎么唤醒出来 杭电网络安全学院吧 执行网络安全注意事项 计算机网络技术技术任职职称 河北制造软件开发单价 wcd数据库管理系统 东营联想服务器哪个系列好 软件测试难还是软件开发难 怎样设置邮箱的接受服务器 携程软件开发工程师待遇 软件开发工具自考在线测验 汝城县网络安全竞赛 网络安全法坚持安全管理责任 网络技术公司注销 通信工程和网络安全工程 软件开发成功能赚多少钱 周鸿祎记录片网络安全 杨浦区推广软件开发问答知识
0