MemCached

MemCached原理

  • 許多Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中惰聂,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示
  • 隨著數(shù)據(jù)量的增大,訪問的集中愚屁,就會出現(xiàn)RDBMS的負擔(dān)加重奸笤,數(shù)據(jù)庫響應(yīng)惡化,網(wǎng)站顯示延遲等重大影響

數(shù)據(jù)庫存儲位置對比

  • 性能: CPU緩存>內(nèi)存>磁盤>數(shù)據(jù)庫
  • 價格: CPU緩存>內(nèi)存>磁盤>數(shù)據(jù)庫

Memcached簡介

memecached是高性能的分布式緩存服務(wù)器

  • 用來集中緩存數(shù)據(jù)庫查詢結(jié)果碴开,減少數(shù)據(jù)庫訪問次數(shù)毅该,以提高動態(tài)Web應(yīng)用的響應(yīng)速度
  • 官方網(wǎng)站:http://memcached.org/

內(nèi)存管理機制

  1. 傳統(tǒng)內(nèi)存分配機制
  • 使用完通過分配的內(nèi)存后回收內(nèi)存,這種方式易產(chǎn)生內(nèi)存碎片并降低操作系統(tǒng)對內(nèi)存的管理效率
  1. Slab Allocation機制
  • memcached使用這種內(nèi)存管理機制潦牛,可以提高讀寫速度

構(gòu)建memcached服務(wù)

  • 安裝memcached軟件眶掌,并啟動服務(wù)
  • 使用telnet測試memcached服務(wù)
  • 對memcached進行增、刪巴碗、改朴爬、查等操作

memcached是高性能的分布式緩存服務(wù)器,用來集中緩存數(shù)據(jù)庫查詢結(jié)果橡淆,減少數(shù)據(jù)庫訪問次數(shù)召噩,以提高動態(tài)Web應(yīng)用的響應(yīng)速度。訪問拓撲如圖所示逸爵。

在這里插入圖片描述
  • 使用1臺RHEL7虛擬機作為memcached服務(wù)器(192.168.4.5)具滴。
  • 在RHEL7系統(tǒng)光盤中包含有memcached,因此需要提前配置yum源师倔,即可直接使用yum安裝构韵,客戶端測試時需要提前安裝telnet遠程工具。
  • 驗證時需要客戶端主機安裝telnet趋艘,遠程memcached來驗證服務(wù)器的功能:
  1. add name 0 180 10 //變量不存在則添加
  2. set name 0 180 10 //添加或替換變量
  3. replace name 0 180 10 //替換
  4. get name //讀取變量
  5. append name 0 180 10 //向變量中追加數(shù)據(jù)
  6. delete name //刪除變量
  7. stats //查看狀態(tài)
  8. flush_all //清空所有
    提示:0表示不壓縮疲恢,180為數(shù)據(jù)緩存時間,10為需要存儲的數(shù)據(jù)字節(jié)數(shù)量致稀。

步驟

一:構(gòu)建memcached服務(wù)

(1)使用yum安裝軟件包memcached

[root@proxy ~]# yum -y  install   memcached
[root@proxy ~]# rpm -qa memcached
memcached-1.4.15-10.el7_3.1.x86_64

(2) memcached配置文件(查看即可冈闭,不需要修改)

