Redis:五大數(shù)據(jù)類型常用命令詳解

豐富的數(shù)據(jù)類型是Redis作為緩存系統(tǒng)的最大優(yōu)勢之一彩郊,區(qū)別于Memcache僅支持簡單的key-value類型找岖,Redis支持五種數(shù)據(jù)類型:string(字符串)绑改,hash(哈希)沪编,list(列表)苦始,set(集合)及zset(sorted set:有序集合)帖池。

各個(gè)數(shù)據(jù)類型應(yīng)用場景:

類型 簡介 特性 場景
String(字符串) 二進(jìn)制安全 可以包含任何數(shù)據(jù),比如jpg圖片或者序列化的對象,一個(gè)鍵最大能存儲512M ---
Hash(字典) 鍵值對集合,即編程語言中的Map類型 適合存儲對象,并且可以像數(shù)據(jù)庫中update一個(gè)屬性一樣只修改某一項(xiàng)屬性值(Memcached中需要取出整個(gè)字符串反序列化成對象修改完再序列化存回去) 存儲奈惑、讀取、修改用戶屬性
List(列表) 鏈表(雙向鏈表) 增刪快,提供了操作某一段元素的API 1,最新消息排行等功能(比如朋友圈的時(shí)間線) 2,消息隊(duì)列
Set(集合) 哈希表實(shí)現(xiàn),元素不重復(fù) 1睡汹、添加肴甸、刪除,查找的復(fù)雜度都是O(1) 2、為集合提供了求交集囚巴、并集原在、差集等操作 1、共同好友 2彤叉、利用唯一性,統(tǒng)計(jì)訪問網(wǎng)站的所有獨(dú)立ip 3庶柿、好友推薦時(shí),根據(jù)tag求交集,大于某個(gè)閾值就可以推薦
Sorted Set(有序集合) 將Set中的元素增加一個(gè)權(quán)重參數(shù)score,元素按score有序排列 數(shù)據(jù)插入集合時(shí),已經(jīng)進(jìn)行天然排序 1、排行榜 2秽浇、帶權(quán)重的消息隊(duì)列

多數(shù)據(jù)庫知識點(diǎn)擊右角標(biāo)進(jìn)行跳轉(zhuǎn)[1]

注意:Redis的命令不區(qū)分大小寫浮庐,但是key 嚴(yán)格區(qū)分大小寫!<砘馈审残!

一、 準(zhǔn)備知識

1.1 Redis 客戶端

Redis 命令用于在 redis 服務(wù)上執(zhí)行操作,要在 redis 服務(wù)上執(zhí)行命令需要一個(gè) redis 客戶端斑举。Redis 客戶端在我們之前下載的的 redis 的安裝包中搅轿。

1.1.1 本地服務(wù)

啟動Redis 客戶端的基本語法為:
$ redis-cli
windows為雙擊bin目錄下:redis-cli.exe

連接到本地的 redis 服務(wù)并執(zhí)行 PING 命令富玷,該命令用于檢測 redis 服務(wù)是否啟動:

127.0.0.1:6379> ping
PONG

1.1.2 在遠(yuǎn)程服務(wù)

如果需要在遠(yuǎn)程 redis 服務(wù)上執(zhí)行命令璧坟,同樣我們使用的也是 redis-cli 命令既穆。

語法
$ redis-cli -h host -p port -a password

1.2 獲取符合規(guī)則的鍵名列表

keys pattern,Redis Keys 命令用于查找所有符合給定模式 pattern 的 key 。
pattern是一個(gè)支持glob風(fēng)格的通配符格式雀鹃,具體規(guī)則如下:

符號 含義
? 匹配一個(gè)字符
* 匹配任意個(gè)字符幻工,包括0個(gè)
[] 匹配括號間的任一字符,可是使用“-”符號表示一個(gè)范圍褐澎,比如a[b-d]可以匹配“ab”会钝、“ac”伐蒋、“ad”工三。
\x 匹配字符x,用于轉(zhuǎn)義符號先鱼。如果要匹配“?”俭正,就需要使用?

