Redis集群的安裝

一习霹、基本介紹

Redis集群至少需要3個(gè)主節(jié)點(diǎn)暇屋,要保證Redis的高可用性,那每個(gè)主節(jié)點(diǎn)至少需要一個(gè)從節(jié)點(diǎn)(如果沒(méi)有從節(jié)點(diǎn)攘轩,那集群中的某個(gè)主節(jié)點(diǎn)掛掉了叉存,那這個(gè)節(jié)點(diǎn)中的數(shù)據(jù)也就獲取不到了),所以Redis集群就至少需要6個(gè)節(jié)點(diǎn)度帮,3個(gè)主節(jié)點(diǎn)歼捏,3個(gè)從節(jié)點(diǎn)稿存。

Redis集群的數(shù)據(jù)共享
Redis 集群使用數(shù)據(jù)分片(sharding)而非一致性哈希(consistency hashing)來(lái)實(shí)現(xiàn): 一個(gè) Redis 集群包含 16384 個(gè)哈希槽(hash slot), 數(shù)據(jù)庫(kù)中的每個(gè)鍵都屬于這 16384 個(gè)哈希槽的其中一個(gè)瞳秽, 集群使用公式 CRC16(key) % 16384 來(lái)計(jì)算鍵 key 屬于哪個(gè)槽瓣履, 其中CRC16(key) 語(yǔ)句用于計(jì)算鍵 key 的 CRC16 校驗(yàn)和 。
集群中的每個(gè)節(jié)點(diǎn)負(fù)責(zé)處理一部分哈希槽练俐。 舉個(gè)例子袖迎, 一個(gè)集群可以有三個(gè)哈希槽, 其中:
? 節(jié)點(diǎn) A 負(fù)責(zé)處理 0 號(hào)至 5500 號(hào)哈希槽腺晾。
? 節(jié)點(diǎn) B 負(fù)責(zé)處理 5501 號(hào)至 11000 號(hào)哈希槽瓢棒。
? 節(jié)點(diǎn) C 負(fù)責(zé)處理 11001 號(hào)至 16384 號(hào)哈希槽。
這種將哈希槽分布到不同節(jié)點(diǎn)的做法使得用戶(hù)可以很容易地向集群中添加或者刪除節(jié)點(diǎn)丘喻。 比如說(shuō):
? 如果用戶(hù)將新節(jié)點(diǎn) D 添加到集群中, 那么集群只需要將節(jié)點(diǎn) A 念颈、B 泉粉、 C 中的某些槽移動(dòng)到節(jié)點(diǎn) D 就可以了。
? 與此類(lèi)似榴芳, 如果用戶(hù)要從集群中移除節(jié)點(diǎn) A 嗡靡, 那么集群只需要將節(jié)點(diǎn) A 中的所有哈希槽移動(dòng)到節(jié)點(diǎn) B 和節(jié)點(diǎn) C , 然后再移除空白(不包含任何哈希槽)的節(jié)點(diǎn) A 就可以了窟感。
因?yàn)閷⒁粋€(gè)哈希槽從一個(gè)節(jié)點(diǎn)移動(dòng)到另一個(gè)節(jié)點(diǎn)不會(huì)造成節(jié)點(diǎn)阻塞讨彼, 所以無(wú)論是添加新節(jié)點(diǎn)還是移除已存在節(jié)點(diǎn), 又或者改變某個(gè)節(jié)點(diǎn)包含的哈希槽數(shù)量柿祈, 都不會(huì)造成集群下線哈误。
所以每次往Redis中set值的時(shí)候,會(huì)根據(jù)Redis的計(jì)算規(guī)則算出這個(gè)這個(gè)值的哈希值躏嚎,然后再把數(shù)據(jù)放到對(duì)應(yīng)處理這個(gè)哈希值的節(jié)點(diǎn)上蜜自,獲取數(shù)據(jù)的時(shí)候也是一樣的道理。

