柚子快報(bào)邀請碼778899分享:緩存 Redis非關(guān)系型數(shù)據(jù)庫
柚子快報(bào)邀請碼778899分享:緩存 Redis非關(guān)系型數(shù)據(jù)庫
Redis是什么
Redis:REmote DIctionary Server(遠(yuǎn)程字典服務(wù)器) 是完全開源免費(fèi)的,用C語言編寫的,遵守BSD協(xié)議,是一個(gè)高性能的(Key/Value)分布式內(nèi)存數(shù)據(jù) 庫,基于內(nèi)存運(yùn)行,并支持持久化的NoSQL數(shù)據(jù)庫,是當(dāng)前最熱門的NoSQL數(shù)據(jù)庫之一,也被人們稱為 數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
Windows安裝redis
1.下載后解壓
2.命令行運(yùn)行(可以指定配置文件),默認(rèn)端口:6379
redis-server redis.windows.conf
3.通過客戶端去訪問 redis-cli
基本數(shù)據(jù)庫常識(shí)
默認(rèn) 16 個(gè)數(shù)據(jù)庫,下標(biāo)從零開始,初始默認(rèn)使用零號庫,在redis.conf里面有默認(rèn)的配置
Select命令切換數(shù)據(jù)庫dbsize查看庫中的數(shù)據(jù)量Flushdb:清空當(dāng)前庫Flushall:清空全部的庫
常用命令
Redis鍵(key)
keys * 查看所有的keyexists key 的名字,判斷某個(gè)key是否存在expire key 秒鐘:為給定 key 設(shè)置生存時(shí)間,當(dāng) key 過期時(shí)(生存時(shí)間為 0 ),它會(huì)被自動(dòng)刪除ttl key 查看還有多少秒過期,-1 表示永不過期,-2 表示已過期type key 查看你的key是什么類型
字符串String操作命令
set key value 設(shè)置值get key 獲得key的值del key 刪除keyappend key "hello" 追加內(nèi)容 對不存在的 key 進(jìn)行 APPEND ,等同于 SETSTRLEN key 獲取字符串的長度incr key???????? + 1只能對數(shù)值incrby key num +numdecr key???????? -1decrby key num -num
getrange 獲取指定區(qū)間范圍內(nèi)的值,類似between...and的關(guān)系,從零到負(fù)一表示全部setrange 設(shè)置指定區(qū)間范圍內(nèi)的值,格式是setrange key值 具體值setex(set with expire)鍵秒值setnx(set if not exist)mset Mset 命令用于同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對。mget Mget 命令返回所有(一個(gè)或多個(gè))給定 key 的值。如果給定的 key 里面,有某個(gè) key 不存在,那么這個(gè) key 返回特殊值 nil 。msetnx 當(dāng)所有 key 都成功設(shè)置,返回 1 。getset(先get再set)
Redis五種基本數(shù)據(jù)類型
String字符串、List列表、Set集合、Hash哈希、sorkedSet有序集合
列表List
Lpush:將一個(gè)或多個(gè)值插入到列表頭部。rpush:將一個(gè)或多個(gè)值插入到列表尾部。lrange:返回列表中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量 START 和 END 指定。lpop 命令用于移除并返回列表的第一個(gè)元素。當(dāng)列表 key 不存在時(shí),返回 nil 。rpop 移除列表的最后一個(gè)元素,返回值為移除的元素。Lindex,按照索引下標(biāo)獲得元素(-1(特殊)代表最后一個(gè), 0 代表是第一個(gè))
llen 用于返回列表的長度。lrem key 根據(jù)參數(shù) COUNT 的值,移除列表中與參數(shù) VALUE 相等的元素。刪除掉count個(gè)value值
Ltrim key 對一個(gè)列表進(jìn)行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。rpoplpush 移除列表的最后一個(gè)元素,并將該元素添加到另一個(gè)列表并返回。
lset key index value 將列表 key 下標(biāo)為 index 的元素的值設(shè)置為 value 。不能超出下標(biāo)界限linsert key before/after pivot value 用于在列表的元素前或者后插入元素。將值 value 插入到列表 key 當(dāng)中,位于值 pivot 之前或之后。(第一個(gè))
集合Set
sadd 將一個(gè)或多個(gè)成員元素加入到集合中,不能重復(fù),返回添加成功的數(shù)量smembers 返回集合中的所有的成員。sismember 命令判斷成員元素是否是集合的成員。scard,獲取集合里面的元素個(gè)數(shù)srem key value 用于移除集合中的一個(gè)或多個(gè)成員元素(返回刪除元素的個(gè)數(shù))srandmember key 命令用于返回集合中的一個(gè)隨機(jī)元素spop key 用于移除集合中的指定 key 的一個(gè)或多個(gè)隨機(jī)元素(返回刪除的元素)
smove SOURCE DESTINATION MEMBER 將指定成員 member 元素從 source 集合移動(dòng)到 destination 集合。數(shù)字集合類- 差集: sdiff sdiff A B 返回A集合交于B集合的差集- 交集: sinter sinter A B 返回A和B共同的元素- 并集: sunion sunion返回A和B中所有的元素
哈希Hash
kv模式不變,但V是一個(gè)鍵值對
hset、hget 命令用于為哈希表中的字段賦值 。hmset、hmget 同時(shí)將多個(gè)field-value對設(shè)置到哈希表中。會(huì)覆蓋哈希表中已存在的字段。hgetall 用于返回哈希表中,所有的字段和值。hdel 用于刪除哈希表 key 中的一個(gè)或多個(gè)指定字段
hlen 獲取哈希表中字段的數(shù)量。hexists 查看哈希表的指定字段是否存在。hkeys 獲取哈希表中的所有域(field)。hvals 返回哈希表所有域(field)的值。hincrby 為哈希表中的字段值加上指定增量值。hsetnx 為哈希表中不存在的的字段賦值
有序集合Zset
Zset是排序的
在set基礎(chǔ)上,加一個(gè)score值。之前set是k1 v1 v2 v3,現(xiàn)在zset是 k1 score1 v1 score2 v2zadd 將一個(gè)或多個(gè)成員元素及其分?jǐn)?shù)值加入到有序集當(dāng)中。zrange 返回有序集中,指定區(qū)間內(nèi)的成員zrangebyscore 返回有序集合中指定分?jǐn)?shù)區(qū)間的成員列表。有序集成員按分?jǐn)?shù)值遞增(從小到大)次序排列。
zcard 命令用于計(jì)算集合中元素的數(shù)量zcount 計(jì)算有序集合中指定分?jǐn)?shù)區(qū)間的成員數(shù)量zrank 返回有序集中指定成員的排名。其中有序集成員按分?jǐn)?shù)值遞增(從小到大)順序排列。
zrevrank 返回有序集中成員的排名。其中有序集成員按分?jǐn)?shù)值遞減(從大到小)排序。
和set相比,sorted set增加了一個(gè)權(quán)重參數(shù)score,使得集合中的元素能夠按score進(jìn)行有序排列,比如一個(gè)存儲(chǔ)全班同學(xué)成績的sorted set,其集合value可以是同學(xué)的學(xué)號,而score就可以是其考試得分,這樣在數(shù)據(jù)插入集合的時(shí)候,就已經(jīng)進(jìn)行了天然的排序??梢杂胹orted set來做帶權(quán)重的隊(duì)列,比如普通消息的score為 1 ,重要消息的score為 2 ,然后工作線程可以選擇按score的倒序來獲取工作任務(wù)。讓重要的任務(wù)優(yōu)先執(zhí)行。
柚子快報(bào)邀請碼778899分享:緩存 Redis非關(guān)系型數(shù)據(jù)庫
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。