爲了解決高併發、高可擴展(集羣)、高可用(不能宕機)、大數據存儲問題而產生的數據庫解決方案,就是NoSql數據庫。html
NoSql :全稱 not only sql ,非關係型數據庫。能夠做爲關係型數據庫的一個很好的補充。不能替代。前端
相關產品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB。java
典型應用:內容緩存,主要用於處理大量數據的高訪問負載。linux
數據模型:一系列鍵值對c++
優點:快速查詢git
劣勢:存儲的數據缺乏結構化redis
相關產品:Cassandra, HBase, Riak算法
典型應用:分佈式的文件系統spring
數據模型:以列簇式存儲,將同一列數據存在一塊兒sql
優點:查找速度快,可擴展性強,更容易進行分佈式擴展
劣勢:功能相對侷限
相關產品:CouchDB、MongoDB
典型應用:Web應用(與Key-Value相似,Value是結構化的)
數據模型:一系列鍵值對
優點:數據結構要求不嚴格
劣勢:查詢性能不高,並且缺少統一的查詢語法
相關數據庫:Neo4J、InfoGrid、Infinite Graph
典型應用:社交網絡
數據模型:圖結構
優點:利用圖結構相關算法。
劣勢:須要對整個圖作計算才能得出結果,不容易作分佈式的集羣方案。
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫(nosql),應用在緩存。它經過提供多種鍵值數據類型來適應不一樣場景下的存儲需求,目前爲止Redis支持的鍵值數據類型有5種。
以下:
字符串類型 (String)
散列類型(hash)
列表類型(List)
集合類型(set)
有序集合類型(SortedSet)
緩存
分佈式集羣架構中的session分離
任務隊列(秒殺、搶購、12306等等)
應用排行榜(SortedSet)
網站訪問統計
數據過時處理(expire)
String:key-value
redis命令不區分大小寫,可是key區分的
redis中的數據都是字符串。
redis是單線程,(不適合存儲比較大的數據)
使用incr 命令,若是key 不存在,會自動建立key 並自動+1.
redis中全部的數據都是字符串。
set key value 設置值
get key 獲取值
incr key 加一
decr key 減一
Hash: key-field-value
至關於一個key 對應一個map (map中又是key- value),
應用歸類
hset key field value
hget key field
hincrby key field num
List
List是有順序可重複(數據結構中的:雙鏈表,隊列)
可做爲鏈表 ,從左添加元素 也能夠從右添加元素。
lpush list a b c d (從左添加元素)
rpush list 1 2 3 4 (從右邊添加元素)
lrange list 0 -1 (從0 到 -1 元素查看:也就表示查看全部)
lpop list (從左邊取,刪除)
rpop list (從右邊取,刪除)
Set
Set無順序,不能重複
sadd set1 a b c d d (向set1中添加元素) 元素不重複
smembers set1 (查詢元素)
srem set1 a (刪除元素)
SortedSet(zset)
有順序,不能重複
適合作排行榜 排序須要一個分數屬性
zadd zset1 9 a 8 c 10 d 1 e (添加元素 zadd key score member )
(ZRANGE key start stop [WITHSCORES])(查看全部元素:zrange key 0 -1 withscores)
若是要查看分數,加上withscores.
zrange zset1 0 -1 (從小到大)
zrevrange zset1 0 -1 (從大到小)
zincrby zset2 score member (對元素member 增長 score)
expire key second (設置key的過時時間)
ttl key (查看剩餘時間)(-2 表示不存在,-1 表示已被持久化,正數表示剩餘的時間)
persist key (清除過時時間,也便是持久化 持久化成功體提示 1 不成功0)。
del key: 刪除key
EXISTS key
若key存在,返回1,不然返回0。
select 0 表示:選擇0號數據庫。默認是0號數據庫
Redis 數據都放在內存中。若是機器掛掉,內存的數據就不存在。
須要作持久化,講內存中的數據保存在磁盤,下一次啓動的時候就能夠恢復數據到內存中。
按期將當前時刻的數據保存磁盤中,會產生一個dump.rdb文件
特色:會存在數據丟失,性能較好,數據備份。
redis 默認開啓RDB
以下圖:redis.conf中默認設置了保存規則及時間間隔
append only file (全部對redis的操做命令記錄在aof文件中),恢復數據,從新執行一遍便可。
特色:每秒保存,數據比較完整,耗費性能。
AOF開啓設置:
修改 redis.conf 文件 以下圖:
將appendonly 設置爲yes
同時開啓兩個持久化方案,則按照 AOF的持久化放案恢復數據。
默認是按照rdb的方式恢復數據,若是開啓了AOF,就是用AOF恢復數據,數據是存在於/usr/local/redis/bin/appendonly.aof文件中
[root@VM_0_13_centos ~]# docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 7039 [OK]
bitnami/redis Bitnami Redis Docker Image 114 [OK]
sameersbn/redis 75 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0 & 5.0 50
...
複製代碼
docker pull redis:須要的版本
複製代碼
等待下載完成後,咱們就能夠在本地鏡像列表裏查到REPOSITORY爲redis
[root@VM_0_13_centos ~]# docker images redis
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest a4fe14ff1981 6 weeks ago 95MB
複製代碼
docker run -d -p 6379:6379 --name 自定義名字 鏡像id
複製代碼
[root@VM_0_13_centos ~]#docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
43f7a65ec7f8 redis:3.2 "docker-entrypoint.sh" ... 0.0.0.0:6379->6379/tcp agitated_cray
複製代碼
使用redis鏡像執行redis-cli命令鏈接到剛啓動的容器
docker exec -it 43f7a65ec7f8 redis-cli
localhost:6379> info
# Server
redis_version:3.2.0
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f449541256e7d446
redis_mode:standalone
os:Linux 4.2.0-16-generic x86_64
arch_bits:64
multiplexing_api:epoll
複製代碼
官網地址:redis.io/
下載地址:download.redis.io/releases/re…
安裝redis須要c語言的編譯環境,若是沒有gcc須要在線安裝。以下命令:
yum -y install gcc-c++
複製代碼
若是有GCC環境,只需輸入命令:
[root@localhost ~]# gcc
出現 :gcc: no input files 表示安裝成功。
複製代碼
安裝步驟:
第一步:將redis的源碼包上傳到linux系統。
第二步:解壓縮redis的源碼包。
第三步:進行編譯。 cd到解壓後的目錄 輸入命令:make
第四步:進行安裝。 輸入命令:make install PREFIX=/usr/local/redis
PREFIX 必須是大寫的。

