一,解決多臺服務器的session共享問題,
-
使用緩存數據庫,完全在內存中,速度快,數據結構簡單。
-
減少IO的讀操作。
二、NoSQL(Not Only SQL),不僅僅是sql,泛指非關係型數據庫。
-
NoSQL不依賴業務邏輯方式存儲,而以簡單的key—value模式存儲,因此大大的增加了數據庫的擴展能力
-
不遵循SQL標準
-
不支持ACID (事務)
-
遠超過SQL的性能
三、
NoSQL適用場景
-
對數據高併發的讀寫
-
海量數據的讀寫
-
對數據高可擴展性
不適用場景
-
需要事務支持
-
基於sql的結構化查詢存儲,處理複雜的關係,需要即席查詢
四、Redis的特點
-
數據都在內存中,支持持久化,主要用作備份恢復
-
除了支持簡單的key-value模式,還支持多種數據結構的存儲,比如list、set、hash、zset等
-
一般是作爲緩存數據庫輔助持久化的數據庫。
五、mongoDB 文檔型數據庫(雖然爲key-value模式,但是對value(尤其是json)提供了豐富的查詢功能)
六、Redis的應用場景
-
配合關係型數據庫做高速緩存。
-
高頻次,熱門訪問的數據,降低數據庫IO。
-
分佈式架構,做session共享
-
最新N個數據 通過List實現按自然時間排序的數據
-
排行榜,TOP N 利用ZSET(有序集合)
-
時效性的數據,比如手機驗證碼 Expire 過期
-
計數器 ,秒殺 原子性 自增方法INCR,DECR
-
去除大量數據中的重複數據 利用set集合
-
構建隊列 利用list集合
-
發佈訂閱消息系統 pub/sub模式。
七、Redis 的端口號默認爲6379,默認創建16個數據庫,類似數組下標從0開始,初始默認使用0號數據庫
使用 select <dbid> 來切換數據庫 如:select 8.
八、Redis 五大數據類型
string
set
key + list
hash
zset
-
key
-
keys * 查詢當前庫的所有鍵
-
exists <key> 判斷某個鍵是否存在
-
type <key> 判斷鍵的類型
-
del <key> 刪除某個鍵
-
expire <key> <seconds> 爲鍵值設置過期時間,單位爲秒
-
ttl <key> 查看還有多少秒過期, -1表示永不過期 -2表示已過期
-
dbsize 查看當前數據庫的key的數量
-
Flushdb 清空當前庫
-
Flushall 通殺全部庫
-
-
String
-
String 是Redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。
-
String 類型是二進制安全的,意味着Redis的String可以包含任何數據,比如JPG圖片或者序列化的對象。
-
String類型是Redis最基本的數據類型,一個Redis中文字符串最多可以是512M.
-
常用命令
-
-
-
-
get <key> 查詢對應鍵值
-
set <key> <value> 添加鍵值對
-
append <key> <value> 將給定的<value> 追加到原值的末尾
-
strlen <key> 獲取值的長度
-
setnx <key> <value> 只有在key不存在時設置key的值
-
incr <key> 將key中存儲的數字值增1 只能對數字值操作,如果爲空,新增值爲1
-
decr <key> 將key中存儲的數字值減1 只能對數字值操作,如果爲空,新增值爲-1
-
incrby/decrby <key> <步長> 將key中存儲的數字值增減,自定義步長。
-
mset <key1> <value1> <key2> <value> 同時設置一個或多個key-value對
-
mget <key1> <key2> <key3> 同時獲取一個或多個value
-
msetnx <key1> <value1> <key2> <value2> 同時設置一個或多個key-value對,當且僅當所有給定的key都不存在
-
getrange <key> <起始位置> <結束位置> 獲取值得範圍,類似java中的substring
-
setrange <key> <起始位置> <value> 用 <value> 覆寫<key> 所儲存的字符串值,從<起始位置>開始
-
setex key 過期時間 value 設置鍵值的同時設置過期時間 單位秒
-
getset key value 以新換舊 設置了新值的同時獲得舊值
-
-
-
開啓redis服務
-
redis-server /myredis/redis.conf 指定配置文件
-
redis-cli
-
-