高效能的Key Value資料庫 Redis

2021-10-02 13:05:52 字數 4113 閱讀 4930

關係型資料庫與nosql資料庫並非對立而是互補的關係,即通常情況下使用關係型資料庫,在適合使用nosql的時候使用nosql資料庫,

讓nosql資料庫對關係型資料庫的不足進行彌補。

一般會將資料儲存在關係型資料庫中,在nosql資料庫中備份儲存關係型資料庫的資料

相關產品: tokyo cabinet/tyrant、redis、voldemort、berkeley db

典型應用: 內容快取,主要用於處理大量資料的高訪問負載。

資料模型: 一系列鍵值對

優勢: 快速查詢

劣勢: 儲存的資料缺少結構化

## 列儲存資料庫

相關產品:cassandra, hbase, riak

典型應用:分布式的檔案系統

資料模型:以列簇式儲存,將同一列資料存在一起

優勢:查詢速度快,可擴充套件性強,更容易進行分布式擴充套件

劣勢:功能相對侷限

相關產品:couchdb、mongodb

典型應用:web應用(與key-value類似,value是結構化的)

資料模型: 一系列鍵值對

優勢:資料結構要求不嚴格

劣勢: 查詢效能不高,而且缺乏統一的查詢語法

## 圖形(graph)資料庫

相關資料庫:neo4j、infogrid、infinite graph

典型應用:社交網路

資料模型:圖結構

優勢:利用圖結構相關演算法。

劣勢:需要對整個圖做計算才能得出結果,不容易做分布式的集群方案。

## 概念

刪除列表最左邊的元素,並將元素返回:lpop key刪除列表最右邊的元素,並將元素返回:rpop key

儲存:zadd key score value獲取:zrange key start end [withscores]刪除:zrem key value

使用命令列,重新啟動redis伺服器,並指定配置檔案名稱

取值

使用命令列,重新啟動redis伺服器,並指定配置檔案名稱

使用

// 獲取連線

jedis jedis =

newjedis

("localhost"

,6379);

// 操作

jedis.

set(

"username"

,"zhangsan");

// 關閉連線

jedis.

close()

;

@test

/* 操作字串string */

public

void

test02()

@test

/* 操作hash */

public

void

test03()

// 關閉連線

jedis.

close()

;}

@test

/* 操作list(允許重複) */

public

void

test04()

@test

/* 操作set(不允許重複) */

public

void

test05()

@test

/* 操作sortedset(不允許重複,有序) */

public

void

test06()

// 建立連線池配置物件

jedispoolconfig jedispoolconfig =

newjedispoolconfig()

;// 設定配置

jedispoolconfig.

setmaxtotal(50

);jedispoolconfig.

setmaxidle(10

);// 建立連線池物件,並傳入連線池配置物件

jedispool jedispool =

newjedispool

(jedispoolconfig,

"localhost"

,6379);

// 獲取連線

jedis resource = jedispool.

getresource()

;// 使用

resource.

set(

"name"

,"cat");

string s = resource.

get(

"name");

system.out.

println

(s);

// 關閉,歸還到連線池中

resource.

close()

;

設定 jedispoolutil工具類

public

class

jedispoolutil

catch

(ioexception e)

// 建立連線池配置檔案物件

jedispoolconfig config =

newjedispoolconfig()

;// 設定

config.

setmaxtotal

(integer.

parseint

(properties.

getproperty

("maxtotal"))

);config.

setmaxidle

(integer.

parseint

(properties.

getproperty

("maxidle"))

);// 初始化連線池物件

jedispool =

newjedispool

(config,properties.

getproperty

("host"

),integer.

parseint

(properties.

getproperty

("port"))

);}public

static jedis getjedis()

}

設定之後的操作,簡化了很多

public

class

jedispoolutil

catch

(ioexception e)

// 建立連線池配置檔案物件

jedispoolconfig config =

newjedispoolconfig()

;// 設定

config.

setmaxtotal

(integer.

parseint

(properties.

getproperty

("maxtotal"))

);config.

setmaxidle

(integer.

parseint

(properties.

getproperty

("maxidle"))

);// 初始化連線池物件

jedispool =

newjedispool

(config,properties.

getproperty

("host"

),integer.

parseint

(properties.

getproperty

("port"))

);}public

static jedis getjedis()

}

超高效能 key value 資料庫 Redis

redis是乙個高效能的key value資料庫。redis的出現,很大程度補償了memcached這類keyvalue儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了python,ruby,erlang,php客戶端,使用很方便。前幾天微博發生了一起大的系統故障,很多技術的朋...

Redis 超高效能的key value資料庫

說明 redis 是乙個高效能的key value資料庫。redis的出現,很大程度補償了memcached這類keyvalue儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了python,ruby,erlang,php客戶端,使用很方便。問題是這個專案還很新,可能還不足夠穩定...

Redis高效能資料庫

redis高效能資料庫 redis 本質上是乙個非關係型資料庫,採用鍵值的方式記錄資料,由於其獨特的執行模式和資料儲存模式,在作用上通常可以用來當做關係型資料庫的快取來使用,從而提高資料查詢效率 redis最大特點 執行速度很快 原因 1 redis使用c語言開發,和作業系統的相容性更強,執行效率更...