案例:
我們先往Redis中塞幾個(gè)鍵值對:

set color red
set name erbadagang
set my_name guoxiuzhi
set age 18

然后使用keys *name命令查看獲取Redis中所有的鍵。

127.0.0.1:6379[1]> keys *name
1) "my_name"
2) "name"

1.3 判斷一個(gè)鍵是否存在

exists key [key ...]
如果鍵存在則返回1焙畔,否則返回0掸读。比如:

127.0.0.1:6379[1]> exists name
(integer) 1

1.4 刪除某個(gè)鍵

del key [key ...]
刪除一個(gè)或多個(gè)鍵,返回值是刪除的鍵的個(gè)數(shù)宏多。比如:

127.0.0.1:6379[1]> del name my_name
(integer) 2

1.5 設(shè)置key過期時(shí)間

EXPIRE key seconds
為給定 key 設(shè)置過期時(shí)間儿惫,以秒計(jì)。

127.0.0.1:6379[1]> expire age 10
(integer) 1
127.0.0.1:6379[1]> get age
"18"
127.0.0.1:6379[1]> get age
(nil)

其他常用命令參考:https://www.runoob.com/redis/redis-keys.html

二伸但、Redis 字符串(String)

字符串類型是Redis中最基本的數(shù)據(jù)類型肾请,它能存儲任何形式的字符串,包括二進(jìn)制數(shù)據(jù)更胖。比如:郵箱铛铁、JSON化的對象甚至是一張圖片。一個(gè)字符串類型鍵允許存儲的數(shù)據(jù)的最大容量是512MB却妨。

string類型在Redis中的相關(guān)命令:

命令 用法 描述
set set key value (1)將字符串value值設(shè)置到key上饵逐;(2)如果key有對應(yīng)的值,則會被覆蓋彪标;(3)如果原本key有過期時(shí)間倍权,則過期時(shí)間會被清除。
get get key (1)返回key對應(yīng)的字符串值捞烟;(2)如果key無對應(yīng)值薄声,則返回nil;(3)如果key對應(yīng)的值不是字符串坷襟,則返回錯(cuò)誤奸柬,因?yàn)間et只適用于字符串類型。
mset mset key value [key value ...] (1)同時(shí)設(shè)置一個(gè)或多個(gè)key-value鍵值對婴程;(2)如果key有對應(yīng)的值廓奕,則會被覆蓋;(3)mset是一個(gè)原子操作,所有的key都會在同一時(shí)間被設(shè)置桌粉,不會存在有些更新有些沒更新的情況蒸绩。
mget mget key [key ...] (1)返回一個(gè)或多個(gè)給定key對應(yīng)的值;(2)某個(gè)key不存在時(shí)返回nil铃肯。
setex setex key seconds value (1)將字符串value值設(shè)置到key上患亿;(2)設(shè)置key生存時(shí)間為seconds,單位為秒押逼;(3)如果key有對應(yīng)的值步藕,則會被覆蓋概荷。
setnx setnx key value (1)只有在 key 不存在時(shí)谭贪,將key的值設(shè)置為value;(2)若給定的key已經(jīng)存在中捆,setnx將不做任何操作漂彤。
append APPEND key value 如果 key 已經(jīng)存在并且是一個(gè)字符串雾消, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾。

上面是string類型的基本命令挫望,
但是當(dāng)一個(gè)字符串可以轉(zhuǎn)換成數(shù)值時(shí)立润,我們可能還會接觸到以下幾個(gè)自增自減操作。

命令 用法 描述
incr incr key (1)對key的值加1媳板,返回增加之后的值桑腮;(2)如果key不存在,則key會被初始化為0拷肌,再執(zhí)行incr操作到旦。
decr decr key (1)對key的值減1。
incrby incrby key increment (1)將key所存儲的值加上指定的數(shù)值巨缘,并返回增加之后的值添忘。
decrby decrby key decrement (1)將key的值減去一個(gè)指定的數(shù)值。

