啟動與關(guān)閉Redis服務(wù)点楼、進入Redis環(huán)境
1.啟動Redis服務(wù)
redis-server 拷貝的redis.conf的位置
redis-server redis6380/redis.conf?? 啟動6380Redis服務(wù)
2.關(guān)閉Redis服務(wù)
redis-cli shutdown?? # 默認關(guān)閉的是本機的6379端口的Redis服務(wù)
全稱:
redis-cli -h 主機地址 -p 要關(guān)閉的Redis端口號? shutdown
redis-cli -h redis6380/redis.conf -p 6380 shutdown
3.進入Redis客戶端環(huán)境
redis-cli -h Redis所在主機地址? -p 6379Redis
redis-cli -h localhost -p 6381?? 進入6381的環(huán)境
Redis的全稱是Remote Dictionary Server
Redis是一種基于鍵值對(key-value)的NoSQL數(shù)據(jù)庫。
Redis主從復(fù)制:
Redis的主從復(fù)制是單向的,只能從master復(fù)制數(shù)據(jù)到slave成榜。
設(shè)置主從關(guān)系:
1. 在從服務(wù)器(slave)Redis命令行中直接輸入:slaveof master的地址 master的端口號
2. 在從服務(wù)器(slave)的配置文件redis.conf中加入 slaveof master的地址 master的端口號
切主與斷開復(fù)制:
切主操作:
slaveof master的地址 master的端口號
slaveof 127.0.0.1 6379 主從復(fù)制
斷開復(fù)制:
slaveof no one
Redis特性
速度快
正常情況下,Redis執(zhí)行命令的速度非澈侄快胁孙,官方的數(shù)據(jù)是讀寫性能10萬/秒。
速度快的主要原因:
Redis所有數(shù)據(jù)都是存放在內(nèi)存中的菜枷;
Redis是用C語言實現(xiàn)的苍糠;
Redis使用了單線程架構(gòu);
基于鍵值對的數(shù)據(jù)結(jié)構(gòu)服務(wù)器
Redis提供了5種基本數(shù)據(jù)結(jié)構(gòu):字符串、哈希啤誊、列表岳瞭、集合拥娄、有序集合。
持久化
雖然Redis的所有數(shù)據(jù)都是存放在內(nèi)存中的瞳筏,但也提供了持久化的功能稚瘾。
主從復(fù)制
keys *? 查看所有的key
type key? 查看key所對應(yīng)的value的數(shù)據(jù)類型
del key [key1 key2 …]刪除key
expire? key 過期時間(秒)
ttl key 查看鍵的剩余過期時間
一:字符串(string)
常用命令
(1)設(shè)置值
set key value [nx|xx]
注意:nx當(dāng)key不存在時,才能設(shè)置成功
xx當(dāng)key存在時姚炕,才能設(shè)置成功ss
(2)獲取值
get key
(3)批量設(shè)置值
mset key value [key value …]
)批量獲取值
mget key [key …]
(5) 計數(shù)
incr key
注意:incr 命令用于對值做自增操作摊欠,返回? 結(jié) 果有三種情況:
值不是整數(shù),返回錯誤
值是整數(shù)柱宦,返回自增后的結(jié)果
鍵不存在凄硼,按照值為0自增,返回結(jié)果為1
(6) 設(shè)置時間期限
setex a 10 good
運算:
incr key?? #加1
decr key??? #減1
incrby a 5? #加5
decrby a 5?? #減5
(7)其他
append a b??? #在a 追加b
二:哈希(hash)
在Redis中捷沸,哈希類型是指值本身又是一個鍵值對結(jié)構(gòu)摊沉。
常用命令
(1) 設(shè)置值
hset key field value
hset student name tom
(2) 獲取值
hget key field
hget student name
(3)刪除field
hdel key? field [field …]
(4)計算field個數(shù)
hlen key
(5)批量設(shè)置或獲取field-value
hmset key field value [field value…]
hmset student name tom age 20 sex boy score 80
三:列表
列表類型用來存儲多個有序元素
常用命令
(1)從右邊插入元素
rpush key value [value …]
(2)從左邊插入元素
lpush key value[value…]
(3)獲取指定范圍內(nèi)的元素列表
lrange key start end(注意:此處包括end索引)
(4)獲取列表指定索引下標的元素
lindex? key? index
(5)獲取列表長度
llen? key
(6) 從列表左側(cè)(右側(cè))彈出元素
lpop|rpop key
(7)刪除指定元素
lrem key count value
根據(jù)count的不同刪除元素:
count>0,從左到右,刪除最多count個元素
count<0,從右到左痒给,刪除最多count絕對值??? 個元素
count=0 刪除所有
(8)修改指定索引下標的元素
lset key index newValue
列表可以組織成棧和隊列:
lpush + lpop = Stack(棧)
lpush + rpop = Queue(隊列)
四:集合(set)
集合中不允許有重復(fù)元素说墨,并且集合中的元素是無序的,不能通過索引下標獲取元素
集合內(nèi)操作
(1)添加元素
sadd key element [element…]
(2)刪除元素
srem key element[element…]
(3)計算元素個數(shù)
scard key
(4)獲取所有元素
smembers key
(5)隨機從集合返回指定個數(shù)元素
srandmember key [count]
(6)從集合隨機彈出元素
spop key [count]
注意:從Redis3.2版本開始苍柏,才支持[count]參數(shù)
集合間操作
(1)求多個集合的交集
sinter key [key…]
(2)求多個集合的并集
sunion key [key…]
(3)求多個集合的差集
sdiff key [key…]
五:有序集合
有序集合保留了集合不能有重復(fù)成員的特性尼斧,但不同的是,有序集合中的元素可以根據(jù)每個成員的分數(shù)進行排序
常用操作
(1)添加成員
zadd key score member [score member …]
(2)計算成員個數(shù)
zcard key
(3)獲取某個成員的分數(shù)
zscore key member
(4)刪除成員
zrem key member [member…]
(5)增加成員分數(shù)
zincrby key increment member
(6)計算成員的排名
zrank key member?? (從低到高)
zrevrank key member? (從高到低)
(7)返回指定排名范圍的成員
zrange key start end [withscores]
zrevrange key start end [withscores]
(8)返回指定分數(shù)范圍的成員
zrangebyscore? key? min max [withscores]
zrevrangebyscore key max min[withscores]
(9)返回指定分數(shù)范圍成員個數(shù)
zcount key min max
(10)刪除指定分數(shù)范圍的成員
zremrangebyscore? key? min max