Redis基礎(chǔ)到集群實戰(zhàn)筆記
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比施秉網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式施秉網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋施秉地區(qū)。費用合理售后完善,十載實體公司更值得信賴。持久化存儲
redis介紹
redis是基于key-value的持久化數(shù)據(jù)庫存儲系統(tǒng),redis和memcached服務很想,但是redis支持的數(shù)據(jù)存儲類型
服務更豐富
memcached支持value
redis支持string(字符)list(鏈表) set(集合) push、pop
redis比memcached服務性能好,但是比相對性的關(guān)系數(shù)據(jù)庫(如mysql) 相對差
redis支持各種不同方式的排序,與memcached一樣,為了保存效率,數(shù)據(jù)都是緩存在內(nèi)存中提供服務,但是redis會定時的將
數(shù)據(jù)存儲在磁盤當中,而且redis支持master-slave(主從)同步,這很類似MYSQL
redis優(yōu)點
可以持久化存儲數(shù)據(jù)
性能很高:redis支持超過100k+秒的讀寫頻率。
豐富的數(shù)據(jù)類型:strings lists,hashes,Sets數(shù)據(jù)類型操作
redis支持主從復制
redis應用場景
傳統(tǒng)的MYSQL+MEMCACHED架構(gòu)遇到的問題
MYSQL數(shù)據(jù)庫是適合進行海量數(shù)據(jù)存儲的,加上通過Memcached熱點數(shù)據(jù)放在內(nèi)存cache中,隨著訪問量增長,就會出現(xiàn)
問題。
1需要不斷的對MYSQL拆庫拆表,Memcached也需要不斷地擴充,占據(jù)大量的運維時間
2Memcached和MYSQL數(shù)據(jù)一致性問題
3Memcached數(shù)據(jù)庫命中率低或當機,導致大量的訪問直接穿透數(shù)據(jù)庫,導致mysql無法支持訪問
4跨級方cache同步一致性問題
redis最佳應用場景
1Redis最佳使用場景全部數(shù)據(jù)是in-memory(內(nèi)存)
2Redis更多的場景作為Memcached替代
3當需要除key/value之外的更多數(shù)據(jù)類型支持的時候,使用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 指定安裝路徑
裝完后bin有5個命令
[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 用于本地數(shù)據(jù)庫檢查
redis-server Redis服務的啟動程序
要想啟動Redis要做環(huán)境變量
[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>
創(chuàng)建庫查看庫
127.0.0.1:6379> set no002 xiaohu
OK
127.0.0.1:6379> get no002
"xiaohu"
不在命令行創(chuàng)建庫
[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"
刪除數(shù)據(jù)庫
[root@localhost ~]# redis-cli del no001
(integer) 1
[root@localhost ~]# redis-cli get no001
(nil)
redis類型
字符串類型
列表類型 列表是數(shù)組 對應
[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
編輯slave的redis.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 已經(jīng)成功
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
在從庫做個監(jiān)控,主庫寫數(shù)據(jù)驗證
[root@localhost ~]# redis-cli 主庫創(chuàng)建數(shù)據(jù)庫
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"
遠程連接到從庫查看數(shù)據(jù)同步了
[root@localhost ~]# redis-cli -h localhost -p 6379 monitor 從庫開啟監(jiān)控數(shù)據(jù)庫寫入
OK
1458772016.182626 [0 192.168.2.1:6379] "PING"
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:Redis集群實戰(zhàn)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://aaarwkj.com/article32/cocjsc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、App開發(fā)、Google、面包屑導航、網(wǎng)站排名、移動網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容