(轉)Redis研究(一)—簡介

http://blog.csdn.net/wtyvhreal/article/details/41855327

??Redis是一個開源的高性能鍵值對數據庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,并借助許多高層級的接口使其可以勝任如緩存、隊列系統等不同的角色。

1.1歷史和發展

2008年,意大利一家創業公司Merzia的創始人Salvatore Sanfilippo為了避免MySQL的低性能,親自定做一個數據庫,并于2009年開發完成,這個就是redis。

短短幾年,用戶數據量猛增。國內如新浪微博、街旁和知乎等,國外如GitHub、暴雪等,都是Redis的用戶。

Redis的代碼托管在GitHub上,開發十分活躍。

1.2特性

?

1.2.1存儲結構

Redis是REmote DIctionary Server(遠程字典服務器)的縮寫,他以字典結構存儲數據,并允許其他應用通過TCP協議讀寫字典里的內容,Redis字典中的鍵值除了可以是字符串外,還可以是其他數據類型,比如

???? 字符串類型
???? 散列類型

???? 列表類型

???? 集合類型

?????有序集合類型

這種字典形式的存儲結構與常見的mysql等關系數據庫的二維表形式的存儲結構有很大的差異。

(1)支持開發者可以將程序中的數據直接映射到Redis中

(2)對不同數據類型提供了非常方便的操作方式,如使用集合類型存儲文章標簽,Redis可以對標簽進行如交集、并集這樣的集合運算操作。

?

1.2.2內存存儲與持久化

Redis數據庫中的所有數據都存儲在內存中,由于內存的讀寫速度遠快于硬盤,性能明顯優勢,無時延情況下Redis可以在一秒內讀寫超過100000個鍵值。

將數據存儲在內存中也有問題,程序退出后內存中的數據會丟失,但是,Redis提供了對持久化的支持,即可以將內存中的數據異步寫入到硬盤中,同時不影響繼續提供服務。

?

1.2.3功能豐富

用作緩存、隊列系統等。

Redis可以為每個鍵設置生存時間(TTL),生存時間到期后鍵會自動被刪除,這一功能配合出色的性能讓Redis可以作為緩存系統來使用,成為了緩存系統Memcached的有力競爭者。

性能上:Redis是單線程模型,而Memcached支持多線程,多核服務器上后者性能好點。

但是Redis大多數情況下足夠優異都不會成為瓶頸,如果需要用到高級的數據類型或者持久化功能等,Redis會更好點。

作為緩存系統,Redis還可以限定數據占用的最大內存空間,在數據達到空間限制后可以按照一定的規則自動淘汰不需要的鍵。

除此之外,Redis的列表類型鍵可以實現隊列,并且支持阻塞式讀取,可以很容易實現一個高性能的優先隊列。同時在更高層面上,Redis還支持“發布 /訂閱”的消息模式,可以基于此構建聊天室等系統。

?

1.2.4簡單穩定

Redis提供一百多中命令,但是常用的就十幾種。

Redis提供了幾十種不同編程語言的客戶端庫,很好的封裝了Redis的命令,使得在程序中與Redis交互變得更容易。

Redis使用C語言開發,代碼量只有30000多行,易懂易修改,好維護。

Redis是開源的,穩定版本非常可靠。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540949.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c bitset get_Java BitSet get()方法與示例

c bitset getBitSet類的get()方法 (BitSet Class get() method) Syntax: 句法: public boolean get(int bit_in);public BitSet get(int st_in, int en_in);get() method is available in java.util package. get()方法在java.util包中可用。 get(int bit_in) meth…

有擾動的閉環傳遞函數 matlab,(d)閉環系統的誤差傳遞函數.PPT

(d)閉環系統的誤差傳遞函數3. 控制系統的方框圖模型 若已知控制系統的方框圖,使用MATLAB函數可實現方框圖轉換。 a).串聯 如圖所示G1(s)和G2(s)相串聯,在MATLAB中可用串聯函數series( )來求G1(s)G2(s),其調用格式為 [num,den]series(num1,den1,num2,den2) 其中: b)并…

CYQ.Data 輕量數據層之路 自定義MDataTable綁定續章(七)

本章起,將續章講解整框架當初的設計思路: 本章既為續章,說明我以前寫過,是的,以前我寫過內部整個MDataTable的構造,不過,當初匆匆寫完后, 最后一步的實現MDataTable綁定GridView/Dat…

php 文字超出畫布,input實現文字超出省略號(代碼示例)

