久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術(shù)干貨  > redis怎么實現(xiàn)數(shù)據(jù)庫類似rank并列排名?

        redis怎么實現(xiàn)數(shù)據(jù)庫類似rank并列排名?

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-10-13 15:55:20 1697183720

        一、redis實現(xiàn)數(shù)據(jù)庫類似rank并列排名的方法

        Sorted Set是一個有序的集合,其中的每個成員都會被賦予一個分數(shù)(score),通過對分數(shù)的操作可以實現(xiàn)各種功能,例如排名。因此,可以使用Redis的Sorted Set來實現(xiàn)類似數(shù)據(jù)庫中排名(rank)的功能。

        1、創(chuàng)建一個Sorted Set

        創(chuàng)建一個Sorted Set,將要排名的數(shù)據(jù)放入其中,下面是代碼示例:

        zadd scores 60 "a"zadd scores 70 "b"zadd scores 80 "c"zadd scores 70 "d"

        上述代碼將”a”的分數(shù)設置為60,”b”的分數(shù)設置為70,”c”的分數(shù)設置為80,”d”的分數(shù)設置為70。

        2、使用ZRANK命令來獲取某個元素的排名

        使用ZRANK命令來獲取某個元素的排名。例如,獲取”a”的排名,下面是代碼示例:

        ZRANK scores "a"

        返回的結(jié)果是0,表示”a”的排名是名列前茅名。如果要查詢的元素不存在于集合中,則返回空。

        3、使用ZREVRANK獲取元素的反向排名

        如果需要獲取并列排名,可以使用ZREVRANK獲取元素的反向排名。例如,獲取”b”和”d”的排名,下面是代碼示例:

        ZREVRANK scores "b"ZREVRANK scores "d"

        上述代碼將分別返回1和2,表示”b”和”d”的排名都是第二名。

        如果需要獲取排名的成員及其分數(shù),可以使用ZRANGE命令。例如,獲取前三名的成員和分數(shù),下面是代碼示例:

        ZRANGE scores 0 2 WITHSCORES

        上述代碼將返回一個包含排名前三名的成員和分數(shù)的列表。

        二、redis介紹

        1、定義

        redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set—有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現(xiàn)了master-slave(主從)同步。

        Redis 是一個高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。

        Redis支持主從同步。數(shù)據(jù)可以從主服務器向任意數(shù)量的從服務器上同步,從服務器可以是關(guān)聯(lián)其他從服務器的主服務器。這使得Redis可執(zhí)行單層樹復制。存盤可以有意無意的對數(shù)據(jù)進行寫操作。由于完全實現(xiàn)了發(fā)布/訂閱機制,使得從數(shù)據(jù)庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發(fā)布記錄。同步對讀取操作的可擴展性和數(shù)據(jù)冗余很有幫助。

        redis的官網(wǎng)地址,非常好記,是redis.io。(域名后綴io屬于國家域名,是british Indian Ocean territory,即英屬印度洋領(lǐng)地),Vmware在資助著redis項目的開發(fā)和維護。從2010年3月15日起,Redis的開發(fā)工作由VMware主持。從2013年5月開始,Redis的開發(fā)由Pivotal贊助。

        2、數(shù)據(jù)模型

        Redis的外圍由一個鍵、值映射的字典構(gòu)成。與其他非關(guān)系型數(shù)據(jù)庫主要不同在于:Redis中值的類型不僅限于字符串,還支持如下抽象數(shù)據(jù)類型:

        字符串列表無序不重復的字符串集合有序不重復的字符串集合鍵、值都為字符串的哈希表

        值的類型決定了值本身支持的操作。Redis支持不同無序、有序的列表,無序、有序的集合間的交集、并集等高級服務器端原子操作。

        3、存儲

        redis使用了兩種文件格式,即全量數(shù)據(jù)和增量請求。全量數(shù)據(jù)格式是把內(nèi)存中的數(shù)據(jù)寫入磁盤,便于下次讀取文件進行加載;增量請求文件則是把內(nèi)存中的數(shù)據(jù)序列化為操作請求,用于讀取文件進行replay得到數(shù)據(jù),序列化的操作包括SET、RPUSH、SADD、ZADD。redis的存儲分為內(nèi)存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數(shù)對其進行配置。save seconds updates,save配置,指出在多長時間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。appendonly yes/no ,appendonly配置,指出是否在每次更新操作后進行日志記錄,如果不開啟,可能會在斷電時導致一段時間內(nèi)的數(shù)據(jù)丟失。因為redis本身同步數(shù)據(jù)文件是按上面的save條件來同步的,所以有的數(shù)據(jù)會在一段時間內(nèi)只存在于內(nèi)存中。appendfsync no/always/everysec ,appendfsync配置,no表示等操作系統(tǒng)進行數(shù)據(jù)緩存同步到磁盤,always表示每次更新操作后手動調(diào)用fsync()將數(shù)據(jù)寫到磁盤,everysec表示每秒同步一次。

        4、相關(guān)參數(shù)

        在我們成功安裝Redis后,我們直接執(zhí)行redis-server即可運行Redis,此時它是按照默認配置來運行的(默認配置甚至不是后臺運行)。我們希望Redis按我們的要求運行,則我們需要修改配置文件,Redis的配置文件就是我們上面第二個cp操作的redis.conf文件,它被我們拷貝到了/usr/local/redis/etc/目錄下。修改它就可以配置我們的server了。如何修改?下面是redis.conf的主要配置參數(shù)的意義:

        daemonize:是否以后臺daemon方式運行pidfile:pid文件位置port:監(jiān)聽的端口號timeout:請求超時時間loglevel:log信息級別logfile:log文件位置databases:開啟數(shù)據(jù)庫的數(shù)量save * *:保存快照的頻率,名列前茅個*表示多長時間,第二個*表示執(zhí)行多少次寫操作。在一定時間內(nèi)執(zhí)行一定數(shù)量的寫操作時,自動保存快照??稍O置多個條件rdbcompression:是否使用壓縮dbfilename:數(shù)據(jù)快照文件名(只是文件名,不包括目錄)dir:數(shù)據(jù)快照的保存目錄(這個是目錄)appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數(shù)據(jù)抗風險能力,但影響效率appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調(diào)用fsync、每秒啟用一次fsync、不調(diào)用fsync等待系統(tǒng)自己同步)

        延伸閱讀1:Redis一些常用命令

        TYPE key:用來獲取某key的類型KEYS pattern:匹配所有符合模式的key,比如KEYS * 就列出所有的key了,當然,復雜度O(n)RANDOMKEY:返回隨機的一個keyRPUSH key string:將某個值加入到一個key列表末尾LPUSH key string:將某個值加入到一個key列表頭部LLEN key:列表長度LRANGE key start end:返回列表中某個范圍的值,相當于mysql里面的分頁查詢那樣LTRIM key start end:只保留列表中某個范圍的值
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
        免費領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學 138****2860 剛剛成功領(lǐng)取
        王同學 131****2015 剛剛成功領(lǐng)取
        張同學 133****4652 剛剛成功領(lǐng)取
        李同學 135****8607 剛剛成功領(lǐng)取
        楊同學 132****5667 剛剛成功領(lǐng)取
        岳同學 134****6652 剛剛成功領(lǐng)取
        梁同學 157****2950 剛剛成功領(lǐng)取
        劉同學 189****1015 剛剛成功領(lǐng)取
        張同學 155****4678 剛剛成功領(lǐng)取
        鄒同學 139****2907 剛剛成功領(lǐng)取
        董同學 138****2867 剛剛成功領(lǐng)取
        周同學 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        mysql.sock文件是怎么起作用的?

        一、mysql.sock文件的工作原理在MySQL中,mysql.sock文件是用于實現(xiàn)本地套接字(socket)連接的一種機制。它在Unix或類Unix系統(tǒng)上使用,允許客...詳情>>

        2023-10-13 17:39:11
        oracle為什么要繼續(xù)開發(fā)mysql?

        一、oracle為什么要繼續(xù)開發(fā)mysql應該是之前收購的時候有協(xié)議吧,而且,本身面向的客戶也不太一樣。oracle也有不付費的用戶,mysql有社區(qū)版,但...詳情>>

        2023-10-13 17:27:29
        低代碼平臺的開發(fā),數(shù)據(jù)庫是怎么選擇的?

        一、低代碼平臺的開發(fā),數(shù)據(jù)庫是怎么選擇的如果你選擇的低代碼開發(fā)平臺支持多種數(shù)據(jù)庫,那就選你最熟悉的吧。除了oracle這種賊貴的,和postgres...詳情>>

        2023-10-13 17:25:32
        MySQL本地事務和MySQL XA事務的區(qū)別是什么?

        一、MySQL本地事務和MySQL XA事務的區(qū)別MySQL本地事務是指在單個數(shù)據(jù)庫連接上執(zhí)行的事務操作,通常用于單個數(shù)據(jù)庫實例上的事務處理。它遵循數(shù)據(jù)...詳情>>

        2023-10-13 17:16:58
        foxmail 7.2使用的是什么方式存儲的郵件?

        一、foxmail 7.2使用的是什么方式存儲的郵件1、foxmail郵件存儲位置在大家的安裝目錄下,我們可以直接右擊foxmail圖標然后我們點擊“打開文件位...詳情>>

        2023-10-13 17:08:36
        快速通道
        肥西县| 苏州市| 江城| 仲巴县| 新宁县| 轮台县| 仪陇县| 诸暨市| 翁牛特旗| 华宁县| 饶阳县| 武邑县| 肥东县| 家居| 布拖县| 青海省| 赤峰市| 郎溪县| 陆丰市| 丹寨县| 察雅县| 陆河县| 和田县| 罗江县| 文成县| 房产| 土默特右旗| 镇远县| 旬阳县| 孝义市| 阜南县| 桂平市| 平原县| 图木舒克市| 方山县| 秦安县| 曲麻莱县| 清丰县| 稻城县| 巧家县| 遂溪县|