二卢佣、安裝

1重荠、服務(wù)器規(guī)劃

注意:端口的規(guī)劃請(qǐng)事先確認(rèn)好是否已經(jīng)被占用,建議各個(gè)服務(wù)器對(duì)應(yīng)端口的數(shù)值帶有一定的規(guī)律性虚茶,便于安裝和維護(hù)

Paste_Image.png

2戈鲁、在對(duì)應(yīng)的服務(wù)器中打開(kāi)對(duì)應(yīng)的端口

切換至root用戶(hù)
# vi /etc/sysconfig/iptables
192.168.31.143中增加:
## redis -A INPUT -m state --state NEW -m tcp -p tcp --dport 7111 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 17111 -j ACCEPT
192.168.31.103中增加:
## redis -A INPUT -m state --state NEW -m tcp -p tcp --dport 7112 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 17112 -j ACCEPT
192.168.31.154中增加:
## redis -A INPUT -m state --state NEW -m tcp -p tcp --dport 7113 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 17113 -j ACCEPT
192.168.31.117中增加:
## redis -A INPUT -m state --state NEW -m tcp -p tcp --dport 7114 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 17114 -j ACCEPT
192.168.31.146中增加:
## redis -A INPUT -m state --state NEW -m tcp -p tcp --dport 7115 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 17115 -j ACCEPT
192.168.31.173中增加:
## redis -A INPUT -m state --state NEW -m tcp -p tcp --dport 7116 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 17116 -j ACCEPT
在各個(gè)服務(wù)器增加完端口后,進(jìn)行端口配置重啟
# service iptables restart

下面對(duì)Redis進(jìn)行安裝嘹叫,安裝目錄:/usr/local/redis3婆殿,安裝用戶(hù):root

3、編譯和安裝所需要的包

# yum install gcc tcl

4待笑、下載或者上傳Redis3的最新穩(wěn)定版本到/usr/local/src

# cd /usr/local/src
# wget http://download.redis.io/releases/redis-3.0.3.tar.gz

5鸣皂、創(chuàng)建安裝目錄:

# mkdir /usr/local/redis3

6、解壓并進(jìn)入目錄

# tar -zxvf redis-3.0.3.tar.gz
# cd redis-3.0.3

7、編譯安裝(使用PREFIX指定安裝目錄)

# make PREFIX=/usr/local/redis3 install
安裝完成后寞缝,可以看到/usr/local/redis3目錄下有一個(gè)bin目錄癌压,bin目錄里面就是redis的命令腳本,如下:
redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server

以上步驟在每臺(tái)機(jī)器上都要執(zhí)行安裝

8荆陆、創(chuàng)建集群配置目錄滩届,并拷貝redis.conf配置文件到各個(gè)節(jié)點(diǎn)配置目錄

192.168.31.143
# mkdir -p /usr/local/redis3/cluster/7111
# cp /usr/local/src/redis3.0/redis.conf /usr/local/redis3/cluster/7111/redis-7111.conf

192.168.31.103
# mkdir -p /usr/local/redis3/cluster/7112
# cp /usr/local/src/redis-3.0.3/redis.conf /usr/local/redis3/cluster/7112/redis-7112.conf

192.168.31.154
# mkdir -p /usr/local/redis3/cluster/7113
# cp /usr/local/src/redis-3.0.3/redis.conf /usr/local/redis3/cluster/7113/redis-7113.conf

192.168.31.117
# mkdir -p /usr/local/redis3/cluster/7114
# cp /usr/local/src/redis-3.0.3/redis.conf /usr/local/redis3/cluster/7114/redis-7114.conf

192.168.31.146
# mkdir -p /usr/local/redis3/cluster/7115
# cp /usr/local/src/redis-3.0.3/redis.conf /usr/local/redis3/cluster/7115/redis-7115.conf

192.168.31.173
# mkdir -p /usr/local/redis3/cluster/7116
# cp /usr/local/src/redis-3.0.3/redis.conf /usr/local/redis3/cluster/7116/redis-7116.conf

