以前用redis用的很多,各種數(shù)據(jù)類型用的飛起,算是用得很溜了。不過那都是封裝好的方法,自己直接調(diào)用。以前的公司比較規(guī)范,開發(fā)只是開發(fā),很少去做跟運(yùn)維相關(guān)的事情。
換了一份工作,不過這邊項(xiàng)目剛開始起步,各種東西還不是很全,需要從頭做起。運(yùn)維什么的都是自己來。這下要考慮的東西就多了。比如說redis主從同步配置,redis認(rèn)證等等。一路摸索過來,踩了各種坑。這篇文章主要記錄redis主從配置,認(rèn)證機(jī)制,以及php操作redis的幾個(gè)腳本。
1 主從同步
個(gè)人認(rèn)為,redis比mysql簡單多了。redis的主從配置真的很簡單,配置一句slaveof即可。唯一的坑就在于配置之前,確保主從服務(wù)器之間的聯(lián)通,主從服務(wù)器之間redis服務(wù)器的聯(lián)通。ping主從,redis-cli -h 連接測試。如果有不通的地方,配置一下conf文件即可。redis.conf文件也是相當(dāng)?shù)娜菀桌斫獾?/span>
下面簡單的以一主一從進(jìn)行講解主從配置。
主 192.168.211.129 從 192.168.211.130
首先確保 主能連自己,主機(jī)能連到從機(jī)
1
2
3
4
5
6
7
8
9
10
11
12
13 |
root@ubuntu:~/ceshi# ping 192.168.211.130 PING 192.168.211.130 (192.168.211.130) 56(84) bytes of data. 64 bytes from 192.168.211.130: icmp_req=1 ttl=64 time =1.87 ms 64 bytes from 192.168.211.130: icmp_req=2 ttl=64 time =0.334 ms 64 bytes from 192.168.211.130: icmp_req=3 ttl=64 time =0.982 ms ^C --- 192.168.211.130 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.334/1.062/1.872/0.631 ms root@ubuntu:~/ceshi# redis-cli redis 127.0.0.1:6379> root@ubuntu:~/ceshi# redis-cli -h 192.168.211.130 redis 192.168.211.130:6379> |
也要確保從機(jī)能連到主機(jī)
一半自己連自己是沒有問題的,但是自己一半不允許其他機(jī)器連接。
修改redis.conf 的 bind_ip.一般注釋掉
#bind 127.0.0.1
這樣其他機(jī)器也能通過ip+端口訪問了
其實(shí)配置主從同步真的很簡單,redis.conf文件講解的很清楚,slaveof master即可
我們?cè)趶臋C(jī)上配置這句話
1 |
slaveof 192.168.211.129 6379 |
這樣在主機(jī)上插入數(shù)據(jù),從機(jī)上也會(huì)有數(shù)據(jù)。
2 連接認(rèn)證
在redis.conf中,有一個(gè)bind項(xiàng),默認(rèn)為 127.0.0.1,如果不注釋掉這句話,只允許本機(jī)連接。注釋掉之后,任何機(jī)器 通過ip+端口就能連接。這存在安全問題,在這里加上驗(yàn)證機(jī)制即可。
redis的驗(yàn)證機(jī)制也是相當(dāng)?shù)暮唵巍T趓edis.conf中,有一句:
1 |
# requirepass foobared |
去掉注釋,把foobared改成自己的認(rèn)證密碼即可。
這樣連接的時(shí)候, redis-cli -h x.x..x.x -a passwd 即可,加上 -a 參數(shù)認(rèn)證
如果主機(jī)配置了認(rèn)證機(jī)制,在從機(jī)的 配置上,也加上認(rèn)證密碼即可。修改從機(jī)的配置redis.conf
1 |
#masterauth passwd |
去掉注釋,修改成主機(jī)的認(rèn)證密碼即可
3 常見的linux下操作 (修改redis.conf之后重啟)
1
2
3
4
5
6
7
8 |
root@ubuntu:~# ps -ef|grep redis root 1536 1 0 Jun16 ? 00:00:03 /usr/bin/redis-server /etc/redis/redis.conf root 1724 1623 0 00:28 pts/0 00:00:00 grep --color= auto redis root@ubuntu:~# kill 1536 root@ubuntu:~# /usr/bin/redis-server /etc/redis/redis.conf root@ubuntu:~# ps -ef|grep redis root 1726 1 1 00:29 ? 00:00:00 /usr/bin/redis-server /etc/redis/redis.conf root 1728 1623 0 00:29 pts/0 00:00:00 grep --color= auto redis |
加了認(rèn)證之后的連接
1
2
3
4 |
root@ubuntu:~# redis-cli -h 192.168.211.130 -p 6379 -a foobared redis 192.168.211.130:6379> keys * 1) "a" redis 192.168.211.130:6379> |
3 php操作redis連接腳本
1
2
3
4
5 |
$redis = new Redis(); $redis->connect(¥redisHost, $redisPort); $redis->auth( 'foobared' ); $id = $redis->rpop($ this ->mailList); //右邊彈出一個(gè) $redis->close(); |
這只是一個(gè)示例。為了說明redis連接之后的認(rèn)證方法auth如何使用