[root@proxy ~]# vim /usr/lib/systemd/system/memcached.service
ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS
[root@proxy ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

(3)啟動服務(wù)并查看網(wǎng)絡(luò)連接狀態(tài)驗證是否開啟成功:
netstat命令可以查看系統(tǒng)中啟動的端口信息俱尼,該命令常用選項如下:
-a顯示所有端口的信息
-n以數(shù)字格式顯示端口號
-t顯示TCP連接的端口
-u顯示UDP連接的端口
-l顯示服務(wù)正在監(jiān)聽的端口信息抖单,如httpd啟動后,會一直監(jiān)聽80端口
-p顯示監(jiān)聽端口的服務(wù)名稱是什么(也就是程序名稱)
注意:在RHEL7系統(tǒng)中,使用ss命令可以替代netstat矛绘,功能與選項一樣耍休。

[root@proxy ~]# systemctl  start  memcached
[root@proxy ~]# systemctl  status  memcached
[root@proxy ~]# netstat  -anptu  |  grep memcached
tcp    0    0 0.0.0.0:11211        0.0.0.0:*        LISTEN        2839/memcached      
tcp    0    0 :::11211            :::*                LISTEN        2839/memcached      
udp    0    0 0.0.0.0:11211        0.0.0.0:*                    2839/memcached      
udp    0    0 :::11211            :::*                            2839/memcached
[root@proxy ~]# setenforce 0
[root@proxy ~]# firewall-cmd --set-default-zone=trusted

二:使用telnet訪問memcached服務(wù)器

(1)使用yum安裝telnet
[root@proxy ~]# yum -y install telnet
(2)使用telnet連接服務(wù)器測試memcached服務(wù)器功能,包括增货矮、刪羊精、改、查等操作囚玫。

[root@proxy ~]# telnet  192.168.4.5  11211
Trying 192.168.4.5...
……
##提示:0表示不壓縮喧锦,180為數(shù)據(jù)緩存時間,3為需要存儲的數(shù)據(jù)字節(jié)數(shù)量抓督。
set name 0 180 3                //定義變量燃少,變量名稱為name
plj                            //輸入變量的值,值為plj                
STORED
get name                        //獲取變量的值
VALUE name 0 3                 //輸出結(jié)果
plj
END
##提示:0表示不壓縮铃在,180為數(shù)據(jù)緩存時間阵具,3為需要存儲的數(shù)據(jù)字節(jié)數(shù)量。
add myname 0 180 10            //新建定铜,myname不存在則添加阳液,存在則報錯
set myname 0 180 10            //添加或替換變量
replace myname 0 180 10        //替換,如果myname不存在則報錯
get myname                    //讀取變量
append myname 0 180 10        //向變量中追加數(shù)據(jù)
delete myname                    //刪除變量
stats                        //查看狀態(tài)
flush_all                        //清空所有
quit                            //退出登錄   

LNMP+memcached

L指Linux揣炕,N指Nginx帘皿,M一般指MySQL,也可以指MariaDB畸陡,P一般指PHP矮烹,也可以指Perl或Python 部署LNMP+memcached網(wǎng)站平臺,通過PHP頁面實現(xiàn)對memcached服務(wù)器的數(shù)據(jù)操作

  • 部署LNMP實現(xiàn)PHP動態(tài)網(wǎng)站架構(gòu)
  • 為PHP安裝memcache擴展
    創(chuàng)建PHP頁面,并編寫PHP代碼罩锐,實現(xiàn)對memcached的數(shù)據(jù)操作
    使用2臺RHEL7虛擬機奉狈,其中一臺作為memcached及LNMP服務(wù)器(192.168.4.5)、另外一臺作為測試用的Linux客戶機(192.168.4.10)涩惑,如圖所示仁期。
    在這里插入圖片描述

    在RHEL7系統(tǒng)光盤中包含有我們需要的MariaDB、PHP,我們需要使用源碼安裝Nginx,使用RPM包安裝FPM鞋拟。另外如果希望使用PHP來操作memcached雌续,注意必須要為PHP安裝memcache擴展(php-pecl-memcache),否則PHP無法解析連接memcached的指令陈轿。客戶端測試時需要提前安裝telnet遠程工具。

一:部署LNMP環(huán)境(如果環(huán)境中已經(jīng)存在LNMP環(huán)境本步驟可以忽略)

(1)使用yum安裝基礎(chǔ)依賴包

[root@web1 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel
.. ..

(2)源碼安裝Nginx

[root@web1 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web1 ~]# cd nginx-1.12.2
[root@web1 nginx-1.12.2]#  ./configure   \
> --with-http_ssl_module 
[root@web1 nginx-1.12.2]# make && make install

(3)安裝MariaDB數(shù)據(jù)庫

[root@web1 ~]# yum -y install  mariadb  mariadb-server  mariadb-devel

(4)安裝PHP

[root@web1 ~]# yum -y install  php  php-mysql
[root@web1 ~]# yum -y install  php-fpm-5.4.16-42.el7.x86_64.rpm

(5)修改Nginx配置文件

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
            root   html;
            index  index.php  index.html   index.htm;
        }
 location  ~  \.php$  {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
           # fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi.conf;
        }

二:啟動服務(wù)(如果所有服務(wù)已經(jīng)啟動理逊,也可以忽略這一步驟)

(1)啟動Nginx服務(wù)
這里需要注意的是橡伞,如果服務(wù)器上已經(jīng)啟動了其他監(jiān)聽80端口的服務(wù)軟件(如httpd),則需要先關(guān)閉該服務(wù)晋被,否則會出現(xiàn)沖突兑徘。

[root@web1 ~]# systemctl stop  httpd                //如果該服務(wù)存在,則關(guān)閉該服務(wù)
[root@web1 ~]# /usr/local/nginx/sbin/nginx
[root@web1 ~]# netstat -utnlp | grep :80
tcp    0    0 0.0.0.0:80        0.0.0.0:*        LISTEN        32428/nginx 

(2)啟動MySQL服務(wù)

[root@web1 ~]# systemctl start mariadb
[root@web1 ~]# systemctl status mariadb

(3)啟動PHP-FPM服務(wù)

[root@web1 ~]# systemctl start php-fpm
[root@web1 ~]# systemctl status php-fpm

(4)關(guān)閉SELinux羡洛、防火墻

[root@web1 ~]# setenforce 0
[root@web1 ~]# firewall-cmd --set-default-zone=trusted

三:創(chuàng)建PHP頁面挂脑,使用PHP語言測試memcached服務(wù)

(1)部署測試頁面

創(chuàng)建PHP首頁文檔/usr/local/nginx/html/index.php,測試頁面可以參考lnmp_soft/php_scripts/mem.php欲侮。
注意:192.168.2.5是memcached數(shù)據(jù)庫崭闲。

 [root@web1 ~]# vim /usr/local/nginx/html/test.php
<?php
$memcache=new Memcache;                //創(chuàng)建memcache對象
$memcache->connect('192.168.2.5',11211) or die ('could not connect!!');
$memcache->set('key','test');             //定義變量
$get_values=$memcache->get('key');        //獲取變量值
echo $get_values;
?>

(2)客戶端測試(結(jié)果會失敗)
客戶端使用瀏覽器訪問服務(wù)器PHP首頁文檔威蕉,檢驗對memcached的操作是否成功:

[root@web1 ~]# firefox http://192.168.2.100/test.php

注意:這里因為沒有給PHP安裝擴展包镀脂,默認PHP無法連接memcached數(shù)據(jù)庫,需要給PHP安裝擴展模塊才可以連接memcached數(shù)據(jù)庫忘伞。
(3)為PHP添加memcache擴展

[root@web1 ~]# yum -y install  php-pecl-memcache
[root@web1 ~]# systemctl restart php-fpm

(4)客戶端再次測試(結(jié)果會成功顯示數(shù)據(jù)結(jié)果)

[root@web1 ~]# firefox http://192.168.2.100/test.php

PHP的本地Session信息

通過Nginx調(diào)度器負載后端兩臺Web服務(wù)器薄翅,實現(xiàn)以下目標:

  • 部署Nginx為前臺調(diào)度服務(wù)器
  • 調(diào)度算法設(shè)置為輪詢
  • 后端為兩臺LNMP服務(wù)器
  • 部署測試頁面,查看PHP本地的Session信息

方案

使用4臺RHEL7虛擬機氓奈,其中一臺作為Nginx前端調(diào)度器服務(wù)器(eth0:192.168.4.5,eth1:192.168.2.5)翘魄、兩臺虛擬機部署為LNMP服務(wù)器,分別為Web1服務(wù)器(192.168.2.100)和Web2服務(wù)器(192.168.2.200)舀奶,另外一臺作為測試用的Linux客戶機(192.168.4.10)暑竟,拓撲如圖所示。

在這里插入圖片描述

步驟

實現(xiàn)此案例需要按照如下步驟進行育勺。

一:部署后端LNMP服務(wù)器相關(guān)軟件(如果已經(jīng)安裝完成但荤,則忽略此步驟)

注意:以下部署LNMP服務(wù)器的操作,需要在兩臺后端服務(wù)器做相同的操作涧至,下面我們以一臺Web2服務(wù)器(192.168.2.200)為例腹躁,對Web1服務(wù)器執(zhí)行相同操作即可。
(1)使用yum安裝基礎(chǔ)依賴包

[root@web2 ~]# yum -y install gcc openssl-devel pcre-devel
.. ..

(2)源碼安裝Nginx

[root@web2 ~]# tar -xf nginx-1.12.2.tar.gz
[root@web2 ~]# cd nginx-1.12.2
[root@web2 nginx-1.12.2]#  ./configure   \
> --with-http_ssl_module 
[root@web2 nginx-1.12.2]# make && make install

(3)安裝MariaDB數(shù)據(jù)庫

[root@web2 ~]# yum -y install  mariadb  mariadb-server  mariadb-devel

(4)安裝PHP(php-fpm軟件包在lnmp_soft中有提供)

[root@web2 ~]# yum -y install  php  php-mysql
[root@web2 ~]# yum -y install  php-fpm-5.4.16-42.el7.x86_64.rpm

(5)修改Nginx配置文件(修改默認首頁與動靜分離)

[root@web2 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
            root   html;
            index  index.php  index.html   index.htm;
        }
 location  ~  \.php$  {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
           # fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi.conf;
        }

二:啟動LNMP服務(wù)器相關(guān)的服務(wù)

(1)啟動Nginx服務(wù)
這里需要注意的是南蓬,如果服務(wù)器上已經(jīng)啟動了其他監(jiān)聽80端口的服務(wù)軟件(如httpd)纺非,則需要先關(guān)閉該服務(wù),否則會出現(xiàn)沖突赘方。

[root@web2 ~]# systemctl stop  httpd                //如果該服務(wù)存在烧颖,則關(guān)閉該服務(wù)
[root@web2 ~]# /usr/local/nginx/sbin/nginx
[root@web2 ~]# netstat -utnlp | grep :80
tcp    0    0 0.0.0.0:80        0.0.0.0:*        LISTEN        32428/nginx         

(2)啟動MySQL服務(wù)

[root@web2 ~]# systemctl start mariadb
[root@web2 ~]# systemctl status mariadb

(3)啟動PHP-FPM服務(wù)

[root@web2 ~]# systemctl start  php-fpm
[root@web2 ~]# systemctl status php-fpm

(4)關(guān)閉SELinux、防火墻

[root@web2 ~]# setenforce 0
[root@web2 ~]# firewall-cmd --set-default-zone=trusted

三:部署前端Nginx調(diào)度服務(wù)器

(1)使用源碼安裝nginx軟件(如果Nginx軟件包已存在可以忽略此步驟)

[root@proxy ~]# yum  -y  install   gcc pcre-devel openssl-devel
[root@proxy ~]# tar -xf nginx-1.12.2.tar.gz
[root@proxy ~]# cd nginx-1.12.2
[root@proxy nginx-1.12.2]# ./configure
[root@proxy nginx-1.12.2]# make && make install

(2)修改Nginx配置文件
Nginx配置文件中窄陡,通過upstream定義后端服務(wù)器地址池炕淮,默認調(diào)度策略為輪詢,使用proxy_pass調(diào)用upstream定義的服務(wù)器地址池:

[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
upstream webs  {
        server 192.168.2.100:80;
        server 192.168.2.200:80;
  }
 server  {
          listen       80;
          server_name  localhost;
          location  /  {
              proxy_pass http://webs;
            root   html;
            index  index.php index.html index.htm;
          }
}

(3)重新加載配置文件

[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload

請先確保nginx是啟動狀態(tài)跳夭,否則運行該命令會報錯,報錯信息如下:

[error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
(4)關(guān)閉SELinux涂圆、防火墻

[root@proxy ~]# setenforce 0
[root@proxy ~]# firewall-cmd --set-default-zone=trusted

四:測試環(huán)境是否配置成功

(1)瀏覽器訪問測試頁面驗證们镜。

[root@client ~]# curl  http://192.168.4.5/index.html        //查看是否有數(shù)據(jù)

五:部署測試頁面

(1)部署測試頁面(Web1服務(wù)器)。
測試頁面可以參考lnmp_soft/php_scripts/php-memcached-demo.tar.gz乘综。

[root@web1 ~]# cd lnmp_soft/php_scripts/
[root@web1 php_scripts]# tar -xf php-memcached-demo.tar.gz
[root@web1 php_scripts]# cd php-memcached-demo
[root@web1 php-memcached-demo]# cp -a  *  /usr/local/nginx/html/

(2)瀏覽器直接訪問后端服務(wù)器的測試頁面(Web1服務(wù)器)。

[root@web1 ~]# firefox http://192.168.2.100            //填寫賬戶信息
[root@web1 ~]# cd /var/lib/php/session/            //查看服務(wù)器本地的Session信息
[root@web1 ~]# ls
sess_ahilcq9bguot0vqsjtd84k7244                        //注意這里的ID是隨機的
[root@web1 ~]# cat sess_ahilcq9bguot0vqsjtd84k7244

注意:可用修改index.php和home.php兩個文件的內(nèi)容套硼,添加頁面顏色屬性卡辰,以區(qū)別后端兩臺不同的服務(wù)器:。
(3)部署測試頁面(Web2服務(wù)器)邪意。
測試頁面可以參考lnmp_soft/php_scripts/php-memcached-demo.tar.gz九妈。

[root@web2 ~]# cd lnmp_soft/php_scripts/
[root@web2 php_scripts]# tar -xf php-memcached-demo.tar.gz
[root@web2 php_scripts]# cd php-memcached-demo
[root@web2 php-memcached-demo]# cp -a  *  /usr/local/nginx/html/

(4)瀏覽器直接訪問后端服務(wù)器的測試頁面(Web2服務(wù)器)。

[root@web2 ~]# firefox http://192.168.2.100             //填寫賬戶信息
[root@web2 ~]# cd /var/lib/php/session/            //查看服務(wù)器本地的Session信息
[root@web2 ~]# ls
sess_qqek1tmel07br8f63d6v9ch401                        //注意這里的ID是隨機的
[root@web2 ~]# cat sess_qqek1tmel07br8f63d6v9ch401    

注意:可用修改index.php和home.php兩個文件的內(nèi)容雾鬼,添加頁面顏色屬性萌朱,以區(qū)別后端兩臺不同的服務(wù)器:。
(5)瀏覽器訪問前端調(diào)度器測試(不同后端服務(wù)器Session不一致)策菜。
推薦使用google瀏覽器測試晶疼。

[root@client ~]# google-chrome http://192.168.4.5

//填寫注冊信息后,刷新又憨,還需要再次注冊翠霍,說明兩臺計算機使用的是本地Session
//第二臺主機并不知道你再第一臺主機已經(jīng)登錄,第一臺主機的登錄信息也沒有傳遞給第二臺主機

PHP實現(xiàn)session共享

通過修改PHP-FPM配置文件蠢莺,實現(xiàn)session會話共享寒匙,本案例需要在練習(xí)三的基礎(chǔ)上實現(xiàn):
配置PHP使用memcached服務(wù)器共享Session信息
客戶端訪問兩臺不同的后端Web服務(wù)器時,Session 信息一致

在練習(xí)三拓撲的基礎(chǔ)上躏将,Nginx服務(wù)器除了承擔(dān)調(diào)度器外锄弱,還需要擔(dān)任memcached數(shù)據(jù)庫的角色,并在兩臺后端LNMP服務(wù)器上實現(xiàn)PHP的session會話共享祸憋。拓撲結(jié)構(gòu)如圖所示会宪。

在這里插入圖片描述

一:構(gòu)建memcached服務(wù)

(1)安裝Memcached服務(wù)(如果192.168.4.5上已經(jīng)有本軟件包,此步驟可以忽略)

[root@proxy ~]# yum -y install memcached

(2)啟動服務(wù)并查看網(wǎng)絡(luò)連接狀態(tài)驗證是否開啟成功:

[root@proxy ~]# systemctl restart memcached
[root@proxy ~]# netstat  -anptu  |  grep memcached
tcp    0    0 0.0.0.0:11211        0.0.0.0:*        LISTEN        2839/memcached      
tcp    0    0 :::11211            :::*                LISTEN        2839/memcached      
udp    0    0 0.0.0.0:11211        0.0.0.0:*                    2839/memcached      
udp    0    0 :::11211            :::*                            2839/memcached

(3)關(guān)閉SELinux蚯窥、防火墻

[root@proxy ~]# setenforce 0
[root@proxy ~]# firewall-cmd --set-default-zone=trusted

二:在后端LNMP服務(wù)器上部署Session共享

注意:這些操作在兩臺后端Web服務(wù)器上均需要執(zhí)行狈谊,以下操作以Web1(192.168.2.100)服務(wù)器為例。
(1)為PHP添加memcache擴展
注意沟沙,因為后端兩臺web服務(wù)器(web1,web2)都需要連接memcached數(shù)據(jù)庫河劝,所以兩臺主機都需要安裝PHP擴展模塊(下面也web1為例)。

[root@web1 ~]# yum -y install  php-pecl-memcache

(2)修改PHP-FPM配置文件矛紫,并重啟服務(wù)
注意赎瞎,因為后端兩臺web服務(wù)器(web1,web2)都需要修改配置文件(下面也web1為例)。

[root@web1 ~]# vim  /etc/php-fpm.d/www.conf            //修改該配置文件的兩個參數(shù)

//文件的最后2行
修改前效果如下:
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
//原始文件颊咬,默認定義Sessoin會話信息本地計算機(默認在/var/lib/php/session)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
修改后效果如下:
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.2.5:11211"
//定義Session信息存儲在公共的memcached服務(wù)器上务甥,主機參數(shù)中為memcache(沒有d)
//通過path參數(shù)定義公共的memcached服務(wù)器在哪(服務(wù)器的IP和端口)
[root@web1 ~]# systemctl  restart  php-fpm

三:客戶端測試

客戶端使用瀏覽器訪問兩臺不同的Web服務(wù)器牡辽。
操作步驟與練習(xí)三一致,最終可以獲得相關(guān)的Session ID信息敞临。

原文鏈接:https://blog.csdn.net/chen77716/article/details/5949166

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末态辛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挺尿,更是在濱河造成了極大的恐慌奏黑,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件编矾,死亡現(xiàn)場離奇詭異熟史,居然都是意外死亡,警方通過查閱死者的電腦和手機窄俏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門蹂匹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人凹蜈,你說我怎么就攤上這事限寞。” “怎么了仰坦?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵昆烁,是天一觀的道長。 經(jīng)常有香客問我缎岗,道長静尼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任传泊,我火速辦了婚禮鼠渺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眷细。我一直安慰自己拦盹,他們只是感情好,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布溪椎。 她就那樣靜靜地躺著普舆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪校读。 梳的紋絲不亂的頭發(fā)上沼侣,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機與錄音歉秫,去河邊找鬼蛾洛。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的轧膘。 我是一名探鬼主播钞螟,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谎碍!你這毒婦竟也來了鳞滨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蟆淀,失蹤者是張志新(化名)和其女友劉穎拯啦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扳碍,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡提岔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年仙蛉,在試婚紗的時候發(fā)現(xiàn)自己被綠了笋敞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡荠瘪,死狀恐怖夯巷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哀墓,我是刑警寧澤趁餐,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站篮绰,受9級特大地震影響后雷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吠各,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一臀突、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贾漏,春花似錦候学、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伍掀,卻和暖如春掰茶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜜笤。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工符匾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘩例。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓啊胶,卻偏偏與公主長得像甸各,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子焰坪,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

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