Redis筆記

概念

概念: redis是一 款高性能的NOSQL系列的非關(guān)系型數(shù)據(jù)庫(kù)

什么是NOSQL

NOSQL(NOSQL = Not only SQL), 意即“不僅僅是SQL",是一項(xiàng)全新的數(shù)據(jù)庫(kù)理念,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。

隨著互聯(lián)網(wǎng)web2. 0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2. 0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2. 0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NOSQL 數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的挑戰(zhàn),尤其是大故據(jù)應(yīng)用難題。

NOSQL 和關(guān)系型數(shù)據(jù)庫(kù)比較

優(yōu)點(diǎn):

  1. 成本: nosql數(shù)據(jù)庫(kù)簡(jiǎn)單易部署,基本都是開源軟件,不需要像使用oracle那樣花費(fèi)大量成本購(gòu)買使用,相比關(guān)系型數(shù)據(jù)庫(kù)價(jià)格便宜。
  2. 查詢速度: nosql數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)于緩存之中,關(guān)系型數(shù)據(jù)庫(kù)將數(shù)據(jù)存儲(chǔ)在硬盤中,自然查詢速度遠(yuǎn)不及nosql數(shù)據(jù)庫(kù)。
  3. 存儲(chǔ)數(shù)據(jù)的格式: nosql的存儲(chǔ)格式是key,value形式,文檔形式、圖片形式等等,所以可以存儲(chǔ)基礎(chǔ)類型以及對(duì)象或者是集合等各種格式,而數(shù)據(jù)庫(kù)則只支持基礎(chǔ)類型。
  4. 擴(kuò)展性:關(guān)系型數(shù)據(jù)庫(kù)有類似join這樣的多表查詢機(jī)制的限制導(dǎo)致擴(kuò)展很艱難。

缺點(diǎn):

  1. 維護(hù)的工具和資料有限,因?yàn)閚osql是屬于新的技術(shù),不能和關(guān)系型數(shù)據(jù)庫(kù)10幾年的技術(shù)同日而語(yǔ)。
  2. 不提供對(duì)sql的支持,如果不支持sql這樣的工業(yè)標(biāo)準(zhǔn),將產(chǎn)生一定用戶的學(xué) 習(xí)和使用成本。
  3. 不提供關(guān)系型數(shù)據(jù)庫(kù)對(duì)事務(wù)的處理。

非關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)勢(shì):

  1. 性能NOSQL是基于鍵值對(duì)的,可以想象成表中的主鍵和值的對(duì)應(yīng)關(guān)系,而且不需要經(jīng)過(guò)SQL層的解析,所以性能非常高。
  2. 可擴(kuò)展性同樣也是因?yàn)榛阪I值對(duì),數(shù)據(jù)之間沒有耦合性,所以非常容易水平擴(kuò)展。

關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)勢(shì) :

  1. 復(fù)雜查詢可以用SQL語(yǔ)句方便的在一個(gè)表以及多個(gè)表之間做非常復(fù)雜的數(shù)據(jù)查詢。
  2. 事務(wù)支持使得對(duì)于安全性能很高的數(shù)據(jù)訪問(wèn)要求得以實(shí)現(xiàn)。對(duì)于這兩類數(shù)據(jù)庫(kù),對(duì)方的優(yōu)勢(shì)就是自己的弱勢(shì),反之亦然。

總結(jié)

關(guān)系型數(shù)據(jù)庫(kù)與NOSQL數(shù)據(jù)庫(kù)并非對(duì)立而是互補(bǔ)的關(guān)系,即通常情況下使用關(guān)系型數(shù)據(jù)庫(kù),在適合使用NOSQL的時(shí)候使用NOSQL數(shù)據(jù)庫(kù),讓NOSQL數(shù)據(jù)庫(kù)對(duì)關(guān)系型數(shù)據(jù)庫(kù)的不足進(jìn)行彌補(bǔ)。

一般會(huì)將數(shù)據(jù)存 儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中,在nosql 數(shù)據(jù)庫(kù)中備份存儲(chǔ)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)

主流的NOSQL產(chǎn)品

  1. 鍵值(Key-Value )存儲(chǔ)數(shù)據(jù)庫(kù)
  • 相關(guān)產(chǎn)品: Tokyo Cabinet/Tyrant. Redis. Voldemort. Berkeley DB
  • 典型應(yīng)用:內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問(wèn)負(fù)載。
  • 數(shù)據(jù)模型:一系列鍵值對(duì)
  • 優(yōu)勢(shì):快速查詢
  • 劣勢(shì):存儲(chǔ)的數(shù)據(jù)缺少結(jié)構(gòu)化
  1. 列存儲(chǔ)數(shù)據(jù)庫(kù)

    • 相關(guān)產(chǎn)品: Cassandra, HBase, Riak
    • 典型應(yīng)用:分布式的文件系統(tǒng)
    • 數(shù)據(jù)模型:以列簇式存儲(chǔ),將同一列數(shù)據(jù)存在一起
    • 優(yōu)勢(shì):查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展
    • 劣勢(shì):功能相對(duì)局限
  2. 文檔型數(shù)據(jù)庫(kù)

    • 相關(guān)產(chǎn)品: CouchDB. MongoDB
    • 典型應(yīng)用: Web應(yīng)用(與Key-Value類似,Value是結(jié)構(gòu)化的)
    • 數(shù)據(jù)模型: 一系列鍵值對(duì)
    • 優(yōu)勢(shì):數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格
    • 劣勢(shì):查詢性能不高,而且缺乏統(tǒng)一的查詢語(yǔ)法
  3. 圖形(Graph)數(shù)據(jù)庫(kù)

    • 相關(guān)數(shù)據(jù)庫(kù): Ne04J、InfoGrid. Infinite Graph
    • 典型應(yīng)用:社交網(wǎng)絡(luò)
    • 數(shù)據(jù)模型:圖結(jié)構(gòu)
    • 優(yōu)勢(shì):利用圖結(jié)構(gòu)相關(guān)算法。
    • 劣勢(shì):需要對(duì)整個(gè)圖做計(jì)算才能得出結(jié)果,不容易做分布式的集群方案。