示例:

127.0.0.1:6379[1]> get color
"red"
127.0.0.1:6379[1]> append color ,purple
(integer) 10
127.0.0.1:6379[1]> get color
"red,purple"

127.0.0.1:6379[1]> set age 18
OK
127.0.0.1:6379[1]> incr age
(integer) 19
127.0.0.1:6379[1]> decr age
(integer) 18
127.0.0.1:6379[1]> incrby age 5
(integer) 23

三若锁、Redis 哈希(Hash)

我們知道Redis是采用字典結(jié)構(gòu)以鍵值對的形式存儲數(shù)據(jù)的搁骑,而hash類型的鍵值也是一種字典結(jié)構(gòu),其存儲了字段(field)和字段值的映射又固。

hash類型適合存儲對象:使用對象類型和對象唯一標(biāo)識作為key仲器,使用對象屬性作為字段名,屬性值作為字段值仰冠。

命令 用法 描述
hset hset key field value (1)設(shè)置key的field值為value乏冀;(2)如果key不存在,則直接創(chuàng)建洋只;(3)如果field值已經(jīng)存在辆沦,則直接覆蓋昼捍。
hget hget key field (1)獲取指定key和field的值。
hdel hdel key field [field ...] (1)刪除key下的field值肢扯;(2)如果field不存在妒茬,則直接忽略。
hexists hexists key filed (1)查看是否存在指定key的field蔚晨,存在返回1乍钻,不存在返回0。
hgetall hgetall key (1)返回指定key的所有字段名和字段值铭腕。
hincrby hincrby key field increment (1)對指定key的field字段增加一個(gè)數(shù)值银择。
hkeys hkeys key (1)返回指定key的所有字段名。
hlen hlen key (1)返回指定key的所有字段名數(shù)量谨履。
hmget hmget key field [field ...] (1)返回指定key對應(yīng)字段名的值欢摄。
hmset hmset key field value [field value ...] (1)批量設(shè)置key的字段名和字段值。
hvals hvals key (1)返回指定key的所有字段值笋粟,可對比hkeys命令。

示例:

127.0.0.1:6379[1]> HMSET erbadagang_key name "guo xiu zhi" description "redis basic commands for hash" likes 20 visitors 88
OK
127.0.0.1:6379[1]> hgetall erbadagang_key
1) "name"
2) "guo xiu zhi"
3) "description"
4) "redis basic commands for hash"
5) "likes"
6) "20"
7) "visitors"
8) "88"

#取出likes字段的值
127.0.0.1:6379[1]> hget erbadagang_key likes
"20"
#likes字段的值+1
127.0.0.1:6379[1]>  hincrby erbadagang_key likes 1
(integer) 21

四析蝴、Redis 列表(List)

列表類型(list)可以存儲一個(gè)有序的字符串列表害捕,常用的操作是向列表兩端添加元素,或者獲得列表的某一個(gè)片段闷畸。

列表類型內(nèi)部使用雙向鏈表實(shí)現(xiàn)的尝盼,所以向列表兩端添加元素的時(shí)間復(fù)雜度為O(1),獲取越接近兩端的元素速度越快佑菩。但是使用鏈表的代價(jià)是通過索引訪問元素比較慢盾沫。

