Redis基礎(chǔ)

1 Redis的數(shù)據(jù)類型(Data Types)

1.1 字符串(Strings)

字符串是一種最基本的Redis值類型。Redis字符串是二進(jìn)制安全的(存儲為字節(jié)碼丛晦,內(nèi)部不做編碼)。一個字符串類型的值最多能存儲512M字節(jié)的內(nèi)容握侧。

1.2 列表(Lists)

Redis列表是簡單的字符串列表帅韧,按照插入順序排序。 你可以添加一個元素到列表的頭部(左邊LPUSH)或者尾部(右邊RPUSH)锅睛。一個列表最多可以包含232-1個元素。特性就是支持常數(shù)時間的 插入和靠近頭尾部元素的刪除历谍。Lists是鏈表實(shí)現(xiàn)的一個雙端隊列现拒。

1.3 集合(Sets)

Redis集合是一個無序的字符串合集。你可以以O(1) 的時間復(fù)雜度完成 添加望侈,刪除以及測試元素是否存在的操作印蔬。Redis集合有著不允許相同成員存在的優(yōu)秀特性。一個集合最多可以包含232-1個元素脱衙。

1.4 有序集合(Sorted sets)

Redis有序集合和Redis集合類似侥猬,但是每個字符串元素都關(guān)聯(lián)到一個叫score浮動數(shù)值(floating number value)。里面的元素總是通過score進(jìn)行著排序捐韩。使用有序集合退唠,你可以非常快地(O(log(N)))完成添加荤胁,刪除和更新元素的操作瞧预。

1.5 哈希(Hashes)

Redis Hashes是字符串字段和字符串值之間的映射,所以它們是完美的表示對象的數(shù)據(jù)類型仅政。一個hash最多可以包含232-1 個key-value鍵值對垢油。

1.6 Bit arrays (或者說 simply bitmaps)

位圖不是實(shí)際的數(shù)據(jù)類型,而是在String類型上定義的一組面向位的操作: 可以設(shè)置和清除單獨(dú)的 bits圆丹,數(shù)出所有設(shè)為 1 的 bits 的數(shù)量滩愁,找到最前的被設(shè)為 1 或 0 的 bit,等等运褪【ィ可以設(shè)置多達(dá)2 ^ 32個不同的位

1.7 HyperLogLogs

HyperLogLog是一種概率數(shù)據(jù)結(jié)構(gòu),用于對唯一事物進(jìn)行計數(shù)秸讹,得出標(biāo)準(zhǔn)誤差小于1%的估計度量檀咙,被編碼為Redis字符串。該算法的神奇之處在于璃诀,消耗的內(nèi)存量最壞情況僅僅只有12k字節(jié)弧可。每次看到一個新元素時,可以使用PFADD將它添加到計數(shù)中劣欢,使用PFCOUNT獲取計數(shù)棕诵。

2 常用命令

2.1 Keys

KEYS pattern   # 查找所有符合給定模式pattern的 key(類似文件名匹配)
DEL key [key ...]  # 刪除指定的key裁良,返回存在的個數(shù)
EXISTS key [key ...] # 查詢key是否存在,返回存在的個數(shù)
TYPE key # 獲取key的存儲類型: string, list, set, zset, hash, none
RENAME key newkey # 將一個key重命名
RENAMENX key newkey # 重命名一個key,新的key必須是不存在的key
RANDOMKEY # 返回一個隨機(jī)的key

EXPIRE key seconds # 設(shè)置一個key的過期的秒數(shù)
EXPIREAT key timestamp # 設(shè)置一個UNIX時間戳的過期時間
PEXPIRE key milliseconds # 設(shè)置key的有效時間以毫秒為單位
PEXPIREAT key milliseconds-timestamp # 設(shè)置key的到期UNIX時間戳以毫秒為單位
TTL key # 獲取key的有效時間(單位:秒)
PTTL key # 獲取key的有效毫秒數(shù)
PERSIST key # 移除key的過期時間

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] # 對隊列校套、集合价脾、有序集合排序
DUMP key # 導(dǎo)出key的值
MOVE key db # 移動一個key到另一個數(shù)據(jù)庫
MIGRATE host port key destination-db timeout [COPY] [REPLACE] # 原子性的將key從redis的一個實(shí)例移到另一個實(shí)例
OBJECT subcommand [arguments [arguments ...]] # 檢查內(nèi)部的再分配對象
RESTORE key ttl serialized-value [REPLACE] # Create a key using the provided serialized value, previously obtained using DUMP.
WAIT numslaves timeout # Wait for the synchronous replication of all the write commands sent in the context of the current connection
SCAN cursor [MATCH pattern] [COUNT count] # 增量迭代key