9、修改6個(gè)節(jié)點(diǎn)的redis.conf配置文件內(nèi)容

Paste_Image.png
使用以下命令逐個(gè)啟動(dòng)這6個(gè)Redis節(jié)點(diǎn)實(shí)例
192.168.31.143
# /usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/7111/redis-7111.conf

192.168.31.103
# /usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/7112/redis-7112.conf

192.168.31.154
# /usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/7113/redis-7113.conf

192.168.31.117
# /usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/7114/redis-7114.conf

192.168.31.146
# /usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/7115/redis-7115.conf

192.168.31.173
# /usr/local/redis3/bin/redis-server /usr/local/redis3/cluster/7116/redis-7116.conf
逐個(gè)啟動(dòng)后被啼,可以用ps -ef|grep redis命令來(lái)檢測(cè)是否啟動(dòng)成功
root 3273 1 3 15:18 ? 00:00:00 /usr/local/redis3/bin/redis-server *:7111 [cluster]

接下來(lái)準(zhǔn)備創(chuàng)建集群

10帜消、安裝ruby和rubygems(注意:需要ruby的版本在1.8.7及以上)

# yum install ruby rubygems
查看ruby的版本信息
# ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]

11、gem安裝redis ruby接口

# gem install redis
出現(xiàn)如下信息:
Successfully installed redis-3.3.1
1 gem installed
Installing ri documentation for redis-3.3.1...
Installing RDoc documentation for redis-3.3.1...

12浓体、執(zhí)行Redis集群創(chuàng)建命令(只需要在其中一個(gè)節(jié)點(diǎn)上執(zhí)行即可)

拷貝集群創(chuàng)建文件:
# cp /usr/local/src/redis-3.0.3/src/redis-trib.rb /usr/local/bin/redis-trib
執(zhí)行集群創(chuàng)建腳本:
# redis-trib create --replicas 1 192.168.31.117:7114 192.168.31.146:7115 192.168.31.173:7116 192.168.31.143:7111 192.168.31.103:7112 192.168.31.154:7113
集群創(chuàng)建過(guò)程說(shuō)明:
給定redis-trib程序的命令是create泡挺,這表示我們希望創(chuàng)建一個(gè)新的集群,--replicas 1表示每個(gè)主節(jié)點(diǎn)下面有一個(gè)從節(jié)點(diǎn)命浴,后面的參數(shù)則是redis實(shí)例的地址列表娄猫,程序使用這些地址所指示的實(shí)例來(lái)創(chuàng)建新的集群。
在第一次執(zhí)行的時(shí)候生闲,輸出信息如下:
<pre>

Creating cluster
Connecting to node 192.168.31.117:7114: OK
Connecting to node 192.168.31.146:7115: OK
Connecting to node 192.168.31.173:7116: OK
Connecting to node 192.168.31.143:7111: OK

Connecting to node 192.168.31.103:7112: OK
Connecting to node 192.168.31.154:7113: OK

Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.31.154:7113
192.168.31.173:7116
192.168.31.143:7111
Adding replica 192.168.31.146:7115 to 192.168.31.154:7113
Adding replica 192.168.31.117:7114 to 192.168.31.173:7116
Adding replica 192.168.31.103:7112 to 192.168.31.143:7111
S: 26a53ca5649a85d75d7f78c17897846fad8548c3 192.168.31.117:7114
replicates 3dc26de1ddb9304dc3451e7044c91b3fd5cb77b9

