什么是Redis?
Redis,英文名叫(REmote DIctionary Server遠(yuǎn)程字典服務(wù))是一個(gè)開(kāi)源的使用ANSI?C語(yǔ)言編寫(xiě)、支持網(wǎng)絡(luò)拖吼、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù)这吻,并提供多種語(yǔ)言的API吊档。
Redis相比其他鍵值數(shù)據(jù)存儲(chǔ)系統(tǒng)有什么特點(diǎn)?
1.Redis將其數(shù)據(jù)庫(kù)完全保存在內(nèi)存中唾糯,僅使用磁盤(pán)進(jìn)行持久化怠硼。
2.與其它鍵值數(shù)據(jù)存儲(chǔ)相比,Redis有一組相對(duì)豐富的數(shù)據(jù)類(lèi)型(包括string(字符串)移怯、list(鏈表)香璃、set(集合)、zset(sorted set --有序集合)和hash(哈希類(lèi)型)舟误。
3.Redis可以將數(shù)據(jù)復(fù)制到任意數(shù)量的從機(jī)中葡秒。
Redis自己的優(yōu)點(diǎn)
異常快- Redis非常快眯牧,每秒可執(zhí)行大約110000次的設(shè)置(SET)操作蹋岩,每秒大約可執(zhí)行81000次的讀取/獲取(GET)操作。
支持豐富的數(shù)據(jù)類(lèi)型- Redis支持開(kāi)發(fā)人員常用的大多數(shù)數(shù)據(jù)類(lèi)型学少,例如列表剪个,集合,排序集和散列等等版确。這使得Redis很容易被用來(lái)解決各種問(wèn)題扣囊,因?yàn)槲覀冎滥男﹩?wèn)題可以更好使用地哪些數(shù)據(jù)類(lèi)型來(lái)處理解決。
操作具有原子性- 所有Redis操作都是原子操作阀坏,這確保如果兩個(gè)客戶(hù)端并發(fā)訪問(wèn)如暖,Redis服務(wù)器能接收更新的值。
多實(shí)用工具- Redis是一個(gè)多實(shí)用工具忌堂,可用于多種用例,如:緩存酗洒,消息隊(duì)列(Redis本地支持發(fā)布/訂閱)士修,應(yīng)用程序中的任何短期數(shù)據(jù),例如樱衷,web應(yīng)用程序中的會(huì)話(huà)棋嘲,網(wǎng)頁(yè)命中計(jì)數(shù)等。
在Ubuntu上安裝Redis環(huán)境
打開(kāi)Ubuntu終端輸入以下命令
啟動(dòng)redis
檢查redis是否在工作
在上面的提示中矩桂,127.0.0.1是計(jì)算機(jī)的IP地址沸移,6379是Redis服務(wù)器端口號(hào),鍵入ping命令
出現(xiàn)PONG表明Redis安裝成功
接下來(lái)你可以選擇安裝Redis桌面管理器(提供用于管理Redis的鍵和數(shù)據(jù)的UI)侄榴,Redis桌面管理軟件雹锣,不過(guò)只有Windows版本是免費(fèi)的,Ubuntu和Mac OS X是收費(fèi)的癞蚕。
Redis配置
在Redis中蕊爵,在Redis的根目錄下有一個(gè)配置文件(redis.conf)。當(dāng)然您可以通過(guò)RedisCONFIG命令獲取和設(shè)置所有的Redis配置桦山。
語(yǔ)法
以下是Redis中的CONFIG命令的基本語(yǔ)法攒射。
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
示例
編輯配置
1.直接編輯`redis.conf`文件
2.通過(guò)`CONFIG SET`命令更新配置
語(yǔ)法
以下是CONFIG SET命令的基本語(yǔ)法。
`redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE`
示例
Redis數(shù)據(jù)類(lèi)型
Redis支持5種數(shù)據(jù)類(lèi)型恒水。
Redis中的字符串是一個(gè)字節(jié)序列会放。Redis中的字符串是二進(jìn)制安全的,這意味著它們的長(zhǎng)度不由任何特殊的終止字符決定钉凌。因此咧最,可以在一個(gè)字符串中存儲(chǔ)高達(dá)512兆字節(jié)的任何內(nèi)容
注意:Redis命令不區(qū)分大小寫(xiě),所以set和SET命令是一樣的
散列/哈希
Redis散列/哈希(Hashes)是鍵值對(duì)的集合。Redis散列/哈希是字符串字段和字符串值之間的映射窗市。因此先慷,它們用于表示對(duì)象。
示例
散列/哈希數(shù)據(jù)類(lèi)型用于存儲(chǔ)包含用戶(hù)的基本信息的用戶(hù)對(duì)象咨察。這里HMSET论熙,HGETALL是Redis的命令,用于獲取鍵的值摄狱,而mykey是鍵的名稱(chēng)脓诡。
每個(gè)散列/哈希可以存儲(chǔ)多達(dá)2^32 - 1個(gè)健-值對(duì)(超過(guò)40億個(gè))媒役。
列表
Redis列表只是字符串列表祝谚,按插入順序排序。您可以向Redis列表的頭部或尾部添加元素酣衷。
列表的最大長(zhǎng)度為2^32 - 1個(gè)元素(4294967295交惯,每個(gè)列表可容納超過(guò)40億個(gè)元素)。
lpush是redis列表插入命令穿仪,mylist是我列表的名稱(chēng)席爽,first...是我插入的字符串
lrange是redis列表查詢(xún)命令,按照下標(biāo)0-5取值啊片,list可以重復(fù)字符串
集合
Redis集合是字符串的無(wú)序集合只锻。在Redis中,您可以添加紫谷,刪除和測(cè)試成員存在的時(shí)間O(1)復(fù)雜性齐饮。
一個(gè)集合中的最大成員數(shù)量為2^32 - 1(即4294967295,每個(gè)集合中元素?cái)?shù)量可達(dá)40億個(gè))個(gè)笤昨。
注意:redis被添加了兩次祖驱,但是集合元素是唯一的,所以只有一個(gè)redis
可排序集合
Redis可排序集合類(lèi)似于Redis集合咬腋,是不重復(fù)的字符集合羹膳。 不同之處在于,排序集合的每個(gè)成員都與分?jǐn)?shù)相關(guān)聯(lián)根竿,這個(gè)分?jǐn)?shù)用于按最小分?jǐn)?shù)到最大分?jǐn)?shù)來(lái)排序的排序集合陵像。雖然成員是唯一的,但分?jǐn)?shù)值可以重復(fù)寇壳。
redis的zset也是元素唯一的集合醒颖,不過(guò)有一個(gè)score來(lái)關(guān)聯(lián)元素,進(jìn)行從小到大的排序壳炎,而且后插入的sqlite的score覆蓋了前一個(gè)sqlite的score泞歉,所以排在mysql后面