2.2 Strings

GET key # 返回key的value
MGET key [key ...] # 獲得所有key的值

SET key value [EX seconds] [PX milliseconds] [NX|XX] # 設(shè)置一個key的value值
MSET key value [key value ...] # 設(shè)置多個key value

SETNX key value # 設(shè)置的一個key的值,只有當(dāng)該key不存在
MSETNX key value [key value ...] # 設(shè)置多個key value,僅當(dāng)key不存在時

SETEX key seconds value # 設(shè)置key-value并設(shè)置過期時間(單位:秒)
PSETEX key milliseconds value # 設(shè)置key-value并設(shè)置過期時間(單位:毫秒)

INCR key # 執(zhí)行原子加1操作
INCRBY key increment # 執(zhí)行原子增加一個整數(shù)
INCRBYFLOAT key increment # 執(zhí)行原子增加一個浮點(diǎn)數(shù)

DECR key # 整數(shù)原子減1
DECRBY key decrement # 原子減指定的整數(shù)

GETSET key value # 設(shè)置一個key的value笛匙,并獲取設(shè)置前的值
STRLEN key # 獲取指定key值的長度
APPEND key value # 追加一個值到key上

GETRANGE key start end # 獲取存儲在key上的值的一個子字符串
SETRANGE key offset value # Overwrite part of a string at key starting at the specified offset

SETBIT key offset value # Sets or clears the bit at offset in the string value stored at key
BITCOUNT key [start end] # 統(tǒng)計字符串指定起始位置的字節(jié)數(shù)
BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL] # Perform arbitrary bitfield integer operations on strings
BITOP operation destkey key [key ...] # Perform bitwise operations between strings
BITPOS key bit [start] [end] # Find first bit set or clear in a string
GETBIT key offset # 返回位的值存儲在關(guān)鍵的字符串值的偏移量侨把。

2.3 Lists

LRANGE key start stop # 從列表中獲取指定返回的元素
LLEN key # 獲得隊列(List)的長度

LPUSH key value [value ...] # 從隊列的左邊入隊一個或多個元素
LPUSHX key value # 當(dāng)隊列存在時,從隊到左邊入隊一個元素
RPUSH key value [value ...] # 從隊列的右邊入隊一個元素
RPUSHX key value # 從隊列的右邊入隊一個元素妹孙,僅隊列存在時有效

LPOP key # 從隊列的左邊出隊一個元素
RPOP key # 從隊列的右邊出隊一個元

LSET key index value # 設(shè)置隊列里面一個元素的值
LREM key count value # 從列表中刪除元素
LTRIM key start stop # 修剪到指定范圍內(nèi)的清單

LINSERT key BEFORE|AFTER pivot value # 在列表中的另一個元素之前或之后插入一個元素

BLPOP key [key ...] timeout # 刪除秋柄,并獲得該列表中的第一元素,或阻塞蠢正,直到有一個可用
BRPOP key [key ...] timeout # 刪除骇笔,并獲得該列表中的最后一個元素,或阻塞嚣崭,直到有一個可用

RPOPLPUSH source destination # 刪除列表中的最后一個元素笨触,將其追加到另一個列表
BRPOPLPUSH source destination timeout # 彈出一個列表的值,將它推到另一個列表雹舀,并返回它;或阻塞旭旭,直到有一個可用

2.4 Sets

SCARD key # 獲取集合里面的元素數(shù)量
SMEMBERS key # 獲取集合里面的所有元素
SISMEMBER key member # 確定一個給定的值是一個集合的成員
SRANDMEMBER key [count] # 從集合里面隨機(jī)獲取一個元素
SSCAN key cursor [MATCH pattern] [COUNT count] # 迭代set里面的元素

SADD key member [member ...] # 添加一個或者多個元素到集合(set)里
SREM key member [member ...] # 從集合里刪除一個或多個元素
SPOP key [count] # 刪除并獲取一個集合里面的元素
SMOVE source destination member # 移動集合里面的一個元素到另一個集合

SDIFF key [key ...] # 獲得多個集合的差集
SDIFFSTORE destination key [key ...] # 獲得多個集合的差集,并將結(jié)果存入新的set里面

SINTER key [key ...] # 獲得多個集合的交集
SINTERSTORE destination key [key ...] # 獲得多個集合的交集葱跋,并將結(jié)果存入新的set里面