第五步:檢查目錄是否存在。
在/usr/local/redis 下 有bin 說明安裝成功。
前端啓動
[root@localhost bin]# ./redis-server
後臺啓動:
第一步:把/root/redis-3.0.0/redis.conf複製到/usr/local/redis/bin目錄下
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis/bin/
第二步:使用vim命令修改redis.conf配置文件 將daemonize no修改成daemonize yes
第三步:輸入啓動命令
[root@localhost bin]# ./redis-server redis.conf
第四步:檢查redis進程:
[root@localhost bin]# ps -ef|grep redis
前端啓動,不能更換終端,影響下一步操做。然後臺啓動,只在進程中悄悄啓動。
推薦使用後臺啓動。
使用Redis-cli創建鏈接:
[root@localhost bin]# ./redis-cli
默認鏈接localhost運行在6379端口的redis服務。
[root@localhost bin]# ./redis-cli -h 192.168.25.153 -p 6379
-h:鏈接的服務器的地址
-p:服務的端口號
使用redis的桌面程序創建鏈接
先安裝:
第一種:
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> quit
第二種:
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> exit
第三種:CTR+C
[root@localhost bin]#
第一種:經過鏈接上客戶端進行關閉,使用shutdown 命令。
或者:cd 到redis的bin 目錄 再執行如下:
[root@localhost bin]# ./redis-cli shutdown
第二種:使用 kill 命令。
找到對應的redis的進程id 而後使用命令:(pid爲進程id)
kill -9 pid
說明:這篇文章總結了redis比較基礎的知識點,後期文章會經過springboot整合redis做爲緩存中間件使用以及集羣。集羣后期文章再總結