redis簡介
redis(REmote DIctionary Server)是一個(gè)由Salvatore Sanfilippo寫key-value存儲系統(tǒng),它由C語言編寫、遵守BSD協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value類型的數(shù)據(jù)庫,并提供多種語言的API。和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在3.0版本推出集群模式。
特點(diǎn)、優(yōu)勢
k、v鍵值存儲以及數(shù)據(jù)結(jié)構(gòu)存儲(如列表、字典)
所有數(shù)據(jù)(包括數(shù)據(jù)的存儲)操作均在內(nèi)存中完成
單線程服務(wù)(這意味著會有較多的阻塞情況),采用epoll模型進(jìn)行請求響應(yīng),對比nginx
支持主從復(fù)制模式,更提供高可用主從復(fù)制模式(哨兵)
去中心化分布式集群
豐富的編程接口支持,如Python、Golang、Java、php、Ruby、Lua、Node.js?
功能豐富,除了支持多種數(shù)據(jù)結(jié)構(gòu)之外,還支持事務(wù)、發(fā)布/訂閱、消息隊(duì)列等功能
支持?jǐn)?shù)據(jù)持久化(AOF、RDB)
和MEMCACHE 區(qū)別
memcache是一個(gè)分布式的內(nèi)存對象緩存系統(tǒng),并不提供持久存儲功能,而redis擁有持久化功能
memcache數(shù)據(jù)存儲基于LRU(簡單說:最近、最少使用key會被剔除),而redis則可以永久保存(服務(wù)一直運(yùn)行情況下)
memcache是多線程的(這是memcache優(yōu)勢之一),也就意味著阻塞情況少,而redis是單線程的,阻塞情況相對較多
兩者性能上相差不大
memcache只支持簡單的k、v數(shù)據(jù)存儲,而redis支持多種數(shù)據(jù)格式存儲。
memcache是多線程、非阻塞IO復(fù)用網(wǎng)絡(luò)模型,而redis是單線程IO復(fù)用模型
redis安裝后可執(zhí)行文件的作用
redis-server#Redis服務(wù)器和Sentinel服務(wù)器,啟動時(shí)候可使用--sentinel指定為哨兵
redis-cli#Redis命令行客戶端?
redis-benchmark#Redis性能測試工具?
redis-check-aof#AOF文件修復(fù)工具?
redis-check-dump#RDB文件檢測工具?
redis-sentinel#Sentinel服務(wù)器,4.0版本已經(jīng)做了軟鏈接到redis-server