SUNION key [key ...] # 獲得多個集合的并集
SUNIONSTORE destination key [key ...] # 獲得多個集合的并集,并將結(jié)果存入新的set里面

2.5 Sorted Sets

ZCARD key # 獲取一個排序的集合中的成員數(shù)量
ZCOUNT key min max # 返回分?jǐn)?shù)范圍內(nèi)的成員數(shù)量
ZSCORE key member # 獲取成員在排序設(shè)置相關(guān)的比分
ZLEXCOUNT key min max # 返回成員之間的成員數(shù)量
ZSCAN key cursor [MATCH pattern] [COUNT count] # 迭代sorted sets里面的元素

ZRANK key member # 確定在排序集合成員的索引
ZREVRANK key member # 確定指數(shù)在排序集的成員源梭,下令從分?jǐn)?shù)高到低

ZRANGE key start stop [WITHSCORES] # 根據(jù)指定的index返回娱俺,返回sorted set的成員列表
ZREVRANGE key start stop [WITHSCORES] # 在排序的設(shè)置返回的成員范圍,通過索引废麻,下令從分?jǐn)?shù)高到低
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定分?jǐn)?shù)區(qū)間內(nèi)的成員荠卷,分?jǐn)?shù)由高到低排序。

ZADD key [NX|XX] [CH] [INCR] score member [score member ...] # 添加到有序set的一個或多個成員烛愧,或更新的分?jǐn)?shù)油宜,如果它已經(jīng)存在
ZPOPMAX key [count] # Remove and return members with the highest scores in a sorted set
ZPOPMIN key [count] # Remove and return members with the lowest scores in a sorted set

ZINCRBY key increment member # 增量的一名成員在排序設(shè)置的評分
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] # 相交多個排序集,導(dǎo)致排序的設(shè)置存儲在一個新的關(guān)鍵
ZRANGEBYLEX key min max [LIMIT offset count] # 返回指定成員區(qū)間內(nèi)的成員怜姿,按字典正序排列, 分?jǐn)?shù)必須相同慎冤。
ZREVRANGEBYLEX key max min [LIMIT offset count] # 返回指定成員區(qū)間內(nèi)的成員,按字典倒序排列, 分?jǐn)?shù)必須相同
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定分?jǐn)?shù)區(qū)間內(nèi)的成員沧卢,分?jǐn)?shù)由低到高排序蚁堤。
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] # 添加多個排序集和導(dǎo)致排序的設(shè)置存儲在一個新的關(guān)鍵

ZREM key member [member ...] # 從排序的集合中刪除一個或多個成員
ZREMRANGEBYLEX key min max # 刪除名稱按字典由低到高排序成員之間所有成員。
ZREMRANGEBYRANK key start stop # 在排序設(shè)置的所有成員在給定的索引中刪除
ZREMRANGEBYSCORE key min max # 刪除一個排序的設(shè)置在給定的分?jǐn)?shù)所有成員

2.6 Hashes

HEXISTS key field # 判斷field是否存在于hash中
HGET key field # 獲取hash中field的值
HKEYS key # 獲取hash的所有字段
HLEN key # 獲取hash里所有字段的數(shù)量
HGETALL key # 從hash中讀取全部的域和值
HMGET key field [field ...] # 獲取hash里面指定字段的值
HSTRLEN key field # 獲取hash里面指定field的長度
HVALS key # 獲得hash的所有值

HDEL key field [field ...] # 刪除一個或多個Hash的field
HINCRBY key field increment # 將hash中指定域的值增加給定的數(shù)字
HINCRBYFLOAT key field increment # 將hash中指定域的值增加給定的浮點(diǎn)數(shù)
HSET key field value # 設(shè)置hash里面一個字段的值
HMSET key field value [field value ...] # 設(shè)置hash字段值
HSETNX key field value # 設(shè)置hash的一個字段但狭,只有當(dāng)這個字段不存在時有效
HSCAN key cursor [MATCH pattern] [COUNT count] # 迭代hash里面的元素

2.7 Others

# HyperLogLog
PFADD key element [element ...] # 將指定元素添加到HyperLogLog
PFCOUNT key [key ...] # Return the approximated cardinality of the set(s) observed by the HyperLogLog at key(s).
PFMERGE destkey sourcekey [sourcekey ...] # Merge N different HyperLogLogs into a single one.

