千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

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

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > Redis用select選擇數(shù)據(jù)庫有什么意義?

Redis用select選擇數(shù)據(jù)庫有什么意義?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-13 15:24:41 1697181881

一、Redis用select選擇數(shù)據(jù)庫的意義

1、數(shù)據(jù)是隔離的

Redis的不同數(shù)據(jù)庫之間是互相隔離的,每個數(shù)據(jù)庫中的命名空間都是獨(dú)立的,數(shù)據(jù)不會互相干擾,可以提供更好的數(shù)據(jù)管理和保護(hù)。

2、能夠提高效率

使用不同的數(shù)據(jù)庫可以避免數(shù)據(jù)之間的相互干擾,減少系統(tǒng)的競爭,并提高系統(tǒng)的并發(fā)能力和性能。

3、數(shù)據(jù)可以進(jìn)行分類

可以基于業(yè)務(wù)需要將數(shù)據(jù)分門別類地存儲在不同的數(shù)據(jù)庫中,方便對不同類型的數(shù)據(jù)進(jìn)行分類管理和查詢。

二、Redis介紹

1、定義

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

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

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

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

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

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

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

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

三、Redis中的數(shù)據(jù)結(jié)構(gòu)

1、string(字符串)

string是最簡單的類型,你可以理解成與Memcached一模一樣的類型,一個key對應(yīng)一個value,其上支持的操作與Memcached的操作類似。但它的功能更豐富。redis采用結(jié)構(gòu)sdshdr和sds封裝了字符串,字符串相關(guān)的操作實(shí)現(xiàn)在源文件sds.h/sds.c中。

數(shù)據(jù)結(jié)構(gòu)定義如下:

typedefchar*sds;structsdshdr{longlen;longfree;charbuf[];};

2、list(雙向鏈表)

list是一個鏈表結(jié)構(gòu),主要功能是push、pop、獲取一個范圍的所有值等等。操作中key理解為鏈表的名字。對list的定義和實(shí)現(xiàn)在源文件adlist.h/adlist.c,相關(guān)的數(shù)據(jù)結(jié)構(gòu)定義如下:

//list迭代器typedefstructlistIter{listNode*next;intdirection;}listIter;//list數(shù)據(jù)結(jié)構(gòu)typedefstructlist{listNode*head;listNode*tail;void*(*dup)(void*ptr);void(*free)(void*ptr);int(*match)(void*ptr,void*key);unsignedintlen;listIteriter;}list;

3、dict(hash表)

set是集合,和我們數(shù)學(xué)中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交并差等操作。操作中key理解為集合的名字。在源文件dict.h/dict.c中實(shí)現(xiàn)了hashtable的操作,數(shù)據(jù)結(jié)構(gòu)的定義如下:

//dict中的元素項(xiàng)typedefstructdictEntry{void*key;void*val;structdictEntry*next;}dictEntry;//dict相關(guān)配置函數(shù)typedefstructdictType{unsignedint(*hashFunction)(constvoid*key);void*(*keyDup)(void*privdata,constvoid*key);void*(*valDup)(void*privdata,constvoid*obj);int(*keyCompare)(void*privdata,constvoid*key1,constvoid*key2);void(*keyDestructor)(void*privdata,void*key);void(*valDestructor)(void*privdata,void*obj);}dictType;//dict定義typedefstructdict{dictEntry**table;dictType*type;unsignedlongsize;unsignedlongsizemask;unsignedlongused;void*privdata;}dict;//dict迭代器typedefstructdictIterator{dict*ht;intindex;dictEntry*entry,*nextEntry;}dictIterator;

dict中table為dictEntry指針的數(shù)組,數(shù)組中每個成員為hash值相同元素的單向鏈表。set是在dict的基礎(chǔ)上實(shí)現(xiàn)的,指定了key的比較函數(shù)為dictEncObjKeyCompare,若key相等則不再插入。

4、zset(排序set)

zset是set的一個升級版本,他在set的基礎(chǔ)上增加了一個順序?qū)傩裕@一屬性在添加修改元素的時候可以指定,每次指定后,zset會自動重新按新的值調(diào)整順序。可以理解了有兩列的mysql表,一列存value,一列存順序。操作中key理解為zset的名字。數(shù)據(jù)結(jié)構(gòu)的定義如下:

typedefstructzskiplistNode{structzskiplistNode**forward;structzskiplistNode*backward;doublescore;robj*obj;}zskiplistNode;typedefstructzskiplist{structzskiplistNode*header,*tail;unsignedlonglength;intlevel;}zskiplist;typedefstructzset{dict*dict;zskiplist*zsl;}zset;

延伸閱讀1:Redis的文件格式

redis使用了兩種文件格式,即全量數(shù)據(jù)和增量請求。全量數(shù)據(jù)格式是把內(nèi)存中的數(shù)據(jù)寫入磁盤,便于下次讀取文件進(jìn)行加載;增量請求文件則是把內(nèi)存中的數(shù)據(jù)序列化為操作請求,用于讀取文件進(jìn)行replay得到數(shù)據(jù),序列化的操作包括SET、RPUSH、SADD、ZADD。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
foxmail 7.2使用的是什么方式存儲的郵件?

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

2023-10-13 17:08:36
數(shù)據(jù)庫中關(guān)系代數(shù)與關(guān)系運(yùn)算的區(qū)別是什么?

一、數(shù)據(jù)庫中關(guān)系代數(shù)與關(guān)系運(yùn)算的區(qū)別關(guān)系代數(shù)可以理解為一種抽象的查詢語言,它用對關(guān)系的運(yùn)算來表達(dá)查詢。運(yùn)算對象、運(yùn)算符、運(yùn)算結(jié)果是運(yùn)算...詳情>>

2023-10-13 17:00:59
如何建立數(shù)據(jù)庫,利用什么軟件建立數(shù)據(jù)庫?

一、如何建立數(shù)據(jù)庫CREATE DATABASE:MySQL語法示例應(yīng)該提到的在MySQL中創(chuàng)建數(shù)據(jù)庫的名列前茅種方法是使用CREATE DATABASE語句。該語句以指定的...詳情>>

2023-10-13 16:56:43
為什么使用Redis做緩存而不會使用關(guān)系型數(shù)據(jù)庫?

一、為什么使用Redis做緩存而不會使用關(guān)系型數(shù)據(jù)庫首先要知道緩存緩存是干什么的,緩存是指可以進(jìn)行高速數(shù)據(jù)交換的存儲器,它先于內(nèi)存與CPU交換...詳情>>

2023-10-13 16:43:22
mysql 非少數(shù)索引的等值查詢?yōu)槭裁匆觛ap鎖?

一、mysql 非少數(shù)索引的等值查詢?yōu)槭裁匆觛ap鎖mysql 中非少數(shù)索引使用的也是 B+ 樹來組織數(shù)據(jù)結(jié)構(gòu)。假設(shè) id 的索引結(jié)構(gòu)在葉子節(jié)點(diǎn)從左到右的...詳情>>

2023-10-13 16:33:11
快速通道
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
洲国产精品一区第一页 | 午夜在线视频国产五月天 | 亚洲欧美久久天堂综合一区 | 在线播放真实国产乱子伦 | 午夜福利在线视频国产不卡 | 亚洲女性午夜在线 |