什么是Redis

Redis是用C語(yǔ)言開發(fā)的一個(gè)開源的高性能鍵值對(duì)(key-value) 數(shù)據(jù)庫(kù),官方提供測(cè)試數(shù)據(jù), 50個(gè)并發(fā)執(zhí)行100000個(gè)請(qǐng)求,讀的速度是110000次/s,寫的速度是81000次/s,且Redis通過(guò)提供多種鍵值故據(jù)類型來(lái)適應(yīng)不同場(chǎng)景下的存儲(chǔ)需求,目前為止Redis支持的鍵值數(shù)據(jù)類型如下:

  1. 字符串類型string
  2. 哈希類型hash
  3. 列表類型list
  4. 集合類型set
  5. 有序集合類型sortedset

redis的應(yīng)用場(chǎng)景

  • 緩存(數(shù)據(jù)查詢、短連接、新聞內(nèi)容、商品內(nèi)容等等)
  • 聊天室的在線好友列表
  • 任務(wù)隊(duì)列。(秒殺, 搶購(gòu)、12306等等)
  • 應(yīng)用排行榜
  • 網(wǎng)站訪問(wèn)統(tǒng)計(jì)
  • 數(shù)據(jù)過(guò)期處理(可以精確到毫秒)
  • 分布式集群架構(gòu)中的session分副

redis命令操作

redis數(shù)據(jù)結(jié)構(gòu):

redis存儲(chǔ)的是:key,value格式的數(shù)據(jù),其中key都是字符串,value有五種不同的數(shù)據(jù)結(jié)構(gòu)

  1. 字符串類型 sting
  2. 哈希類型 hash:map格式
  3. 列表結(jié)構(gòu) list:linkedlist格式,支持重復(fù)元素
  4. 集合類型 set:不允許重復(fù)元素
  5. 有序集合類型 sortedsed:不允許重復(fù)元素,且元素有序

字符串類型

  1. 存儲(chǔ):set key value
  2. 獲?。篻et key
  3. 刪除:del key

哈希類型 hash

  1. 存儲(chǔ):hset key field value

  2. 獲?。?/p>

    • hget key field: 獲取指定的field對(duì)應(yīng)的值
    • hgetall key :獲取所有的field和value
  3. 刪除:hdel key field

列表類型list

可以添加一個(gè)元素到列表的頭部(左邊)或者尾部(右邊)

  1. 添加:

    • lpush key value: 將元素加入列表左表
    • rpush key value: 將元素加入列表右表
  2. 獲取

  • lrange key start end: 范圍獲取
  1. 刪除:
  • lpop key :刪除列表最左邊元素,并將元素返回
  • rpop key :刪除列表最右邊元素,并將元素返回

集合類型set:

不允許重復(fù)元素

  1. 存儲(chǔ):sadd key value
  2. 獲?。簊members key :獲取set集合所有元素
  3. 刪除:srem key value: 刪除set集合中的某個(gè)元素

有序集合類型 sortedset

不允許重復(fù)元素,且元素有序

  1. 存儲(chǔ):zadd key score value
  2. 獲?。簔range key start end
  3. 刪除:zrem key value
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 在大型應(yīng)用場(chǎng)景中,常常使用nignx做負(fù)載均衡以分?jǐn)傉?qǐng)求壓力,隨之而來(lái)的是session的存儲(chǔ)成為難題,即服...
    霜漠冰河閱讀 361評(píng)論 0 0
  • 1. 概念: redis是一款高性能的NOSQL系列的非關(guān)系型數(shù)據(jù)庫(kù) 什么是NOSQLNoSQL(NoSQL = ...
    慵懶的陽(yáng)光丶閱讀 252評(píng)論 0 0
  • Redis簡(jiǎn)介: Redis 是完全開源免費(fèi)的,遵守 BSD 協(xié)議,是一個(gè)高性能的 key - value 數(shù)據(jù)庫(kù)...
    套馬桿的程序員閱讀 308評(píng)論 0 0
  • 1、Redis是什么?是一個(gè)高性能的一個(gè)鍵值數(shù)據(jù)庫(kù),NoSql數(shù)據(jù)庫(kù)(非關(guān)系型數(shù)據(jù)庫(kù)) 2、什么是非關(guān)系型數(shù)據(jù)庫(kù)?...
    呆萌孫先生閱讀 263評(píng)論 0 0
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽閱讀 10,894評(píng)論 0 11

友情鏈接更多精彩內(nèi)容