-
redis數(shù)據(jù)結(jié)構(gòu)
查看全部 -
redis的應(yīng)用場(chǎng)景
查看全部 -
redis支持的鍵值類型
查看全部 -
Nosql的特點(diǎn)
易擴(kuò)展
靈活的數(shù)據(jù)模型
大數(shù)據(jù)量,高性能
高可用
查看全部 -
NoSql數(shù)據(jù)庫比較
查看全部 -
Redis入門
數(shù)據(jù)類型
字符串
get 設(shè)置k-v
getset k v ? :將k中原來的值設(shè)置為新的v
incr ?遞增decr 遞減
incrby 直接增加到n decrby 直接增加n
append 在字符串后面追加一個(gè)字符
常用命令
字符串列表
lpush左插入 ?rpush右插入
lrang ?start end查看 ?-1是最后一個(gè)
lpop 左彈出 rpop右彈出
llen 查看列表元素個(gè)數(shù)
lpushx ?rpushx僅在列表存在的時(shí)候才進(jìn)行插入
lrem count v ?刪除count個(gè)v
lset index v 在指定位置插入值
linsert xx after/before n v在 在n的前后位置插入v
rpoplpush a b 將a中的一個(gè)數(shù)據(jù)pop壓入b
count > 0 從起始位置開始刪除count個(gè)v
count < 0 從末尾位置開始刪除count個(gè)v
count = 0 刪除所有的v
常用命令
哈希
hset k 屬性 值 ?設(shè)置k-v ?hmset ? 設(shè)置多個(gè)k-v
hget 獲取指定屬性的值 ?hmget ?獲取多個(gè)
hgetall 獲取所有屬性的值
hdel 刪除k中某個(gè)屬性的值 del直接刪除一個(gè)k
hinrcby 追加數(shù)值
hexists 查看查看k中是否存在某個(gè)屬性
hgetall 獲取k中所有的屬性和值
hlen獲取k的長(zhǎng)度
hkeys獲取k中素有的屬性 ? hvals獲取所有的值
常用命令
字符串集合(set)
sadd xxx n.. 添加元素n…
srem xxx n… 刪除元素
smembers xxx 查看set中的元素
sismember xxx n 查看是不是xxx中的元素
sinter a b a和b中的交集
sunion a b ?a和b中的并集
scard xxx 獲取xxx中的數(shù)量
srandmember xxx 隨機(jī)取出一個(gè)數(shù)
將結(jié)果存入到第三個(gè)set中
sdiffstore xxx a b ?將a和b中差的值fangdaoxxx中
sinterstore ?xxx ?a ?b ?將a和b中的交集存到xxx中
sunionstore ?xxx a b ?將a和b的并集存放到xxx中
最大元素?cái)?shù)量是4294967295
常用命令
有序字符串集合sorted-set
zadd ?xxx ?(v-k)… 添加元素
zscore xxx k 查看某個(gè)key的值、
zcard xxx 獲取數(shù)量
zrem xxx k… 刪除指定的k
查看
刪除
zincrby xxx ?num k ?給k值增加n
zcount ?xxx ?start ?end ?獲取star到end的v值的個(gè)數(shù)
zrange/zrevrange ?xxx start end ?(withscores ?將所有的v值列出)升序/降序 ?按照位置
zrangebyscore ?xxx start end(withscores ?將所有的v值列出) (limit star end ? 限制位置) ? 按照v值升序
ztemrangebyrank xxx start end ?按照位置范圍刪除
ztemrangebycore ?xxx start end 按照v大小刪除
常用命令
Key定義的注意點(diǎn)
不要太長(zhǎng)
不要太短
要有統(tǒng)一的命名規(guī)范
keys的通用操作
獲取所有的keys ? keys*
刪除del xxx…
exists xxx 查看某個(gè)key是否存在
rename ?重命名
expire ?xxx ?設(shè)置倒計(jì)時(shí)(秒)
ttl ?xxx 查看剩余時(shí)間
get 獲取
type 獲取k的類型
reids的特性
多數(shù)據(jù)庫
事務(wù)
多數(shù)據(jù)庫
move可以將一個(gè)key從一個(gè)數(shù)據(jù)庫移動(dòng)到另一個(gè)中
事務(wù)
通過multi 開啟事務(wù)
redis持久化
RDB(默認(rèn))
優(yōu)勢(shì)
每個(gè)數(shù)據(jù)庫是一個(gè)文件,容易備份
災(zāi)難恢復(fù)
性能優(yōu)化,只負(fù)責(zé)分配進(jìn)程
缺點(diǎn)
數(shù)據(jù)非常大,由于是子進(jìn)程來處理,服務(wù)器可能會(huì)暫停運(yùn)轉(zhuǎn)
并不能保證數(shù)據(jù)的高可用性,比如每30秒向硬盤中寫入一次數(shù)據(jù),在第25秒的時(shí)候服務(wù)器掛了,那么數(shù)據(jù)就丟失了
AOF
優(yōu)勢(shì)
可以帶來更高的安全性 同步持久化
不會(huì)破壞日志中的已存在的數(shù)據(jù) ?是append到日志中
如果日志過大,可以重啟redis
格式很清晰的日志文件,可以通過這個(gè)日志來完成數(shù)據(jù)重建
劣勢(shì)
效率低一些
文件比RDB大一些
查看全部 -
啟動(dòng) redis-server redis-conf
停止 redis-cli shutdown
查看 ps -ef | grep -i redis
查看全部 -
# Redis Desktop Manager
> Redis GUI management tool for Windows, macOS, iPad and Linux.
https://redisdesktop.com/
查看全部 -
1. 什么是 Redis1.1 Redis 特點(diǎn)1.2 Redis 優(yōu)勢(shì)1.3 Redis 的引用場(chǎng)景1.4 Redis 和其他 key - value 的不同2. Redis 安裝2.1 Windows 下安裝2.2 Linux 下安裝2.3 注意3. 基本操作及常識(shí)
1. 什么是 Redis
1.1 Redis 特點(diǎn)
Redis 是一個(gè)高性能的開源的
key-value
數(shù)據(jù)庫,相比于其他同類型產(chǎn)品,有如下特點(diǎn)。支持?jǐn)?shù)據(jù)持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟時(shí)再次加載使用即可;
不僅支持
key-value
類型的數(shù)據(jù),同時(shí)還支持list、set、hash、zset
等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ);支持
master-slave
模式的數(shù)據(jù)備份;
1.2 Redis 優(yōu)勢(shì)
高性能;
支持的數(shù)據(jù)類型豐富;
原子性,要么成功執(zhí)行,要么失敗完全不執(zhí)行。單個(gè)操作時(shí)原子性的,多個(gè)操作也支持事務(wù),通過
MULTI
和EXEC
指令封裝;支持其他豐富的特性,如
publish/subscribe
,通知,key
過期等;
1.3 Redis 的引用場(chǎng)景
內(nèi)存存儲(chǔ)、持久化
高效率,可以用于高速緩存
發(fā)布訂閱系統(tǒng)
地圖信息分析
計(jì)時(shí)器、計(jì)數(shù)器
任務(wù)隊(duì)列
數(shù)據(jù)過期處理
應(yīng)用排行榜
……
1.4 Redis 和其他 key - value 的不同
Redis 的數(shù)據(jù)結(jié)構(gòu)更加復(fù)雜且提供對(duì)他們的原子性操作,而且基于基本數(shù)據(jù)結(jié)構(gòu)的同時(shí)也對(duì)程序員透明,無需進(jìn)行額外抽象;
Redis 運(yùn)行在內(nèi)存中但是可以持久化到硬盤,所以在對(duì)不同數(shù)據(jù)集進(jìn)行高速讀寫是需要權(quán)衡內(nèi)存大小,數(shù)據(jù)量不能大于硬件內(nèi)存;
2. Redis 安裝
2.1 Windows 下安裝
去下載安裝包,https://github.com/tporadowski/redis/releases,支持 32 和 64 位,按需下載即可;
解壓縮下載后的壓縮包,并存在你自己指定的目錄;
打開終端,然后切換到 Redis 目錄,運(yùn)行如下命令即可:
?./redis-server.exe
打開另一個(gè)窗口,在 Redis 目錄下運(yùn)行另一個(gè) Redis,然后進(jìn)行設(shè)置和取出鍵值對(duì)測(cè)試;
?./redis-cli.exe ?#?設(shè)置鍵值對(duì) ?set?key?"cunyu" ?#?取出鍵值對(duì) ?get
2.2 Linux 下安裝
下載最新版本安裝包,http://redis.cn/download
使用如下命令解壓安裝包到你需要存儲(chǔ)的位置,然后進(jìn)行編譯
??!〗鈮??tar?-zxvf?redis-6.0.6.tar.gz ??!∵M(jìn)入文件夾 ?cd?redis-6.0.6 ??!【幾g ?make
在一個(gè)終端中啟動(dòng)服務(wù)端
在另一個(gè)終端中啟動(dòng)客戶端進(jìn)行測(cè)試
2.3 注意
當(dāng)在控制臺(tái)中獲取中文鍵值時(shí),可能會(huì)出現(xiàn)亂碼的情況,此時(shí),可以通過在啟動(dòng)客戶端時(shí)加入
--raw
參數(shù)即可解決;?#?可能亂碼的啟動(dòng)方式 ?./redis-cli ?#?解決亂碼的啟動(dòng)方式 ?./redis-cli?--raw
3. 基本操作及常識(shí)
選擇對(duì)應(yīng)數(shù)據(jù)庫
?#?redis?默認(rèn)提供?16?個(gè)數(shù)據(jù)庫,默認(rèn)使用?0?號(hào)數(shù)據(jù)庫 ?select?num(數(shù)據(jù)庫編號(hào))
獲取數(shù)據(jù)庫名
?get?name
查看數(shù)據(jù)庫大小
?DBSIZE
查看數(shù)據(jù)庫所有 key
?keys?*
清空數(shù)據(jù)庫
?#?清空所有數(shù)據(jù)庫 ?FLUSHALL ? ?#?清空當(dāng)前數(shù)據(jù)庫 ?flush?db
查看某 key 是否存在
?EXISTS?key
移除當(dāng)前 key
?move?key?value
設(shè)置 key 過期時(shí)間
?#?time?時(shí)間單位為秒 ?EXPIRE?key?time
查看當(dāng)前 key 的類型
?type?key
查看全部 -
1. 什么是 NoSQL
NoSQL = Not Only SQL
泛指非關(guān)系型數(shù)據(jù)庫,隨 Web2.0 的誕生,傳統(tǒng)關(guān)系型數(shù)據(jù)庫難以應(yīng)對(duì) Web2.0,尤其是超大規(guī)模的高并發(fā)社區(qū)。NoSQL 在當(dāng)今大數(shù)據(jù)程序下較為流行。
2. NoSQL 特點(diǎn)
高擴(kuò)展性(數(shù)據(jù)間無關(guān)系,容易擴(kuò)展)
大數(shù)據(jù)量高性能(官方給定數(shù)據(jù),寫操作 8w次/s,讀操作 11w次/s)
數(shù)據(jù)類型多樣(無需事先設(shè)計(jì)數(shù)據(jù)庫,隨取隨用)
高可用
傳統(tǒng) RDBMS 和 NoSQL
不僅僅是數(shù)據(jù)
無固定查詢語言
鍵值對(duì)存儲(chǔ),列存儲(chǔ)、文檔存儲(chǔ)、圖形數(shù)據(jù)庫
最終一直性
CAP 定理和 BASE
高性能,高可用,高可拓
……
結(jié)構(gòu)化組織
SQL
數(shù)據(jù)和關(guān)系均存在單獨(dú)的表中
操作數(shù)據(jù)定義語言
嚴(yán)格的一致性
基礎(chǔ)的事務(wù)
……
傳統(tǒng) RDBMS
NoSQL
3. NoSQL 的四大分類
KV 鍵值對(duì)
文檔型數(shù)據(jù)庫(bson & json)
列存儲(chǔ)數(shù)據(jù)庫
圖關(guān)系數(shù)據(jù)庫
分類 實(shí)例 應(yīng)用場(chǎng)景 數(shù)據(jù)模型 優(yōu)點(diǎn) 缺點(diǎn) 鍵值對(duì)(key-value) Redis、Voldemort 內(nèi)存緩存,用于處理大量數(shù)據(jù)的高訪問負(fù)載,也可用于日志系統(tǒng)等 key 指向 value 的鍵值對(duì),通常是用 HashTable 來實(shí)現(xiàn) 查找速度快 數(shù)據(jù)無結(jié)構(gòu)化,通常只被當(dāng)做字符串或二進(jìn)制數(shù)據(jù) 列存儲(chǔ)數(shù)據(jù)庫 HBase 分布式文件系統(tǒng) 以列簇式存儲(chǔ),講同一列數(shù)據(jù)存儲(chǔ)在一起 1. 查找速度快2. 擴(kuò)展性強(qiáng)3. 更容易進(jìn)行分布式擴(kuò)展 功能相對(duì)局限 文檔型數(shù)據(jù)庫 MongoDb Web 應(yīng)用,類似于 Key-Value key-value 對(duì)應(yīng)的鍵值對(duì),value 為結(jié)構(gòu)化的數(shù)據(jù) 1. 數(shù)據(jù)結(jié)構(gòu)要求寬松2. 表結(jié)構(gòu)可變,無需像關(guān)系型數(shù)據(jù)庫一樣預(yù)先定義表結(jié)構(gòu) 查詢性能低,且查詢語法不統(tǒng)一 圖形數(shù)據(jù)庫(Graph) Neo4j、InfoGrid 社交網(wǎng)絡(luò)、推薦系統(tǒng)等 圖結(jié)構(gòu) 可以利用圖結(jié)構(gòu)相關(guān)算法,如最短路徑尋址、N度關(guān)系查找等 許多時(shí)候需要對(duì)整個(gè)圖進(jìn)行計(jì)算才能得到最終結(jié)果,效率不高;而且做分布式集群較困難 查看全部 -
NoSQL:非關(guān)系型數(shù)據(jù)庫
?* High performance - 高并發(fā)讀寫
?* Huge Storage - 海量數(shù)據(jù)的高效率存儲(chǔ)和訪問
?* High Scalability && High Availability -高可擴(kuò)展性和可用性
主流NoSQL產(chǎn)品: mongoDB? ?Redis??
NoSQL數(shù)據(jù)庫的四打分類
? ?* 鍵值(Key-Value)存儲(chǔ)? ,如Redis ,優(yōu)勢(shì):快速查詢,劣勢(shì):缺少結(jié)構(gòu)化
? ?* 列存儲(chǔ)? ,如HBase,優(yōu)勢(shì):查詢速度快,劣勢(shì):功能相對(duì)局限
? ?* 文檔數(shù)據(jù)庫,如MongoDb,優(yōu)勢(shì):數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,劣勢(shì):查詢性能不高
? ?* 圖形數(shù)據(jù)庫, 如Infinite Graph
?
NoSQL的特點(diǎn)
? ? * 易擴(kuò)展??
? ? * 靈活的數(shù)據(jù)模型
? ? * 大數(shù)據(jù)量,高性能??
? ? * 高可用
??
Redis的安裝
? ?搭建環(huán)境: 虛擬機(jī):VMware 10.0.2
? ? ? ? ? ? ? ? ? ?Linux系統(tǒng):CentOS-6.5
? ? ? ? ? ? ? ? ? ?SSH客戶端:SecureCRT7.3, SecureFX7.3
查看全部 -
Redis應(yīng)用場(chǎng)景
查看全部 -
NoSQL的特點(diǎn)
查看全部
舉報(bào)