命令 用法 描述
lpush lpush key value [value ...] (1)將一個(gè)或多個(gè)值插入到列表key的表頭;(2)如果有多個(gè)value值殿漠,則從左到右的順序依次插入表頭赴精;(3)如果key不存在,則會創(chuàng)建一個(gè)空列表绞幌,然后執(zhí)行l(wèi)push操作蕾哟;如果key存在,但不是列表類型莲蜘,則返回錯(cuò)誤谭确。
lpushx lpushx key value (1)將value值插入到列表key的表頭,當(dāng)且僅當(dāng)key存在且是一個(gè)列表票渠;(2)如果key不存在時(shí)逐哈,lpushx命令什么都不會做。
lpop lpop key (1)移除并返回列表key的頭元素问顷。
lrange lrange key start stop (1)返回列表key中指定區(qū)間內(nèi)的元素昂秃;(2)start大于列表最大下標(biāo)是薯鼠,返回空列表;(3)可使用負(fù)數(shù)下標(biāo)械蹋,-1表示列表最后一個(gè)元素出皇,以此類推。
lrem lrem key count value (1)count>0表示從頭到尾搜索哗戈,移除與value相等的元素郊艘,數(shù)量為count;(2)count<0表示從尾到頭搜索唯咬,移除與value相等的元素纱注,數(shù)量為count;(3)count=0表示移除列表中所有與value相等的元素胆胰。
lset lset key index value (1)將列表key下標(biāo)為index的元素值設(shè)置為value狞贱;(2)當(dāng)index參數(shù)超出范圍,或?qū)σ粋€(gè)空列表進(jìn)行l(wèi)set操作時(shí)蜀涨,返回錯(cuò)誤瞎嬉。
lindex lindex key index (1)返回列表key中下標(biāo)為index的元素。
linsert linsert key BEFORE AFTER pivot value (1)將值value插入列表key中厚柳,位于pivot前面或者后面氧枣;(2)當(dāng)pivot不存在列表key中,或者key不存在時(shí)别垮,不執(zhí)行任何操作便监。
llen len key (1)返回列表key的長度,當(dāng)key不存在時(shí)碳想,返回0烧董。
rpop rpop key (1)移除并返回列表key的尾元素。
rpoplpush rpoplpush source destination (1)將列表source中最后一個(gè)元素彈出并返回給客戶端胧奔,并且將該元素插入到列表destincation的頭部逊移。
rpush rpush key value [value ...] (1)將一個(gè)或多個(gè)值插入到列表key的尾部。
rpushx rpushx key value (1)將value值插入到列表key的表尾葡盗,當(dāng)且僅當(dāng)key存在且是一個(gè)列表螟左;(2)如果key不存在時(shí),lpushx命令什么都不會做觅够。

示例:

127.0.0.1:6379[1]> lpush tech_key spring cloud
(integer) 2
127.0.0.1:6379[1]> lpush tech_key spring boot
(integer) 4
127.0.0.1:6379[1]> lpush tech_key JPA
(integer) 5
127.0.0.1:6379[1]> lpush tech_key Mysql
(integer) 6
127.0.0.1:6379[1]> lpush tech_key Redis
(integer) 7
127.0.0.1:6379[1]> llen tech_key
(integer) 7
127.0.0.1:6379[1]> lrange tech_key 0 7
1) "Redis"
2) "Mysql"
3) "JPA"
4) "boot"
5) "spring"
6) "cloud"
7) "spring"

五胶背、Redis 集合(Set)

Redis中的set類型是string類型的無序集合。集合類型的常用操作是向集合中加入或刪除元素喘先、判斷某個(gè)元素是否存在等钳吟,由于集合類型在Redis內(nèi)部是使用值為空的散列表實(shí)現(xiàn)的,所以這些操作的時(shí)間復(fù)雜度都是O(1)窘拯。最方便的是多個(gè)集合類型鍵之間還可以進(jìn)行并集红且、交集和差集運(yùn)算坝茎。