S: 51dfb182af4fdc33c69218fe6f8421c0311f67f0 192.168.31.146:7115
replicates e9b5cd667523705b7f4052dd847a45c9abd4ff2e
M: 3dc26de1ddb9304dc3451e7044c91b3fd5cb77b9 192.168.31.173:7116
slots:5461-10922 (5462 slots) master
M: 45d00776095446fcf7e194a53e50311da4e2c87e 192.168.31.143:7111
slots:10923-16383 (5461 slots) master
S: aa1577c0295783245870e114ffdcabd0ee9bfd07 192.168.31.103:7112
replicates 45d00776095446fcf7e194a53e50311da4e2c87e
M: e9b5cd667523705b7f4052dd847a45c9abd4ff2e 192.168.31.154:7113
slots:0-5460 (5461 slots) master
Can I set the above configuration? (type 'yes' to accept):
</pre>
從以上信息可以看到master節(jié)點(diǎn)為7111媳溺、7113、7116碍讯,這和我們預(yù)先計(jì)劃的不一致悬蔽,預(yù)先計(jì)劃的master節(jié)點(diǎn)是7111、7112捉兴、7113蝎困,所以在確認(rèn)這一步,我們輸入no倍啥,然后再執(zhí)行上面的腳本难衰,在試過(guò)幾次后終于得到了我們預(yù)想的設(shè)置(好像是隨機(jī)的,沒(méi)有規(guī)律逗栽,這一步要注意核對(duì)主從關(guān)系是否是你所預(yù)想的)
<pre>