# Geo
GEOADD key longitude latitude member [longitude latitude member ...] # 添加一個或多個地理空間位置到sorted set
GEOHASH key member [member ...] # 返回一個標(biāo)準(zhǔn)的地理空間的Geohash字符串
GEOPOS key member [member ...] # 返回地理空間的經(jīng)緯度
GEODIST key member1 member2 [unit] # 返回兩個地理空間之間的距離
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] # 查詢指定半徑內(nèi)所有的地理空間元素的集合披诗。
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] # 查詢指定半徑內(nèi)匹配到的最大距離的一個地理空間元素撬即。

# Pub/Sub
PSUBSCRIBE pattern [pattern ...] # Listen for messages published to channels matching the given patterns
PUBSUB subcommand [argument [argument ...]] # Inspect the state of the Pub/Sub subsystem
PUBLISH channel message # 發(fā)布一條消息到頻道
PUNSUBSCRIBE [pattern [pattern ...]] # 停止發(fā)布到匹配給定模式的渠道的消息聽
SUBSCRIBE channel [channel ...] # 監(jiān)聽頻道發(fā)布的消息
UNSUBSCRIBE [channel [channel ...]] # 停止頻道監(jiān)聽

# Scripting
EVAL script numkeys key [key ...] arg [arg ...] # 在服務(wù)器端執(zhí)行 LUA 腳本
EVALSHA sha1 numkeys key [key ...] arg [arg ...] # 在服務(wù)器端執(zhí)行 LUA 腳本
SCRIPT DEBUG YES|SYNC|NO # Set the debug mode for executed scripts.
SCRIPT EXISTS script [script ...] # Check existence of scripts in the script cache.
SCRIPT FLUSH # 刪除服務(wù)器緩存中所有Lua腳本。
SCRIPT KILL # 殺死當(dāng)前正在運(yùn)行的 Lua 腳本呈队。
SCRIPT LOAD script # 從服務(wù)器緩存中裝載一個Lua腳本

# Transactions
DISCARD # 丟棄所有 MULTI 之后發(fā)的命令
EXEC # 執(zhí)行所有 MULTI 之后發(fā)的命令
MULTI # 標(biāo)記一個事務(wù)塊開始
UNWATCH # 取消事務(wù)命令
WATCH key [key ...] # 鎖定key直到執(zhí)行了 MULTI/EXEC 命令

# Connection
AUTH password # 驗(yàn)證服務(wù)器命令
ECHO message # 回顯輸入的字符串
PING # Ping 服務(wù)器
QUIT # 關(guān)閉連接剥槐,退出
SELECT index # 選擇新數(shù)據(jù)庫
SWAPDB index index # Swaps two Redis databases

# Server
BGREWRITEAOF # 異步重寫追加文件命令
BGSAVE # 異步保存數(shù)據(jù)集到磁盤上
CLIENT KILL [ip:port] [ID client-id] [TYPE normal|slave|pubsub] [ADDR ip:port] [SKIPME yes/no] # 關(guān)閉客戶端連接
CLIENT LIST # 獲得客戶端連接列表
CLIENT GETNAME # 獲得當(dāng)前連接名稱
CLIENT ID # Returns the client ID for the current connection
CLIENT PAUSE timeout # 暫停處理客戶端命令
CLIENT REPLY ON|OFF|SKIP # Instruct the server whether to reply to commands
CLIENT SETNAME connection-name # 設(shè)置當(dāng)前連接的名字
CLIENT UNBLOCK client-id [TIMEOUT|ERROR] # Unblock a client blocked in a blocking command from a different connection
COMMAND # Get array of Redis command details
COMMAND COUNT # Get total number of Redis commands
COMMAND GETKEYS # Extract keys given a full Redis command
COMMAND INFO command-name [command-name ...] # Get array of specific Redis command details
CONFIG GET parameter # 獲取配置參數(shù)的值
CONFIG REWRITE # 從寫內(nèi)存中的配置文件
CONFIG SET parameter value # 設(shè)置配置文件
CONFIG RESETSTAT # 復(fù)位再分配使用info命令報告的統(tǒng)計
DBSIZE # 返回當(dāng)前數(shù)據(jù)庫里面的keys數(shù)量
DEBUG OBJECT key # 獲取一個key的debug信息
DEBUG SEGFAULT # 使服務(wù)器崩潰命令
FLUSHALL # 清空所有數(shù)據(jù)庫命令
FLUSHDB # 清空當(dāng)前的數(shù)據(jù)庫命令
INFO [section] # 獲得服務(wù)器的詳細(xì)信息
LASTSAVE # 獲得最后一次同步磁盤的時間
MEMORY DOCTOR # Outputs memory problems report
MEMORY HELP # Show helpful text about the different subcommands
MEMORY-MALLOC-STATS # Show allocator internal stats
MEMORY-PURGE # Ask the allocator to release memory
MEMORY-STATS # Show memory usage details
MEMORY-USAGE key [SAMPLES count] # Estimate the memory usage of a key
MONITOR # 實(shí)時監(jiān)控服務(wù)器
REPLICAOF host port # Make the server a replica of another instance, or promote it as master.
ROLE # Return the role of the instance in the context of replication
SAVE # 同步數(shù)據(jù)到磁盤上
SHUTDOWN [NOSAVE] [SAVE] # 關(guān)閉服務(wù)
SLAVEOF host port # 指定當(dāng)前服務(wù)器的主服務(wù)器
SLOWLOG subcommand [argument] # 管理再分配的慢查詢?nèi)罩?SYNC # 用于復(fù)制的內(nèi)部命令
TIME # 返回當(dāng)前服務(wù)器時間

