Redis是一個(gè)開(kāi)源的,基于內存的結構化數據存儲媒介,可以作為數據庫、緩存服務(wù)或消息服務(wù)使用。
Redis支持多種數據結構,包括字符串、哈希表、鏈表、集合、有序集合、位圖、Hyperloglogs等。
Redis具備LRU淘汰、事務(wù)實(shí)現、以及不同級別的硬盤(pán)持久化等能力,并且支持副本集和通過(guò)Redis Sentinel實(shí)現的高可用方案,同時(shí)還支持通過(guò)Redis Cluster實(shí)現的數據自動(dòng)分片能力。Redis的主要功能都基于單線(xiàn)程模型實(shí)現,也就是說(shuō)Redis使用一個(gè)線(xiàn)程來(lái)服務(wù)所有的客戶(hù)端請求,同時(shí)Redis采用了非阻塞式IO,并精細地優(yōu)化各種命令的算法時(shí)間復雜度。
Redis 作為一個(gè)非常成功的數據庫,提供了非常豐富的數據類(lèi)型和命令,使用這些,我們可以輕易而高效地完成很多緩存操作,可是總有一些比較特殊問(wèn)題或需求需要解決,這時(shí)候可能就需要我們自己定制自己的 Redis 數據結構和命令。
Redis是線(xiàn)程安全的(因為只有一個(gè)線(xiàn)程),其所有操作都是原子的,不會(huì )因并發(fā)產(chǎn)生數據異常。我們都知道 Redis 是單線(xiàn)程的,可是它怎么會(huì )有線(xiàn)程安全問(wèn)題呢?
Redis 的線(xiàn)程安全問(wèn)題的產(chǎn)生,并不是來(lái)自于 Redis 服務(wù)器內部。Redis 作為數據服務(wù)器,就相當于多個(gè)客戶(hù)端的共享內存,多個(gè)客戶(hù)端就相當于同一進(jìn)程下的多個(gè)線(xiàn)程,如果多個(gè)客戶(hù)端之間沒(méi)有良好的數據同步策略,就會(huì )產(chǎn)生類(lèi)似線(xiàn)程安全的問(wèn)題。
典型場(chǎng)景是:
?
Redis 內存儲了一個(gè)用戶(hù)的狀態(tài):user5277=idle;
?
客戶(hù)端連接 A 讀取了用戶(hù)狀態(tài),獲取到用戶(hù)的空閑狀態(tài) status = get("user5277");
?
客戶(hù)端連接 B 也同樣讀取了用戶(hù)狀態(tài);
?
客戶(hù)端連接 A 給用戶(hù)安排了一個(gè)任務(wù),并將 Redis 內用戶(hù)狀態(tài)置為忙碌 set("user5277", "busy");
?
客戶(hù)端連接 B 同樣設置用戶(hù)為忙碌狀態(tài)。
?
可是此時(shí)用戶(hù)卻被同時(shí)分配了兩個(gè)任務(wù)。
導致這個(gè)問(wèn)題的原因就是雖然 Redis 是單線(xiàn)程的,能保證命令的序列化,但由于其執行效率很高,多個(gè)客戶(hù)端的命令之間不做好請求同步,同樣會(huì )造成命令的順序錯亂。
當然這個(gè)問(wèn)題也很好解決,給用戶(hù)狀態(tài)加鎖就行了,使同一時(shí)間內只能有一個(gè)客戶(hù)端操作用戶(hù)狀態(tài)。不過(guò)加鎖我們就需要考慮鎖粒度、死鎖等問(wèn)題了,無(wú)疑添加了程序的復雜性,不利于維護。
云數據庫Redis專(zhuān)有網(wǎng)絡(luò )VPC在TCP層直接進(jìn)行網(wǎng)絡(luò )隔離保護;內存加硬盤(pán)的混合存儲方式,在提供高速數據讀寫(xiě)能力的同時(shí)滿(mǎn)足數據持久化需求,支持單節點(diǎn)架構、主從架構、分布式集群架構,滿(mǎn)足純緩存場(chǎng)景、讀寫(xiě)分離、隨時(shí)需要擴展數據庫性能等不同的業(yè)務(wù)需求,可根據業(yè)務(wù)需求對集群進(jìn)行升配、擴容等操作,集群版支持增加主節點(diǎn),實(shí)現云上資源彈性擴展:http://wap.friendlycc.com.cn/
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站