Creating cluster
Connecting to node 192.168.31.117:7114: OK
Connecting to node 192.168.31.146:7115: OK
Connecting to node 192.168.31.173:7116: OK
Connecting to node 192.168.31.143:7111: OK
Connecting to node 192.168.31.103:7112: OK
Connecting to node 192.168.31.154:7113: OK
Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.31.103:7112
192.168.31.154:7113
192.168.31.143:7111
Adding replica 192.168.31.146:7115 to 192.168.31.103:7112
Adding replica 192.168.31.173:7116 to 192.168.31.154:7113
Adding replica 192.168.31.117:7114 to 192.168.31.143:7111
S: 26a53ca5649a85d75d7f78c17897846fad8548c3 192.168.31.117:7114
replicates 45d00776095446fcf7e194a53e50311da4e2c87e
S: 51dfb182af4fdc33c69218fe6f8421c0311f67f0 192.168.31.146:7115
replicates aa1577c0295783245870e114ffdcabd0ee9bfd07
S: 3dc26de1ddb9304dc3451e7044c91b3fd5cb77b9 192.168.31.173:7116
replicates e9b5cd667523705b7f4052dd847a45c9abd4ff2e
M: 45d00776095446fcf7e194a53e50311da4e2c87e 192.168.31.143:7111
slots:10923-16383 (5461 slots) master
M: aa1577c0295783245870e114ffdcabd0ee9bfd07 192.168.31.103:7112
slots:0-5460 (5461 slots) master
M: e9b5cd667523705b7f4052dd847a45c9abd4ff2e 192.168.31.154:7113
slots:5461-10922 (5462 slots) master
Can I set the above configuration? (type 'yes' to accept):
</pre>
輸入yes盖袭,集群就會(huì)將配置應(yīng)用到各個(gè)節(jié)點(diǎn),并join各個(gè)節(jié)點(diǎn)彼宠,讓各個(gè)節(jié)點(diǎn)開(kāi)始通訊鳄虱,輸出如下信息
<pre>
Nodes configuration updated
Assign a different config epoch to each node
Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
Performing Cluster Check (using node 192.168.31.117:7114)
M: 26a53ca5649a85d75d7f78c17897846fad8548c3 192.168.31.117:7114
slots: (0 slots) master
replicates 45d00776095446fcf7e194a53e50311da4e2c87e
M: 51dfb182af4fdc33c69218fe6f8421c0311f67f0 192.168.31.146:7115
slots: (0 slots) master
replicates aa1577c0295783245870e114ffdcabd0ee9bfd07
M: 3dc26de1ddb9304dc3451e7044c91b3fd5cb77b9 192.168.31.173:7116
slots: (0 slots) master
replicates e9b5cd667523705b7f4052dd847a45c9abd4ff2e
M: 45d00776095446fcf7e194a53e50311da4e2c87e 192.168.31.143:7111
slots:10923-16383 (5461 slots) master
M: aa1577c0295783245870e114ffdcabd0ee9bfd07 192.168.31.103:7112
slots:0-5460 (5461 slots) master
M: e9b5cd667523705b7f4052dd847a45c9abd4ff2e 192.168.31.154:7113
slots:5461-10922 (5462 slots) master
[OK] All nodes agree about slots configuration.
Check for open slots...
Check slots coverage...
[OK] All 16384 slots covered.
</pre>
可以看出:
192.168.31.117:7114從節(jié)點(diǎn)所屬的主節(jié)點(diǎn)為192.168.31.143:7111
192.168.31.146:7115從節(jié)點(diǎn)所屬的主節(jié)點(diǎn)為192.168.31.103:7112
192.168.31.173:7116從節(jié)點(diǎn)所屬的主節(jié)點(diǎn)為192.168.31.154:7113(通過(guò)replicates 后面的值去匹配,相當(dāng)于外鍵ID)
192.168.31.103:7112分配的槽點(diǎn)是是0-5460段
Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.31.117:7114)
M: 26a53ca5649a85d75d7f78c17897846fad8548c3 192.168.31.117:7114
slots: (0 slots) master
replicates 45d00776095446fcf7e194a53e50311da4e2c87e
M: 51dfb182af4fdc33c69218fe6f8421c0311f67f0 192.168.31.146:7115
slots: (0 slots) master
replicates aa1577c0295783245870e114ffdcabd0ee9bfd07
M: 3dc26de1ddb9304dc3451e7044c91b3fd5cb77b9 192.168.31.173:7116
slots: (0 slots) master
replicates e9b5cd667523705b7f4052dd847a45c9abd4ff2e
M: 45d00776095446fcf7e194a53e50311da4e2c87e 192.168.31.143:7111
slots:10923-16383 (5461 slots) master
M: aa1577c0295783245870e114ffdcabd0ee9bfd07 192.168.31.103:7112
slots:0-5460 (5461 slots) master
M: e9b5cd667523705b7f4052dd847a45c9abd4ff2e 192.168.31.154:7113
slots:5461-10922 (5462 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
</pre>
可以看出:
192.168.31.117:7114從節(jié)點(diǎn)所屬的主節(jié)點(diǎn)為192.168.31.143:7111
192.168.31.146:7115從節(jié)點(diǎn)所屬的主節(jié)點(diǎn)為192.168.31.103:7112
192.168.31.173:7116從節(jié)點(diǎn)所屬的主節(jié)點(diǎn)為192.168.31.154:7113(通過(guò)replicates 后面的值去匹配凭峡,相當(dāng)于外鍵ID)
192.168.31.103:7112分配的槽點(diǎn)是是0-5460段
192.168.31.154:7113分配的槽點(diǎn)是5461-10922段
192.168.31.143:7111分配的槽點(diǎn)是10923-16383段
(集群中的每個(gè)節(jié)點(diǎn)負(fù)責(zé)處理一部分哈希槽)
最后一行信息表示集群中的16384個(gè)槽都有至少一個(gè)主節(jié)點(diǎn)在處理拙已,集群運(yùn)行正常

13、查看redis集群的從屬狀態(tài)關(guān)系

# /usr/local/redis3/bin/redis-cli -p 7111 cluster nodes
輸出:
<pre>
26a53ca5649a85d75d7f78c17897846fad8548c3 192.168.31.117:7114 slave 45d00776095446fcf7e194a53e50311da4e2c87e 0 1471133132198 4 connected

3dc26de1ddb9304dc3451e7044c91b3fd5cb77b9 192.168.31.173:7116 slave e9b5cd667523705b7f4052dd847a45c9abd4ff2e 0 1471133130178 6 connected

aa1577c0295783245870e114ffdcabd0ee9bfd07 192.168.31.103:7112 master - 0 1471133133207 5 connected 0-5460

51dfb182af4fdc33c69218fe6f8421c0311f67f0 192.168.31.146:7115 slave aa1577c0295783245870e114ffdcabd0ee9bfd07 0 1471133134217 5 connected

45d00776095446fcf7e194a53e50311da4e2c87e 192.168.31.143:7111 myself,master - 0 0 4 connected 10923-16383

e9b5cd667523705b7f4052dd847a45c9abd4ff2e 192.168.31.154:7113 master - 0 1471133131189 6 connected 5461-10922
</pre>

14摧冀、集群的簡(jiǎn)單測(cè)試

隨便挑一個(gè)節(jié)點(diǎn)倍踪,啟動(dòng)redis終端
# /usr/local/redis3/bin/redis-cli -c -p 7114
<pre>127.0.0.1:7114> set key1 dreyer
-> Redirected to slot [9189] located at 192.168.31.154:7113
OK
192.168.31.154:7113> get key1
"dreyer"
192.168.31.154:7113>
</pre>

可以看到set的key重定向192.168.31.154:711這個(gè)節(jié)點(diǎn)系宫,因?yàn)閞edis集群會(huì)有一個(gè)使用公式CRC16(key) % 16384來(lái)計(jì)算key屬于哪個(gè)槽

