初識(shí)Redis
Redis為鍵值型數(shù)據(jù)庫,數(shù)據(jù)以鍵值形式存儲(chǔ)。沒有表,沒有約束。
?認(rèn)識(shí)NoSQL
?mysql就是典型的關(guān)系型數(shù)據(jù)庫(SQL)。
目的都是數(shù)據(jù)的增刪改查,但數(shù)據(jù)存儲(chǔ)方式不一樣。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-544783.html
關(guān)系型和非關(guān)系型在結(jié)構(gòu)上有差異
關(guān)系型的結(jié)構(gòu)一般定好后就很少修改,非關(guān)系型的就更加自由
?關(guān)系型數(shù)據(jù)庫的關(guān)系體現(xiàn)如下,不同表可以通過外鍵進(jìn)行聯(lián)系
?非關(guān)系型數(shù)據(jù)庫因?yàn)闆]有表,所以像下面記錄一個(gè)用戶下的訂單需要通過json嵌套的形式
?查詢方面差異
關(guān)系型數(shù)據(jù)庫都可以使用同一套SQL語句進(jìn)行查詢,NoSQl的查詢語法不統(tǒng)一,不同的NoSQl數(shù)據(jù)庫有不同的語法
?事物上的差異
關(guān)系型數(shù)據(jù)庫的事物有ACID特性: 原子性,一致性,隔離性,持久性
NoSQl數(shù)據(jù)庫要么無事務(wù),要么就是只能做基本的一致性,ACID無法全部滿足,只有BASE性:系統(tǒng)能夠基本運(yùn)行,一直提供服務(wù)?
速度差異:磁盤讀寫速度遠(yuǎn)慢于CPU速度,因此存在內(nèi)存中的NoSQl速度很快。
認(rèn)識(shí)Redis
?
?安裝Redis
因?yàn)閞edis官方?jīng)]有提供windows版本(但聽說github上有),只有l(wèi)iunx,所以這里有兩種選擇,一是在本地安裝虛擬機(jī)跑redis,而是在云服務(wù)器跑redis
這里我選擇在云服務(wù)器裝redis, 官方也有提供redis的docker鏡像
這里首先在云服務(wù)器上使用如下命令拉取redis鏡像
docker pull redis
拉取速度慢的話可以換源,可以看下面這個(gè)博主的文章,建議換阿里的源,快的不是一點(diǎn)半點(diǎn)
docker 換鏡像源以解決拉取鏡像速度慢的問題_dock拉取鏡像很慢_farkuai的博客-CSDN博客
然后用鏡像創(chuàng)建一個(gè)容器
docker run -d -p 6379:6379 --name myredis redis
?用docker ps -a 看容器的id
docker ps -a
然后用以下命令打開redis服務(wù)
docker exec -it 容器的id redis-cli
然后就可以直接使用一個(gè)軟件進(jìn)行連接了,不需要管配置文件那些什么的,更不需要文件夾映射什么的
?這里拉取容器下來的redis默認(rèn)是沒有密碼的,所以可以直接用服務(wù)器+端口后進(jìn)行連接
?為了安全起見,還是要先修改密碼。
//使用如下命令查詢信息
config get requirepass
//使用如下命令修改密碼
config set requirepass password
//使用如下命令確認(rèn)密碼,否則報(bào)錯(cuò)
auth password
//再次查看密碼
config get requirepass
設(shè)置完密碼之后的每次登陸都要帶上密碼,否則能進(jìn)去但不能使用命令
?
docker exec -it b66f2d4fb5b3 redis-cli -a 234799
連接成功時(shí)界面是這樣的
?這里默認(rèn)有16個(gè)倉庫,可以通過以下語句選擇哪一個(gè)倉庫
# 選擇 0號(hào)庫
select 0
?Redis命令——數(shù)據(jù)結(jié)構(gòu)
?
Redis命令——通用命令
#查看相關(guān)命令的信息
help commad
#查詢所有的key
keys *
#查詢所有以n開頭的key
keys n*
#查詢所有帶有n的key
keys *n*
//類似sql的模糊查詢
#刪除指定的key
del key
#刪除多個(gè)key
del k1 k2 k3 k4 #實(shí)際刪除多少個(gè)就會(huì)返回多少個(gè)
//只能指定key后刪除
#判斷key是否存在
exists k1 k2 #返回值是存在的key的數(shù)量
#給一個(gè)key設(shè)置有效期,到期就會(huì)刪除,因?yàn)閞edis在內(nèi)存存儲(chǔ),不刪的話會(huì)爆內(nèi)存
expire key 20 #20s有效期
#查看一個(gè)key的有效期
ttl key #返回剩余秒數(shù)
返回-1則是永久有效
Redis命令——String類型常見命令
甚至可以把圖片變成字節(jié)流存在redis里面
?
?常見命令
#設(shè)置三個(gè)鍵值對(duì) k1:v1 ....
mset k1 v1 k2 v2 k3 v3
#獲取多個(gè)key的值
mget k1 k2 k3
#返回值是自增后的結(jié)果
incr age
#讓age每次自增-2
incrby age -2
#浮點(diǎn)數(shù)自增0.5
incrbyfloat age 0.5
#如果不存在才增加,可以有效防止覆蓋
setnx age 2
set age 2 nx #效果相同
#添加一個(gè)key=5并設(shè)置有效期為10
setex age 10 5
set age 5 ex 10
//可以覆蓋已有的key,相當(dāng)于set和expire組合
?
Redis命令——key的層級(jí)格式
????????
?使用如下的四條語句設(shè)置4條數(shù)據(jù)
set itheima:user:1 '{"id":1, "name":"Jack", "age": 21}'
set itheima:user:2 '{"id":2, "name":"Rose", "age": 18}'
set itheima:user:3 '{"id":1, "name":"小米11", "price": 4999}'
set itheima:user:4 '{"id":2, "name":"榮耀6", "price": 2999}'
?然后在圖形界面客戶端可以看見有如下層級(jí)
Redis命令——Hash類型相關(guān)命令
類比就是map<String,map>,套娃
?
?常見命令
hmset已經(jīng)棄用,使用hset可以達(dá)到hmset效果?
hdel :刪除一個(gè)key下面指定的field和values
Redis命令——List類型相關(guān)命令
?常見命令
?
?Redis命令——Set類型相關(guān)命令
常用命令
??Redis命令——SortedSet類型相關(guān)命令
?文章來源:http://www.zghlxwxcb.cn/news/detail-544783.html
常用命令
?
?
到了這里,關(guān)于Redis——基礎(chǔ)篇(包含redis在云服務(wù)上的docker化安裝和連接以及常用命令)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!