柚子快報激活碼778899分享:redis非關(guān)系型數(shù)據(jù)庫
1.什么叫NOSQL
nosql:不僅僅是sql,是非關(guān)系型數(shù)據(jù)庫的概述
?2.NOSQL和RDBMS的區(qū)別
RDBMS: ????????高度組織化結(jié)構(gòu)化數(shù)據(jù)。 ????????????????user---userid username age sex ..... ????????結(jié)構(gòu)化查詢語言(SQL) ????????數(shù)據(jù)和關(guān)系都存儲在單獨的表中。 ????????數(shù)據(jù)定義語言DDL,數(shù)據(jù)操縱語言DML, ????????嚴格的一致性.事務 ????????基于事務----mysql事務: ACID 事務并發(fā)帶來的問題: 事務的隔離級別
NoSOL: ????????代表著不僅僅是SQL ????????沒有聲明性查詢語言 ????????鍵-值對存儲。 ????????非結(jié)構(gòu)化和不可預知的數(shù)據(jù) 字符串 對象 隊列 集合 ????????高性能,高可用性和可伸縮性。適合搭建集群。mysql搭建主從模式
1. 數(shù)據(jù)模型:
NoSQL:NoSQL數(shù)據(jù)庫采用非關(guān)系型數(shù)據(jù)模型,例如鍵值存儲、文檔數(shù)據(jù)庫、列族數(shù)據(jù)庫、圖數(shù)據(jù)庫等。這些數(shù)據(jù)庫不需要遵循固定的表格結(jié)構(gòu),可以根據(jù)需要動態(tài)定義數(shù)據(jù)模式。 RDBMS:RDBMS采用關(guān)系型數(shù)據(jù)模型,數(shù)據(jù)以表格形式組織
2. 數(shù)據(jù)關(guān)系:
NoSQL:NoSQL數(shù)據(jù)庫通常不支持表之間的復雜關(guān)系,數(shù)據(jù)之間的關(guān)聯(lián)由應用程序處理。 RDBMS:RDBMS支持復雜的數(shù)據(jù)關(guān)系,通過外鍵等機制實現(xiàn)表之間的關(guān)聯(lián)。
3. 可擴展性:
NoSQL:NoSQL數(shù)據(jù)庫通常具有良好的可擴展性,可以輕松地擴展到大規(guī)模的分布式系統(tǒng),適用于處理海量數(shù)據(jù)和高并發(fā)請求。 RDBMS:傳統(tǒng)的RDBMS在處理大規(guī)模數(shù)據(jù)和高并發(fā)時可能面臨挑戰(zhàn),雖然一些RDBMS已經(jīng)增加了分布式擴展功能,但通常不如NoSQL數(shù)據(jù)庫靈活。
4. 數(shù)據(jù)一致性:
NoSQL:一些NoSQL數(shù)據(jù)庫支持最終一致性,即數(shù)據(jù)在一段時間內(nèi)可能會出現(xiàn)不一致的狀態(tài),但最終會達到一致。 RDBMS:RDBMS通常支持強一致性,即保證數(shù)據(jù)的一致性和完整性。
5. 查詢語言:
NoSQL:NoSQL數(shù)據(jù)庫的查詢語言通常比較簡單,可能不支持復雜的查詢操作。 RDBMS:RDBMS使用SQL進行查詢和操作,可以執(zhí)行復雜的數(shù)據(jù)查詢和處理。
3.常見的NOSQL產(chǎn)品
1.Redis
2.MongoDb? ? ? ? 前端
3.Hbase? ? ? ? ? ? ? 數(shù)據(jù)庫
4.什么是Redis
Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI?C語言編寫、支持網(wǎng)絡、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫,并提供多種語言的API。
?內(nèi)存存儲的數(shù)據(jù)結(jié)構(gòu)服務器,可用作數(shù)據(jù)庫、緩存、引流擎和消息隊列代理的開源內(nèi)存數(shù)據(jù)存儲
注意:redis的計算都是基于內(nèi)存,redis的存儲可以存在磁盤上
特點:
1.redis的計算都是基于內(nèi)存,Redis讀取的速度快,
是110000次/s,寫的速度是81000次/s 2.原子。Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全并后的原子性執(zhí)行。 3.支持多種數(shù)據(jù)結(jié)構(gòu):字符串、哈希結(jié)構(gòu)、列表、集合、可排序集合和基數(shù) 4.持久化--磁盤,redis的存儲可以存在磁盤上 5.主從復制(集群)
Redis 可以在如緩存、消息傳遞隊列中使用
5.安裝
安裝c語言環(huán)境
下載解壓
進入安裝目錄? make? | make install??
啟動
拷貝cp redis.conf redis.conf.blank,防止改錯
啟動redis-server redis.conf
redis-server +完整路徑
連接客戶端
redis-cli? ?默認連接本地的redis服務
redis-cli -h 192.168.64.129 -p 6379
-h :連接redis服務器的ip
-p? ?:連接redis服務器的端口號
6.目錄
?redis.conf? ? ? ? redis配置文件
sentinel.conf? ? ? ? ?redis集群哨兵的配置文件
(1)設置redis啟動時后臺啟動
是否啟動
查看進程? ? ? ? 客戶端連接
(2)設置遠程連接
保護策略設置為no
7.操作
默認redis有16個庫
select n:選擇庫
flushdb:清空當前所在庫
flushall:清空所有的庫
keys * 查看所有key
del? key....刪除
exists key 判斷key是否存在
expire key seconds秒值? ?設置key過期時間
ttl key查看key的剩余時間
redis支持多種數(shù)據(jù)結(jié)構(gòu):
常用:字符串、哈希、列表、集合、可排序集合
7.1對字符串的支持
它的value類型為字符串類型,單個value大小最大512M
set key value:存儲字符串類型的value值,每次只能存儲一個
get key :獲取指定key的value
setex key seconds value :存儲key-value時為其指定過期時間?seconds (以秒為單位)
setnx key value:存儲的key如果存在,則不存入,如果不存在則存入
mset key value key value...存儲多個
mget key1 key2 ...查詢多個
修改:
? ? ? ? 設置key的過期時間expire key seconds
incr key :對指定的key進行累加? ?要求value是數(shù)字字符串? ? ?點贊
incrby key num:指定累加的值
decr key :對指定的key進行累減? ? ? 取消點贊
7.2hash散列表類型的命令
value是hashMap類型,適合存放對象類型
hset key filed value 將哈希表 key 中的字段 field 的值設為 value 。
hget key filed:獲取指定key對應的filed
hexists key filed:判斷指定的filed是否存在
hkeys key:獲取指定key的所有field
hvals key:獲取指定key的所有value
hgetall key :獲取指定key對應的所有hash
刪除:hdel key filed? 刪除key里面的filed
7.3list列表類型的命令
value是一個列表值,元素可重復,有序
lpush k1 v1 v2 v3...將一個或多個值插入到列表頭部? ? ? ?
lindex key index? :根據(jù)下標獲取
lrange key start end?獲取指定key對應返回的列表元素范
lset key index?value通過索引設置列表元素的值
lrem? key? count value :刪除指定元素的個數(shù)
count > 0 : 從表頭開始向表尾搜索,移除與 VALUE 相等的元素,數(shù)量為 COUNT 。count < 0 : 從表尾開始向表頭搜索,移除與 VALUE 相等的元素,數(shù)量為 COUNT 的絕對值。count = 0 : 移除表中所有與 VALUE 相等的值。
lpop key :獲取并移除最左邊的元素
lpop key? count
7.4set集合類型的命令
value是set集合類型,添加的元素不能重復
sadd key value value ....添加合集元素? ? ? ?
smembers key? ?查看
sunion k1 k2 :求k1和k2的并集
sinter k1 k2 :交集
sdiff k1 k2 :求k1和k2的差集
srem key value...:移除
spop key:隨機移除
7.5sorted set集合類型的命令
它的value也是一個集合,但是該集合需要額外增加一個分數(shù)值,用于排序,不允許重復
zadd key score value score value ...添加
zrange key start end? ? ? ? ? ? ? ? ? ? ? ? 最新熱門
zrange key start end??withscores帶數(shù)字
zrevrange?key start end 倒序
zrem key value:移除
8.應用場景
1.作為熱點數(shù)據(jù)的存儲|緩存
2.可以實現(xiàn)session共享
3.點贊,收藏,評論數(shù)等
4.分布式鎖
5.排行榜
6.秒殺
9.redis的持久化方式
持久化:把內(nèi)存中的數(shù)據(jù),保存到磁盤的過程
作用:防止數(shù)據(jù)的丟失
1.RDB快照模式
? ? ? ? 優(yōu):持久化速度快,數(shù)據(jù)恢復快
? ? ? ? 缺:數(shù)據(jù)完整性差,會丟失一段時間的數(shù)據(jù)
2.AOF
????????
9.1.RDB持久化方式
RDB 持久性以指定的時間間隔執(zhí)行數(shù)據(jù)集的時間點快照。redis默認的持久化方式
指在指定間隔內(nèi),把內(nèi)存中的數(shù)據(jù)復制到磁盤
? RDB持久化存儲在磁盤上的名稱默認為dump.rdb
什么時候觸發(fā)RDB持久化方式
1.手動觸發(fā)? ? ? ? save命令觸發(fā)
2.手動觸發(fā)? ?bgsave
4.自動觸發(fā)? 根據(jù)配置 底層bgsave
區(qū)別
save命令會阻塞當前redis服務器,執(zhí)行save命令期間,redis不能執(zhí)行其他命令,直到RDB過程完成
bgsave執(zhí)行該命令時,redis會在后臺異步進行快照操作,快照同時還可以響應客戶端請求
?
save在指定的秒數(shù)內(nèi)發(fā)送changes次變化則會觸發(fā)rdb模式
save 5 3? ? ? ? 5秒內(nèi)發(fā)送三次改變則會觸發(fā)rdb模式
?save默認的,3600s1次改變|300秒100次改變|60s10000次改變
?默認保存文件
?
?
9.1.2rdb數(shù)據(jù)恢復
把備份的dump.rdb文件復制到redis啟動目錄下
1.dump.rdb備份到其他目錄下,關(guān)閉redis并刪除dump.rdb,啟動redis查看是否有內(nèi)容,無內(nèi)容
2.關(guān)閉redis服務,把備份的dump.rdb文件復制到redis啟動目錄下,再啟動,有內(nèi)容
9.1.3RDB的優(yōu)缺點
優(yōu)點:1.數(shù)據(jù)恢復速度快
2.備份速度快
缺:數(shù)據(jù)完整性差【可能會丟失最后一段時間的數(shù)據(jù)】
9.2. AOF持久化方式
append only? file:追加寫操作到日志文件
RDB全量備份總是耗時的,提供一種更加高效的方式AOF,工作機制很簡單,rdis會將每一個收到的? 寫命令都通過write函數(shù)追加到文件中。通俗的理解就是日志記錄。
默認不開啟,開啟改為yes
默認名appendonly.aof
觸發(fā)機制
appendfsync always? ? ? ? 總觸發(fā),每執(zhí)行一個寫操作就會觸發(fā)AOF appendfsync everysec? ? ? ? 每一秒觸發(fā)一次? ? ? ? 丟失最近1秒的數(shù)據(jù) ?appendfsync no? ? ? ? 不觸發(fā)
優(yōu)點:數(shù)據(jù)完整性比較好,最多丟失最后1秒的數(shù)據(jù)|丟失最后一個寫命令
缺點:數(shù)據(jù)恢復慢,而且日志文件非常大
rdb和aof是不兼容的
默認redis啟動時,先加載aof,一般企業(yè)中使用rdb模式
柚子快報激活碼778899分享:redis非關(guān)系型數(shù)據(jù)庫
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。