本篇文章給大家帶來的內容是關于input實現文字超出省略號(代碼示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。input實現文字省略號功能普通元素實現文字超出寬度自動變成省略號非常簡單,給元素加個寬度&…

c++ stl stack_C ++ STL中的stack :: top()函數

c stl stackPrototype: 原型&#xff1a; stack<T> st; //declarationT st.top();Parameter: 參數&#xff1a; No parameter passedReturn type: T //data type 返回類型&#xff1a; T //數據類型 Header file to be included: 包含的頭文件&#xff1a; #include …

排序算法系列:插入排序算法

概述 直接插入排序&#xff08;Straight Insertion Sort&#xff09;的基本操作是將一個記錄插入到已經排好序的有序表中&#xff0c;從而得到一個新的、記錄數增1的有序表。 – 《大話數據結構》 版權說明 著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載…

php點擊復制按鈕到我的粘貼板,js實現點擊復制當前文本到剪貼板功能(兼容所有瀏覽器)...

最近做項目時&#xff0c;在網站框架搭建過程&#xff0c;有一個功能需要實現復制文本到剪貼板&#xff0c;相信這個功能很常用&#xff0c;但是對于不常寫JS代碼的我來說是一個比較大的挑戰&#xff0c;回想以前做過的一個站點&#xff0c;使用window.clipboardData實現復制到…

算法導論 算法_算法導論

算法導論 算法Algorithms are an integral part of the development world. Before starting coding of any software first an effective algorithm is designed to get desired outputs. In this article, we will understand what are algorithms, characteristics of algor…

[Phonegap+Sencha Touch] 移動開發77 Cordova Hot Code Push插件實現自己主動更新App的Web內容...

原文地址&#xff1a;http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址&#xff1a;https://github.com/nordnet/cordova-hot-code-push 以下是我對GitHub項目readme的翻譯 ——————————————————————————————————————…

java 如何重寫迭代器,如何用Java按需定制自己的迭代器

編寫自己的迭代器的流程是&#xff1a;首先實現Iterable接口&#xff0c;進而實現該接口中的Iterator iterator()方法&#xff0c;該方法返回接口Iterator&#xff0c;Iterator接口中封裝了next&#xff0c;hasnext&#xff0c;remove等方法。實現了Iterable接口的類能夠通過fo…

count函數里加函數_PHP count()函數與示例

count函數里加函數PHP count()函數 (PHP count() function) "count() function" is used to get the total number of elements of an array. “ count()函數”用于獲取數組元素的總數。 Syntax: 句法&#xff1a; count(array, [count_mode])Here, 這里&#xff0…

php整合支付寶,Thinkphp5.0整合支付寶在線下單

thinkphp5.0支付寶在線支付下單整個流程&#xff0c;包括創建訂單、支付成功回調更新訂單狀態、最終跳轉到商戶訂單詳情頁查看演示下載資源&#xff1a;17次 下載資源下載積分&#xff1a;998積分支付寶在線支付控制器代碼 public function alipay() {//發起支付寶支付$order_n…

python函數示例_PHP closeir()函數與示例

python函數示例PHP Closedir()函數 (PHP closedir() function) The full form of closedir is "Close Directory", the function closedir() is used to close an opened directory. Closedir的完整格式為“ Close Directory” &#xff0c; 函數closedir()用于關閉打…

java宋江,Java編程內功-數據結構與算法「單鏈表」,

package com.structures.linkedlist;public class SingleLinkedListDemo {public static void main(String[] args) {HeroNode heroNode1 new HeroNode(1, "宋江", "及時雨");HeroNode heroNode2 new HeroNode(2, "盧俊義", "玉麒麟"…

智能家居逐漸融入AI技術 向大眾市場擴張仍需時間

雖然智能家居變得越來越普遍&#xff0c;并且大眾認知度越來越高&#xff0c;但是在這一技術變得像智能手機一樣無處不在之前&#xff0c;OEM和服務提供商仍然有很長的路要走。 在2016年11月在硅谷舉行的智能家居峰會上&#xff0c;代表們聽到了來自整個價值鏈上的聲音&#xf…

python 示例_Python使用示例設置add()方法

python 示例設置add()方法 (Set add() Method) add() method is used to add an element to the set, the method accepts an element and adds the elements to this set. add()方法用于將元素添加到集合中&#xff0c;該方法接受元素并將元素添加到該集合中。 Note: If the …

php怎么引用表單元素,表單元素:最全的各種html表單元素獲取和使用方法總結...

表單是網頁與用戶的交互工具&#xff0c;由一個元素作為容器構成&#xff0c;封裝其他任何數量的表單控件&#xff0c;還有其他任何元素里可用的標簽&#xff0c;表單能夠包含、、、、、等表單控件元素。表單元素有哪些呢&#xff1f;它包含了如下的這些元素&#xff0c;輸入文…

數據中心部署氣流遏制系統需要考慮的十大要素

數據中心氣流遏制策略能夠大幅提高傳統數據中心制冷系統的可預測性和效率。事實上&#xff0c;綠色網格組織&#xff08;The Green Grid&#xff09;將氣流管理策略稱作“實施數據中心節能計劃的起點”。但是&#xff0c;大多數已有數據中心由于受各種條件的制約&#xff0c;只…

JAVA語言異常,Java語言中的異常

1、異常分類從產生源頭來看&#xff0c;Java語言中的異常可以分為兩類&#xff1a;JVM拋出的異常。比如&#xff1a;訪問null引用會引發NullPointerException&#xff1b;0作為除數&#xff0c;如9/0&#xff0c;JVM會拋出ArithmeticException&#xff1b;內存消耗完&#xff0…

使用Mybatis Generator結合Ant腳本快速自動生成Model、Mapper等文件的方法

新建generatorConfig.xml和build_mybatis.xml&#xff1a; jar下載 <dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency> <depe…