nosql 通常是以key-value形式儲存, 不支援sql語句, 沒有表結構
高併發讀寫的效能大資料量的擴充套件(分布式儲存) 配置簡單 靈活、高效的操作與資料模型 低廉的成本
不足之處:
沒有統一的標準 沒有正式的官方支援 各種產品還不算成熟
由義大利人antirez(salvatore sanfilippo)開發的一款記憶體高速快取資料庫
(2)該軟體使用
c語言編寫,它的資料模型為
key-value
(3)它支援儲存的value型別很多,包括string(字串)、hash(雜湊
)、list(鍊錶)、set(集合)、zset(有序集合)。
(4)為了保證效率資料都是快取在記憶體中,它也可以周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案。
1)高速讀取資料(in-memory)
2)減輕資料庫負擔
3)有集合計算功能(優於普通資料庫和同類別產品)
4)多種資料結構支援
1)[sort set]排行榜應用,取top n操作,例如sina微博熱門話題
2)[list]獲得最新n個資料 或 某個分類的最新資料
3)計數器應用
4)[set]sns(social network site)獲得共同好友
5)[set]防攻擊系統(ip判斷)等等
4、與memcache比較說明
redis與
memcache
比較(1)資料型別
:memcache
支援的資料型別就是字串,
redis
支援的資料型別有字串,雜湊,鍊錶,集合,有序集合。
(2)持久化:
memcache
資料是儲存到記憶體裡面,一旦斷電,或重啟,則資料丟失。
redis
資料也是儲存到記憶體裡面的,但是可以持久化,週期性的把資料給儲存到硬碟裡面,導致重啟,或斷電不會丟失資料。
(3)資料量:
memcahce
乙個鍵儲存的資料最大是
1m,而
redis
的乙個鍵值,儲存的最大資料量是
1g的資料量。
實現原理
:使用redis鍊錶中佇列,進行
pop操作,
因為pop操作是原子的,即使有很多使用者同時到達,也是依次執行,推薦使用
。
第一步:先將商品庫存如佇列
<?php
$store=1000;
$redis=new redis();
$result=$redis->connect('127.0.0.1',6379);
$goods_number = 100;
for($i=0;$i<$goods_number;$i++){
$redis->lpush('goods_store',1);
echo $redis->llen('goods_store');
第二步:搶購開始,設定庫存的快取週期
$redis->settimeout(『goods_store』,60);
第三步:客戶端執行下單操作,下單前判斷redis佇列庫存量
$redis=new redis();
$redis->connect('127.0.0.1',6379);
$count=$redis->lpop('goods_store');
if(!$count){
echo 『搶購失敗
』;return;
//跳轉到下單頁面,完成下單操作
redis非關係型資料庫
概述 redis是一種nosql資料庫,他的資料是儲存在記憶體中,同時redis可以定時把記憶體資料同步到磁碟,即可以將資料持久化,並且他比memcached支援更多的資料結構 string,list列表 佇列和棧 set 集合 sorted set 有序集合 hash hash表 相關參考文件 r...
Redis非關係型資料庫
一 redis的事務管理 redis的事務管理是基於樂觀鎖實現的,主要是為了保證事務的一致性 一旦開啟事務後,redis的所有命令都會進入到乙個queue,只有commit,才會依次執行佇列中的命令 事務必須在乙個連線 connection 中執行,通常spring中會使用sessioncallba...
REDIS非關係型資料庫
redis資料以 key 和value進行儲存 非關係行資料庫 1.用於記憶體中快速讀寫和快取資料value value資料型別 1.string 2.hash 相當於hashmap,裡面可以繼續存放key 和value 3.list 可以有重複元素 4.set 不可以重複元素 5.sortedse...