1、NoSQL NoSQL( Not Only SQL
),意即不只僅是SQL, 泛指非關係型的數據庫。Nosql這個技術門類,早期就有人提出,發展至2009年趨勢愈加高漲。java
隨着互聯網網站的興起,傳統的關係數據庫在應付動態網站,特別是超大規模和高併發的純動態網站已經顯得力不從心,暴露了不少難以克服的問題。如商城網站中對商品數據頻繁查詢
、對熱搜商品的排行統計
、訂單超時問題
、以及微信朋友圈(音頻,視頻)存儲等相關使用傳統的關係型數據庫實現就顯得很是複雜,雖然能實現相應功能可是在性能上卻不是那麼樂觀。nosql這個技術門類的出現,更好的解決了這些問題,它告訴了世界不只僅是sql。redis
1.3.1.一、說明sql
這一類數據庫主要會使用到一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。shell
1.3.1.二、特色數據庫
1.3.1.三、相關產品vim
1.3.2.一、說明服務器
這部分數據庫一般是用來應對分佈式存儲的海量數據。微信
1.3.2.二、特色併發
鍵仍然存在,可是它們的特色是指向了多個列。這些列是由列家族來安排的。app
1.3.2.三、相關產品
1.3.3.一、說明
文檔型數據庫的靈感是來自於Lotus Notes辦公軟件的,並且它同第一種鍵值存儲相相似該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,好比JSON。文檔型數據庫能夠看做是鍵值數據庫的升級版,容許之間嵌套鍵值。並且文檔型數據庫比鍵值數據庫的查詢效率更高。
1.3.3.二、特色
以文檔形式存儲。
1.3.3.三、相關產品
1.3.4.一、特色
圖形結構的數據庫同其餘行列以及剛性結構的SQL數據庫不一樣,它是使用靈活的圖形模型,而且可以擴展到多個服務器上。
1.3.4.二、相關產品
數據模型比較簡單
須要靈活性更強的IT系統
對數據庫性能要求較高
不須要高度的數據一致性
redis是一個內存型的數據庫
Redis是一個高性能key/value內存型數據庫。
Redis支持豐富的數據類型 。
Redis支持持久化 。
Redis單線程,單進程。
tar -zxvf redis-4.0.10.tar.gz
yum install -y gcc
make MALLOC=libc
make install PREFIX=/usr/redis
./redis-server
一旦出現這個頁面就表明Redis啓動了!
./redis-cli –p 6379 (終端不展現中文) /redis-cli –p 6379 --raw (終端展現中文)
redis啓動服務的 細節
若是直接使用./redis-server
方式啓動使用的是redis-server
這個shell設置,咱們在啓動的時候,要先啓動服務器 ./redis-server
而後克隆窗口(不能夠按ctrl+c暫停),在新窗口中啓動客戶端 ./redis-cli –p 6379
如何在啓動redis時指定配置文件啓動
默認在reidis安裝完成以後在安裝目錄沒有任何配置文件,須要在源碼目錄中複製redis.conf配置文件到安裝目錄,具體操做:
cp redis.conf /usr/redis
cd /usr/redis ls
./redis-server ../redis.conf
redis中庫的概念
庫是database 用來存放數據的一個基本單元,一個庫能夠存放key-value鍵值對,redis中每個庫都有一個惟一名稱(編號),從0開始,默認庫的個數是16個庫,庫的編號0-15,默認使用的是0號庫。 咱們可使用命令來切換庫,每一個庫是相互隔離的,每一個庫均可以有相同或者不一樣的key和value,互不影響。
# 切換庫 select dbid(庫編號) # 清空當前庫 flushDB # 清空全部庫 flushAll
開啓Redis遠程鏈接
vim redis.conf
# 容許一切客戶端訪問 bing 0.0.0.0
./redis-server ../redis.conf
# (切記前面有一個空格) hutdown
Rsdis默認配置器動Redis服務後,默認會存在16個庫,編號從0-15,可使用select 庫的編號
,來選擇一個Rsdis的庫。
seelect 庫編號
# 清空當前的庫 FLUSHDB # 清空所有的庫 FLUSHALL
./redis-cli -p 7000 --raw
3.2.1.一、語法
DEL key [key ...]
3.2.1.二、做用
刪除給定的一個或多個key 。不存在的key 會被忽略。
3.2.1.三、返回值
被刪除key的數量。
3.2.2.一、語法
EXISTS key
3.2.2.二、做用
檢查給定key是否存在。
3.2.2.三、返回值
若key 存在,返回1 ,不然返回0。
3.2.3.一、語法
EXPIRE key seconds
3.2.3.二、做用
爲給定key設置生存時間,當key 過時時(生存時間爲0 ),它會被自動刪除。他的時間複雜度爲O(1)。
3.2.3.三、返回值
設置成功返回1。
3.2.4.一、語法
PEXPIRE key milliseconds
3.2.4.二、做用
這個命令和EXPIRE 命令的做用相似,可是它以毫秒爲單位設置key 的生存時間,而不像EXPIRE 命令那樣,以秒爲單位。他的時間複雜度也是 O(1)
3.2.4.三、返回值
設置成功,返回1 key 不存在或設置失敗,返回0
3.2.5.一、語法
KEYS pattern
他的pattern是一種通配符,能夠進行匹配:
"\"
隔開。3.2.5.二、做用
查找全部符合給定模式pattern 的key 。
3.2.5.三、返回值
符合給定模式的key列表。
3.2.6.一、語法
MOVE key db
3.2.6.二、做用
將當前數據庫的key 移動到給定的數據庫db 當中。
3.2.6.三、返回值
移動成功返回1 ,失敗則返回0
3.2.7.一、語法
TTL key
3.2.7.二、做用
以秒爲單位,返回給定key 的剩餘生存時間(TTL, time to live)。
3.2.7.三、返回值
3.2.8.一、語法
PTTL key
3.2.8.二、做用
這個命令相似於TTL 命令,但它以毫秒爲單位返回key 的剩餘生存時間,而不是像TTL 命令那樣,以秒爲單位。
3.2.8.三、返回值
3.2.9.一、語法
RANDOMKEY
3.2.9.二、做用
從當前數據庫中隨機返回(不刪除) 一個key 。
3.2.9.三、返回值
當數據庫不爲空時,返回一個key 。當數據庫爲空時,返回nil 。
3.2.10.一、語法
RENAME key newkey
3.2.10.二、做用
將key 更名爲newkey 。當key 和newkey 相同,或者key 不存在時,返回一個錯誤。當newkey 已經存在時,RENAME 命令將覆蓋舊值。
3.2.10.三、返回值
更名成功時提示OK ,失敗時候返回一個錯誤。
3.2.11.一、語法
TYPE key
3.2.11.二、做用
返回key 所儲存的值的類型。
3.2.11.三、返回值
命令 | 說明 |
---|---|
set | 設置一個key/value |
get | 根據key得到對應的value |
mset | 一次設置多個key value |
mget | 一次得到多個key的value |
getset | 得到原始key的值,同時設置新值 |
strlen | 得到對應key存儲value的長度 |
append | 爲對應key的value追加內容 |
getrange | 截取value的內容,-1能夠表明末尾(索引0開始) |
setex | 設置一個key存活的有效期(秒) |
psetex | 設置一個key存活的有效期(毫秒) |
setnx | 存在不作任何操做,不存在添加 |
msetnx | 能夠同時設置多個key,原子操做,只要有一個存在都不保存 |
decr | 進行數值類型的-1操做 |
decrby | 根據提供的數據進行減法操做 |
Incr | 進行數值類型的+1操做 |
incrby | 根據提供的數據進行加法操做 |
Incrbyfloat | 根據提供的數據加入浮點數 |
Redis中的List類型至關於java中list 集合,他的特色是元素有序且能夠重複
命令 | 說明 |
---|---|
lpush | 將某個值加入到一個key列表頭部(從左添加) |
lpushx | 同lpush,可是必需要保證這個key存在 |
rpush | 將某個值加入到一個key列表末尾(從右邊開始放元素) |
rpushx | 同rpush,可是必需要保證這個key存在 |
lpop | 返回和移除列表左邊的第一個元素,而且返回 |
rpop | 返回和移除列表右邊的第一個元素,而且返回 |
lrange | 獲取某一個下標區間內的元素(遍歷,默認從0開始,最後的能夠用-1) |
llen | 獲取列表元素個數 |
lset | 設置某一個指定索引的值(索引必須存在) |
lindex | 獲取某一個指定索引位置的元素 |
lrem | 刪除重複元素 lerm lists 3 zhangsan(刪除lists集合中3個zhangsan) |
ltrim | 保留列表中特定區間內的元素 |
linsert | 在某一個元素以前,以後插入新元素 |
命令 | 說明 |
---|---|
sadd | 爲集合添加元素 |
smembers | 顯示集合中全部元素,其實是無序 |
scard | 返回集合中元素的個數 |
spop | 隨機返回一個元素 並將元素在集合中刪除 |
smove | 從一個集合中向另外一個集合移動元素 ,必須是同一種類型 |
srem | 從集合中刪除一個元素 |
sismember | 判斷一個集合中是否含有這個元素 |
srandmember | 隨機返回元素 |
sdiff | 去掉第一個集合中其它集合含有的相同元素 |
sinter | 求交集 |
sunion | 求和集 |
他是一個可排序的set集合 且不可重複 ,又稱做sortSet 。
命令 | 說明 |
---|---|
zadd | 添加一個有序集合元素 |
zcard | 返回集合的元素個數 |
zrange 升序 zrevrange 降序 | 返回一個範圍內的元素 |
zrangebyscore | 按照分數查找一個範圍內的元素 |
zrank | 返回排名 |
zrevrank | 倒序排名 |
zscore | 顯示某一個元素的分數 |
zrem | 移除某一個元素 |
zincrby | 給某個特定元素加分 |
value中放一個map結構,存在key和value,key是無序的
命令 | 說明 |
---|---|
hset | 設置一個key/value對 |
hget | 得到一個key對應的value |
hgetall | 得到全部的key/value對 |
hdel | 刪除某一個key/value對 |
hexists | 判斷一個key是否存在 |
hkeys | 得到全部的key |
hvals | 得到全部的value |
hmset | 設置多個key/value |
hmget | 得到多個key的value |
hsetnx | 設置一個不存在的key的值 |
hincrby | 爲value進行加法運算(實現自增) |
hincrbyfloat | 爲value加入浮點值(最多保留17位) |