• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            Redis之七種武器

            轉載自:http://blog.nosqlfan.com/html/2942.html?ref=rediszt

            長生劍、孔雀翎、碧玉刀、多情環(huán)、離別鉤、霸王槍、拳頭是古龍筆下的七種武器,而本文打算將Redis的幾種使用方式 StringsHashsLists、Sets、Sorted Sets、Pub/SubTransactions 也比作七種武器,為大家講解Redis的七種特性,并列舉其適合的應用場景。

            Strings

            Strings 數(shù)據(jù)結構是簡單的key-value類型,value其實不僅是String,也可以是數(shù)字。使用Strings類型,你可以完全實現(xiàn)目前 Memcached 的功能,并且效率更高。還可以享受Redis的定時持久化,操作日志及 Replication等功能。除了提供與 Memcached 一樣的get、set、incr、decr 等操作外,Redis還提供了下面一些操作:

            • 獲取字符串長度
            • 往字符串append內容
            • 設置和獲取字符串的某一段內容
            • 設置及獲取字符串的某一位(bit)
            • 批量設置一系列字符串的內容

            Hashs

            在Memcached中,我們經(jīng)常將一些結構化的信息打包成hashmap,在客戶端序列化后存儲為一個字符串的值,比如用戶的昵稱、年齡、性別、積分等,這時候在需要修改其中某一項時,通常需要將所有值取出反序列化后,修改某一項的值,再序列化存儲回去。這樣不僅增大了開銷,也不適用于一些可能并發(fā)操作的場合(比如兩個并發(fā)的操作都需要修改積分)。而Redis的Hash結構可以使你像在數(shù)據(jù)庫中Update一個屬性一樣只修改某一項屬性值。

            Lists

            Lists 就是鏈表,相信略有數(shù)據(jù)結構知識的人都應該能理解其結構。使用Lists結構,我們可以輕松地實現(xiàn)最新消息排行等功能。Lists的另一個應用就是消息隊列,可以利用Lists的PUSH操作,將任務存在Lists中,然后工作線程再用POP操作將任務取出進行執(zhí)行。Redis還提供了操作Lists中某一段的api,你可以直接查詢,刪除Lists中某一段的元素。

            Sets

            Sets 就是一個集合,集合的概念就是一堆不重復值的組合。利用Redis提供的Sets數(shù)據(jù)結構,可以存儲一些集合性的數(shù)據(jù),比如在微博應用中,可以將一個用戶所有的關注人存在一個集合中,將其所有粉絲存在一個集合。Redis還為集合提供了求交集、并集、差集等操作,可以非常方便的實現(xiàn)如共同關注、共同喜好、二度好友等功能,對上面的所有集合操作,你還可以使用不同的命令選擇將結果返回給客戶端還是存集到一個新的集合中。

            Sorted Sets

            和Sets相比,Sorted Sets增加了一個權重參數(shù)score,使得集合中的元素能夠按score進行有序排列,比如一個存儲全班同學成績的Sorted Sets,其集合value可以是同學的學號,而score就可以是其考試得分,這樣在數(shù)據(jù)插入集合的時候,就已經(jīng)進行了天然的排序。另外還可以用Sorted Sets來做帶權重的隊列,比如普通消息的score為1,重要消息的score為2,然后工作線程可以選擇按score的倒序來獲取工作任務。讓重要的任務優(yōu)先執(zhí)行。

            Pub/Sub

            Pub/Sub 從字面上理解就是發(fā)布(Publish)與訂閱(Subscribe),在Redis中,你可以設定對某一個key值進行消息發(fā)布及消息訂閱,當一個key值上進行了消息發(fā)布后,所有訂閱它的客戶端都會收到相應的消息。這一功能最明顯的用法就是用作實時消息系統(tǒng),比如普通的即時聊天,群聊等功能。

            Transactions

            誰說NoSQL都不支持事務,雖然Redis的Transactions提供的并不是嚴格的ACID的事務(比如一串用EXEC提交執(zhí)行的命令,在執(zhí)行中服務器宕機,那么會有一部分命令執(zhí)行了,剩下的沒執(zhí)行),但是這個Transactions還是提供了基本的命令打包執(zhí)行的功能(在服務器不出問題的情況下,可以保證一連串的命令是順序在一起執(zhí)行的,中間有會有其它客戶端命令插進來執(zhí)行)。Redis還提供了一個Watch功能,你可以對一個key進行Watch,然后再執(zhí)行Transactions,在這過程中,如果這個Watched的值進行了修改,那么這個Transactions會發(fā)現(xiàn)并拒絕執(zhí)行。

            好了,本文就先說到這里,上面這些這只是Redis API的一些使用方式,可謂冰山一角,Redis就像一把瑞士軍刀一樣(或者是更萬能的中國軍鏟),它創(chuàng)造了一系列更接近于應用場景的數(shù)據(jù)結構和API,目的在于讓我們更直接的基于應用場景進行存儲設計。更多的應用場景和組合式的應用還有待您自己的發(fā)掘。或者多關注本站(NoSQLFan.COM),你也能發(fā)現(xiàn)一些有意思的基于Redis的應用。同時也歡迎將你對Redis的使用方法通過NoSQLFan分享給更多的朋友。


            posted on 2014-06-15 12:27 楊粼波 閱讀(599) 評論(0)  編輯 收藏 引用

            亚洲色欲久久久综合网东京热| 丰满少妇人妻久久久久久4| 国产精品久久久久影院色| 久久久亚洲欧洲日产国码二区 | 亚洲伊人久久大香线蕉综合图片| 91精品婷婷国产综合久久| 国内精品久久久久久久久电影网| 久久久久久久久久免免费精品| 日本国产精品久久| 亚洲欧美日韩久久精品第一区| 99久久99这里只有免费费精品| 99精品久久久久久久婷婷| 亚洲狠狠久久综合一区77777 | 狠狠综合久久综合中文88| 日韩精品国产自在久久现线拍| 中文字幕久久亚洲一区| 国产日产久久高清欧美一区| 国内精品人妻无码久久久影院导航| 大香伊人久久精品一区二区| 国产69精品久久久久99| 91精品国产综合久久香蕉 | 精品久久久久久久国产潘金莲| 久久亚洲精品国产亚洲老地址| 久久久中文字幕| 久久精品无码一区二区三区免费| 久久人人超碰精品CAOPOREN| 久久香蕉国产线看观看99| 久久亚洲欧洲国产综合| 亚洲中文精品久久久久久不卡| 99久久夜色精品国产网站| 少妇人妻综合久久中文字幕| 亚洲伊人久久大香线蕉综合图片| 久久精品国产影库免费看| 久久人人爽人人澡人人高潮AV| 亚洲精品美女久久久久99| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久国产香蕉一区精品| 久久久久人妻一区精品色| 久久毛片免费看一区二区三区| 一本久久知道综合久久| 精品久久久久国产免费|