# Cluster
CLUSTER ADDSLOTS slot [slot ...] # Assign new hash slots to receiving node
CLUSTER COUNT-FAILURE-REPORTS node-id # Return the number of failure reports active for a given node
CLUSTER COUNTKEYSINSLOT slot # Return the number of local keys in the specified hash slot
CLUSTER DELSLOTS slot [slot ...] # Set hash slots as unbound in receiving node
CLUSTER FAILOVER [FORCE|TAKEOVER] # Forces a slave to perform a manual failover of its master.
CLUSTER FORGET node-id # Remove a node from the nodes table
CLUSTER GETKEYSINSLOT slot count # Return local key names in the specified hash slot
CLUSTER INFO # Provides info about Redis Cluster node state
CLUSTER KEYSLOT key # Returns the hash slot of the specified key
CLUSTER MEET ip port # Force a node cluster to handshake with another node
CLUSTER NODES # Get Cluster config for the node
CLUSTER REPLICAS node-id # List replica nodes of the specified master node
CLUSTER REPLICATE node-id # Reconfigure a node as a slave of the specified master node
CLUSTER RESET [HARD|SOFT] # Reset a Redis Cluster node
CLUSTER SAVECONFIG # Forces the node to save cluster state on disk
CLUSTER SET-CONFIG-EPOCH config-epoch # Set the configuration epoch in a new node
CLUSTER SETSLOT slot IMPORTING|MIGRATING|STABLE|NODE [node-id] # Bind an hash slot to a specific node
CLUSTER SLAVES node-id # List slave nodes of the specified master node
CLUSTER SLOTS # Get array of Cluster slot to node mappings
READONLY # Enables read queries for a connection to a cluster slave node
READWRITE # Disables read queries for a connection to a cluster slave node

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市宪摧,隨后出現(xiàn)的幾起案子粒竖,更是在濱河造成了極大的恐慌,老刑警劉巖绍刮,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件温圆,死亡現(xiàn)場離奇詭異,居然都是意外死亡孩革,警方通過查閱死者的電腦和手機(jī)岁歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膝蜈,“玉大人锅移,你說我怎么就攤上這事”ゲ” “怎么了非剃?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長推沸。 經(jīng)常有香客問我备绽,道長,這世上最難降的妖魔是什么鬓催? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任肺素,我火速辦了婚禮,結(jié)果婚禮上宇驾,老公的妹妹穿的比我還像新娘倍靡。我一直安慰自己,他們只是感情好课舍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布塌西。 她就那樣靜靜地躺著,像睡著了一般筝尾。 火紅的嫁衣襯著肌膚如雪捡需。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天忿等,我揣著相機(jī)與錄音栖忠,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛庵寞,可吹牛的內(nèi)容都是我干的狸相。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捐川,長吁一口氣:“原來是場噩夢啊……” “哼脓鹃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起古沥,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘸右,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岩齿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體太颤,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年盹沈,在試婚紗的時候發(fā)現(xiàn)自己被綠了龄章。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乞封,死狀恐怖做裙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肃晚,我是刑警寧澤锚贱,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站关串,受9級特大地震影響拧廊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晋修,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一卦绣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧飞蚓,春花似錦、人聲如沸廊蜒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽山叮。三九已至著榴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屁倔,已是汗流浹背脑又。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人问麸。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓往衷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親严卖。 傳聞我的和親對象是個殘疾皇子席舍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

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