命令 用法 描述
sadd sadd key member [member ...] (1)將一個(gè)或多個(gè)member元素加入key中,已存在在集合中的member將被忽略暇番;(2)如果key不存在嗤放,則創(chuàng)建一個(gè)只包含member元素的集合;(3)當(dāng)key不是集合類型時(shí)壁酬,將返回一個(gè)錯(cuò)誤次酌。
scard scard key (1)返回key對應(yīng)的集合中的元素?cái)?shù)量。
sdiff sdiff key [key ...] (1)返回所有key對應(yīng)的集合的差集舆乔。
sdiffstore sdiffstore destionation key [key ...] (1)返回所有key對應(yīng)的集合的差集岳服,并把該差集賦值給destionation;(2)如果destionation已經(jīng)存在希俩,則直接覆蓋吊宋。
sinter sinter key [key ...] (1)返回所有key對應(yīng)的集合的交集;(2)不存在的key被視為空集颜武。
sinterstore sinter destionation key [key ...] (1)返回所有key對應(yīng)的集合的交集璃搜,并把該交集賦值給destionation;(2)如果destionation已經(jīng)存在盒刚,則直接覆蓋腺劣。
sismember sismember key member (1)判斷member元素是否是key的成員,0表示不是因块,1表示是。
smembers smember key (1)返回集合key中的所有成員籍铁;(2)不存在的key被視為空集涡上。
srem srem key member [member ...] (1)移除集合key中的一個(gè)或多個(gè)member元素,不存在的member將被忽略拒名。
sunion sunion key [key ...] (1)返回所有key對應(yīng)的集合的并集吩愧;(2)不存在的key被視為空集。
sunionstore sunionstore destionation key [key ...] (1)返回所有key對應(yīng)的集合的并集增显,并把該并集賦值給destionation雁佳;(2)如果destionation已經(jīng)存在,則直接覆蓋同云。

示例:

127.0.0.1:6379[1]> sadd set_key spring cloud
(integer) 2
127.0.0.1:6379[1]> sadd set_key spring boot
(integer) 1
127.0.0.1:6379[1]> sadd set_key JPA
(integer) 1
127.0.0.1:6379[1]> sadd set_key Mysql
(integer) 1
127.0.0.1:6379[1]> sadd set_key Redis
(integer) 1
127.0.0.1:6379[1]> smembers set_key
1) "JPA"
2) "cloud"
3) "spring" #設(shè)置了2次只有一個(gè)糖权。
4) "Redis"
5) "boot"
6) "Mysql"

#兩個(gè)集合交集
127.0.0.1:6379[1]> sadd set2_key spring cloud
(integer) 2
127.0.0.1:6379[1]> sadd set2_key Redis
(integer) 1
127.0.0.1:6379[1]>
127.0.0.1:6379[1]> sinter set_key set2_key
1) "Redis"
2) "cloud"
3) "spring"
127.0.0.1:6379[1]>

六、Redis 有序集合(sorted set)

Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復(fù)的成員炸站。

不同的是每個(gè)元素都會關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)星澳。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。

有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)旱易。
示例:

127.0.0.1:6379[1]> zadd zset_key 1 cloud
(integer) 0
127.0.0.1:6379[1]> zadd zset_key 3 boot
(integer) 1
127.0.0.1:6379[1]> zadd zset_key 5 JPA
(integer) 0
127.0.0.1:6379[1]> zadd zset_key 4 Mysql
(integer) 0
127.0.0.1:6379[1]> zadd zset_key 5 Mysql
(integer) 0
127.0.0.1:6379[1]> zadd zset_key 6 Mysql #由于set的特性禁偎,score 為 6 的覆蓋前面的值腿堤,所以這個(gè)值有效。
(integer) 0
127.0.0.1:6379[1]> zadd zset_key 4 Redis
(integer) 0

127.0.0.1:6379[1]> zrange zset_key 0 7 withscores
 1) "cloud"
 2) "1"
 3) "boot"
 4) "3"
 5) "Redis"
 6) "4"
 7) "JPA"
 8) "5"
 9) "Mysql"