我們切換到192.168.31.154:7113這個(gè)節(jié)點(diǎn)上來(lái)獲取剛剛設(shè)置key的值,因?yàn)樵O(shè)置的key值就落在這個(gè)節(jié)點(diǎn)上建车,所以能直接獲取到數(shù)據(jù)
# /usr/local/redis3/bin/redis-cli -c -p 7113
<pre>127.0.0.1:7113> get key1
"dreyer"
</pre>
我們?cè)偾袚Q到192.168.31.143:7111這個(gè)節(jié)點(diǎn)上來(lái)獲取剛剛設(shè)置的key值
# /usr/local/redis3/bin/redis-cli -c -p 7111
<pre>
127.0.0.1:7111> get key1
-> Redirected to slot [9189] located at 192.168.31.154:7113
"dreyer"
</pre>

可以看到這7111這個(gè)節(jié)點(diǎn)獲取數(shù)據(jù)的時(shí)候扩借,會(huì)重定向至192.168.31.154:7113節(jié)點(diǎn)上獲取數(shù)據(jù)

至此,完成缤至!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末潮罪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子领斥,更是在濱河造成了極大的恐慌嫉到,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件月洛,死亡現(xiàn)場(chǎng)離奇詭異何恶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嚼黔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)导而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人隔崎,你說(shuō)我怎么就攤上這事≡铣螅” “怎么了爵卒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撵彻。 經(jīng)常有香客問(wèn)我钓株,道長(zhǎng),這世上最難降的妖魔是什么陌僵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任轴合,我火速辦了婚禮,結(jié)果婚禮上碗短,老公的妹妹穿的比我還像新娘受葛。我一直安慰自己,他們只是感情好偎谁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布总滩。 她就那樣靜靜地躺著,像睡著了一般巡雨。 火紅的嫁衣襯著肌膚如雪闰渔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天铐望,我揣著相機(jī)與錄音冈涧,去河邊找鬼茂附。 笑死,一個(gè)胖子當(dāng)著我的面吹牛督弓,可吹牛的內(nèi)容都是我干的营曼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咽筋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼溶推!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起奸攻,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蒜危,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后睹耐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體辐赞,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年硝训,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了响委。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窖梁,死狀恐怖赘风,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纵刘,我是刑警寧澤邀窃,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站假哎,受9級(jí)特大地震影響瞬捕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舵抹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一肪虎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惧蛹,春花似錦扇救、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至陶缺,卻和暖如春钾挟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饱岸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工掺出, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徽千,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓汤锨,卻偏偏與公主長(zhǎng)得像双抽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闲礼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容