redis學(xué)習(xí)

1:什么是redis

redis是一個nosql(not only sql不僅僅只有sql)數(shù)據(jù)庫.翻譯成中文叫做非關(guān)系型型數(shù)據(jù)庫.
關(guān)系型數(shù)據(jù)庫:以二維表形式存儲數(shù)據(jù)
非關(guān)系型數(shù)據(jù)庫: 以鍵值對形式存儲數(shù)據(jù)(key, value形式)
是一家意大利的創(chuàng)業(yè)公司出的,然后后來這家公司被VMware贊助. redis底層用C語句編寫.

redis是將數(shù)據(jù)存放到內(nèi)存中,由于內(nèi)容存取速度快所以redis被廣泛應(yīng)用在互聯(lián)網(wǎng)項(xiàng)目中,
redis有點(diǎn):存取速度快,官方稱讀取速度會達(dá)到30萬次每秒,寫速度在10萬次每秒最有,具體限制于硬件.
缺點(diǎn):對持久化支持不夠良好,
所以redis一般不作為數(shù)據(jù)的主數(shù)據(jù)庫存儲,一般配合傳統(tǒng)的關(guān)系型數(shù)據(jù)庫使用.

2:redis應(yīng)用領(lǐng)域

分布式緩存
分布式session
保存博客或者論壇的留言回復(fù)等.
總之是用在數(shù)據(jù)量大,并發(fā)量高的情況下

3:怎么用

redis主要就是使用命令來進(jìn)行操作,java端在代碼中可以使用Jedis來操作redis服務(wù)器
redis數(shù)據(jù)類型
字符串String
列表list redis中使用的是雙向循環(huán)鏈表來實(shí)現(xiàn)的list,在redis中更像棧
散列Hash 一般應(yīng)用于將redis作為分布式緩存,存儲數(shù)據(jù)庫中的數(shù)據(jù)對象
集合set set中數(shù)據(jù)是無序的并且不允許重復(fù)
有序集合zset redis會根據(jù)分?jǐn)?shù)自動排序,這里可以使用在學(xué)生成績排序,
或者是手機(jī)應(yīng)用商店流行軟件排名等需求中

4:redis持久化方案

rdb:可以設(shè)置間隔多長時間保存一次(Redis不用任何配置默認(rèn)的持久化方案)
有點(diǎn):讓redis的數(shù)據(jù)存取速度變快
缺點(diǎn):服務(wù)器斷電時會丟失部分?jǐn)?shù)據(jù)(數(shù)據(jù)的完整性得不到保證)
aof:可以設(shè)置實(shí)時保存
優(yōu)點(diǎn):持久化良好,能包裝數(shù)據(jù)的完整性
缺點(diǎn):大大降低了redis系統(tǒng)的存取速度

5: 主從復(fù)制

這里使用了心跳檢測機(jī)制,主從復(fù)制必須使用rdb持久化方式
從服務(wù)器一般是只讀的,保證主服務(wù)器和從服務(wù)器的數(shù)據(jù)一致性

cd /usr/local/ 
ls 
mkdir redis
cp /root/redis 
chmod +x redis-3.0.0.tar.gz #可執(zhí)行權(quán)限 
tar -zxvf redis-3.0.0.tar.gz #解壓

cd redis-3.0.0 #進(jìn)入 
make #編譯

make PREFIX=/usr/local/redis install #指定安裝到redis目錄 
./redis-server #啟動redis 前端啟動

cd /usr/local/redis/bin # 
./redis-cli #連接客戶端 
set key1 1 #進(jìn)去了 
get key1 #取出來了

cd .. 
cd redis-3.0.0

cd /usr/local/redis/bin 
vi redis.conf #該配置文件 
daemonize yes 
./redis-server redis.conf #后端啟動 
ps -aux|grep redis #后端啟動 
ps aux|grep redis #后端啟動 
./redis-cli #連接redis

cd /usr/local/redis/bin 
ls 
./redis-cli shutdown #關(guān)閉

6:簡單命令

incr key2  #遞增
decr key2  #遞減
decrby num 3 # 減去3

hset user2 name  'alice' #設(shè)置耽擱屬性
hset user2 gender 'woman'
hset user2 age 18
hget user2 name  #取出name屬性

hdel user2 name #刪除屬性
hdel user2 gender age #刪除兩個屬性

hmset user1 name '張三' age 22 gender 'woman'  #設(shè)置對象屬性
hmget user1 name age gender  #取出對象屬性
hgetall user1   #直接取出對象屬性

List
棧結(jié)構(gòu)存取
lpush lkey 1 2 3  #push 
lrange lkey 0 2 #start - end element
lrange lkey 0 -1  #全部取出
rpush lkey 7 8 9 #從右邊放入
lrange lkey 0 -1

lpop lkey  #棧彈出
llen lkey #獲取元素

Set
sadd skey1 1 2 3 4 5 6  #存入
smembers skey1    #取出
srem skey1 5 #刪除element 5
sismember skey1 4  ==>1   #判斷元素是否存在于集合中
sismember skey1 10 ==>0

sdiff skey1 skey2   #
 sinter skey1 skey2  #交集
sunion skey2 skey1   #并集

zadd zkey1 10 '張三' 20 '李四' 30 '王麻子'  #數(shù)據(jù)會自動排序
zrange zkey1 0 -1 #取出(排序后的數(shù)據(jù))
zrange zkey1 0 -1 withscores  #全部顯示數(shù)據(jù)(排序后)
zrem zkey1 '李四'  #去掉'李四'
zscore zkey1 '張三' #查詢單個人的數(shù)據(jù)信息
zrevrange zkey1 0 -1 withscores   #降序

keys * #所有的命令
keys *1  #匹配帶1的索引key
ping #查看服務(wù)器是否死掉
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容