10) "6"

  1. 注意:Redis支持多個(gè)數(shù)據(jù)庫如暖,并且每個(gè)數(shù)據(jù)庫的數(shù)據(jù)是隔離的不能共享笆檀,并且基于單機(jī)才有,如果是集群就沒有數(shù)據(jù)庫的概念盒至。
    Redis是一個(gè)字典結(jié)構(gòu)的存儲服務(wù)器酗洒,而實(shí)際上一個(gè)Redis實(shí)例提供了多個(gè)用來存儲數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲在哪個(gè)字典中妄迁。這與我們熟知的在一個(gè)關(guān)系數(shù)據(jù)庫實(shí)例中可以創(chuàng)建多個(gè)數(shù)據(jù)庫類似寝蹈,所以可以將其中的每個(gè)字典都理解成一個(gè)獨(dú)立的數(shù)據(jù)庫。
    每個(gè)數(shù)據(jù)庫對外都是一個(gè)從0開始的遞增數(shù)字命名登淘,Redis默認(rèn)支持16個(gè)數(shù)據(jù)庫(可以通過配置文件支持更多箫老,無上限),可以通過配置databases來修改這一數(shù)字黔州∷w蓿客戶端與Redis建立連接后會自動選擇0號數(shù)據(jù)庫,不過可以隨時(shí)使用SELECT命令更換數(shù)據(jù)庫流妻,如要選擇1號數(shù)據(jù)庫:127.0.0.1:6379> select 1
    然而這些以數(shù)字命名的數(shù)據(jù)庫又與我們理解的數(shù)據(jù)庫有所區(qū)別牲蜀。首先Redis不支持自定義數(shù)據(jù)庫的名字,每個(gè)數(shù)據(jù)庫都以編號命名绅这,開發(fā)者必須自己記錄哪些數(shù)據(jù)庫存儲了哪些數(shù)據(jù)涣达。另外Redis也不支持為每個(gè)數(shù)據(jù)庫設(shè)置不同的訪問密碼,所以一個(gè)客戶端要么可以訪問全部數(shù)據(jù)庫证薇,要么連一個(gè)數(shù)據(jù)庫也沒有權(quán)限訪問度苔。最重要的一點(diǎn)是多個(gè)數(shù)據(jù)庫之間并不是完全隔離的,比如FLUSHALL命令可以清空一個(gè)Redis實(shí)例中所有數(shù)據(jù)庫中的數(shù)據(jù)浑度。綜上所述寇窑,這些數(shù)據(jù)庫更像是一種命名空間,而不適宜存儲不同應(yīng)用程序的數(shù)據(jù)箩张。比如可以使用0號數(shù)據(jù)庫存儲某個(gè)應(yīng)用生產(chǎn)環(huán)境中的數(shù)據(jù)甩骏,使用1號數(shù)據(jù)庫存儲測試環(huán)境中的數(shù)據(jù),但不適宜使用0號數(shù)據(jù)庫存儲A應(yīng)用的數(shù)據(jù)而使用1號數(shù)據(jù)庫B應(yīng)用的數(shù)據(jù)先慷,不同的應(yīng)用應(yīng)該使用不同的Redis實(shí)例存儲數(shù)據(jù)饮笛。由于Redis非常輕量級,一個(gè)空Redis實(shí)例占用的內(nèi)在只有1M左右熟掂,所以不用擔(dān)心多個(gè)Redis實(shí)例會額外占用很多內(nèi)存缎浇。 ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市赴肚,隨后出現(xiàn)的幾起案子素跺,更是在濱河造成了極大的恐慌二蓝,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件指厌,死亡現(xiàn)場離奇詭異刊愚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)踩验,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門鸥诽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人箕憾,你說我怎么就攤上這事牡借。” “怎么了袭异?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵钠龙,是天一觀的道長。 經(jīng)常有香客問我御铃,道長碴里,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任上真,我火速辦了婚禮咬腋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘睡互。我一直安慰自己根竿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布就珠。 她就那樣靜靜地躺著犀填,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗓违。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天图贸,我揣著相機(jī)與錄音蹂季,去河邊找鬼。 笑死疏日,一個(gè)胖子當(dāng)著我的面吹牛偿洁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沟优,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涕滋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挠阁?” 一聲冷哼從身側(cè)響起宾肺,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溯饵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后锨用,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丰刊,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年增拥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啄巧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掌栅,死狀恐怖秩仆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾封,我是刑警寧澤澄耍,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站忘衍,受9級特大地震影響逾苫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枚钓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一铅搓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搀捷,春花似錦星掰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至家厌,卻和暖如春播玖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饭于。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工蜀踏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掰吕。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓果覆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親殖熟。 傳聞我的和親對象是個(gè)殘疾皇子局待,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354