国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

我眼中的Redis

2024-07-21 02:52:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、背景:

       最近做項(xiàng)目用到了redis作為緩存,來(lái)保證查詢的響應(yīng)時(shí)間,避免給數(shù)據(jù)庫(kù)巨大的查詢壓力,就了解了下redis的相關(guān)信息。

二、我眼中的redis:

       redis是一個(gè)開(kāi)源的支持網(wǎng)絡(luò)、并可基于內(nèi)存可持久化的Key-Value的數(shù)據(jù)庫(kù),它提供多種語(yǔ)言的API(這里我用的是go的redis客戶端)。redis本質(zhì)也是一種鍵值的數(shù)據(jù)庫(kù)

,但他在保持鍵值數(shù)據(jù)庫(kù)簡(jiǎn)單快捷特點(diǎn)的同時(shí),又吸收了部分關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)。所以redis可以說(shuō)是處于關(guān)系數(shù)據(jù)庫(kù)和鍵值數(shù)據(jù)庫(kù)之間的一種數(shù)據(jù)庫(kù)。下面就介紹下redis都能存儲(chǔ)哪些數(shù)據(jù)類型。

三、redis的幾種常用數(shù)據(jù)類型:

     (1)String

              String是最常用的一種數(shù)據(jù)類型,一般的key-value存儲(chǔ)都可采用String的數(shù)據(jù)類型來(lái)存儲(chǔ)。(這里value不僅僅可以是String也可以是數(shù)字,INCRBY可以通過(guò)原子遞增保持計(jì)數(shù))

              常用命令:get、set、incrby等。同時(shí)還提供獲取字符串長(zhǎng)度、獲取字符串某一段內(nèi)容等功能。

     (2)Hash

              Redis Hash是一種string類型的filed和value的映射表,hash特別適合存儲(chǔ)對(duì)象,redis中每個(gè)hash可以存儲(chǔ)2的32次方-1個(gè)鍵值對(duì)。

              常用命令:

              1.hset:設(shè)定指定的hash field (hset "hash1" "field" "test")

              2.hmset:同時(shí)設(shè)定hash多個(gè)filed(hmset "hash1" "field1" "test1" "field2" "test2")

      3.hget:獲取指定的hash值的field(hget "hash1" "field1")

              4.hgetall:獲取所有的hash值數(shù)據(jù)(hgetall "hash1")

              5.hmget:獲取hash值的多個(gè)field(hmget "hash1" "field1" "field2")

       (3) List列表

            列表類型可以存儲(chǔ)一個(gè)有序的字符串列表,常用的操作是向列表的兩端添加元素或獲得列表的某個(gè)片段;列表類型內(nèi)部是用使用雙向鏈表實(shí)現(xiàn)的,故向列表的兩端插入元素時(shí)間復(fù)雜度都是O(1),獲取越接近兩端的元素,速度越快。

            常用命令:

            1.lpush:從左邊(即列表的頭)向list列表中插入數(shù)據(jù)(lpush "list1" "test1")

            2.rpush: 從右邊(即列表的尾)向list列表中插入數(shù)據(jù)(rpush "list" "test1")

            3.lpop:從列表左側(cè)(即列表的頭)彈出數(shù)據(jù)(lpop "list1")

            4.rpop:從列表右側(cè)(即列表的尾)彈出數(shù)據(jù)(rpop "list1")

        (4)Set集合

            集合中的元素都是不同的,且沒(méi)有順序。一個(gè)集合類型一個(gè)鍵可以存儲(chǔ)2的32次方-1個(gè)字符串。集合類型的常用操作是向集合中加入或者刪除元素、判斷某個(gè)元素是否存在等,由于集合類型在redis內(nèi)部是使用值為空的散列表實(shí)現(xiàn),所以這些操作的時(shí)間復(fù)雜度是O(1)。值得一提的是多個(gè)集合類型的鍵值之間可以進(jìn)行并集、交集、差集的運(yùn)算。

            常用命令:

    (1)sadd:用來(lái)向集合中添加一個(gè)或者多個(gè)元素,如果鍵不存在則會(huì)自動(dòng)創(chuàng)建。集合中不會(huì)有相同的元素,故若加入的元素已經(jīng)存在則會(huì)忽略這個(gè)元素(sadd "set1" "test1" "test2")

            (2)smembers:返回集合中的所有元素(smembers "set1")

            (3)sdiff:計(jì)算差集(sdiff "set1" "set2")

            (4)sinter:計(jì)算交集(sinter "set1" "set2")

            (5)sunion:計(jì)算并集(sunion "set1" "set2")

        (5)zset(Sorted set:有序集合)

            在集合類型的基礎(chǔ)上有序集合類型為集合中的元素關(guān)聯(lián)了一個(gè)分?jǐn)?shù)可以理解為權(quán)重,我們不僅可以完成插入,刪除和盤算元素是否存在等集合類型支持的操作,還能活著分?jǐn)?shù)最高(或最低)的前N個(gè)元素,獲得指定分?jǐn)?shù)范圍內(nèi)的元素等于分?jǐn)?shù)相關(guān)的操作。集合中的元素不同,但是分?jǐn)?shù)可以相同。

            常用命令:

            (1)zadd:向有序集合中加入一個(gè)元素和該元素的分?jǐn)?shù),如果該元素已經(jīng)存在則會(huì)用新的分?jǐn)?shù)替換原來(lái)的分?jǐn)?shù)。zadd返回值為新加入到集合中的元素個(gè)數(shù)(zadd scoreboard 89 test1 67 test2  80 test3)

            (2)zscore key member:獲取元素的分?jǐn)?shù)(zscore scoreboard test)

            (3)zrange key start stop:按照元素分?jǐn)?shù)從小到大順序返回索引從start到stop之間的所有元素(zrange scoreboard 0 -1)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 讷河市| 扎兰屯市| 鲁甸县| 肇州县| 方城县| 晋中市| 沾益县| 中江县| 哈密市| 新沂市| 正阳县| 富源县| 个旧市| 水城县| 湘潭市| 夏邑县| 潢川县| 饶河县| 万山特区| 郑州市| 隆林| 弋阳县| 庆城县| 衢州市| 乡城县| 藁城市| 新巴尔虎左旗| 大方县| 安国市| 阿拉善右旗| 泊头市| 永和县| 浮梁县| 永泰县| 乌兰察布市| 浦城县| 巴楚县| 大宁县| 怀仁县| 孟村| 阿鲁科尔沁旗|