10.常用五大數(shù)據(jù)類型簡(jiǎn)介
Redis的五大數(shù)據(jù)類型
-
String(字符串)
string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個(gè)key對(duì)應(yīng)一個(gè)value。
string類型是二進(jìn)制安全的。意思是redis的string可以包含任何數(shù)據(jù)。比如jpg圖片或者序列化的對(duì)象 。
string類型是Redis最基本的數(shù)據(jù)類型,一個(gè)redis中字符串value最多可以是512M
-
Hash(哈希,類似java里的Map)
Redis hash 是一個(gè)鍵值對(duì)集合。
Redis hash是一個(gè)string類型的field和value的映射表,hash特別適合用于存儲(chǔ)對(duì)象。
類似Java里面的Map<String,Object>
-
List(列表)
Redis 列表是簡(jiǎn)單的字符串列表,按照插入順序排序。你可以添加一個(gè)元素導(dǎo)列表的頭部(左邊)或者尾部(右邊)。
它的底層實(shí)際是個(gè)鏈表
-
Set(集合)
- Redis的Set是string類型的無序集合。它是通過HashTable實(shí)現(xiàn)實(shí)現(xiàn)的
-
Zset(sorted set:有序集合)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重復(fù)的成員。
不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)。
redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。
-
哪里去獲得redis常見數(shù)據(jù)類型操作命令
11.Key關(guān)鍵字
常用的
| 命令 | 描述 |
|---|---|
| DEL key | 該命令用于在 key 存在時(shí)刪除 key。 |
| DUMP key | 序列化給定 key ,并返回被序列化的值。 |
| EXISTS key | 檢查給定 key 是否存在。 |
| EXPIRE key seconds | 為給定 key 設(shè)置過期時(shí)間,以秒計(jì)。 |
| EXPIREAT key timestamp | EXPIREAT 的作用和 EXPIRE 類似,都用于為 key 設(shè)置過期時(shí)間。 不同在于 EXPIREAT 命令接受的時(shí)間參數(shù)是 UNIX 時(shí)間戳(unix timestamp)。 |
| PEXPIRE key milliseconds | 設(shè)置 key 的過期時(shí)間以毫秒計(jì)。 |
| PEXPIREAT key milliseconds-timestamp | 設(shè)置 key 過期時(shí)間的時(shí)間戳(unix timestamp) 以毫秒計(jì) |
| KEYS pattern | 查找所有符合給定模式( pattern)的 key 。 |
| MOVE key db | 將當(dāng)前數(shù)據(jù)庫(kù)的 key 移動(dòng)到給定的數(shù)據(jù)庫(kù) db 當(dāng)中。 |
| PERSIST key | 移除 key 的過期時(shí)間,key 將持久保持。 |
| PTTL key | 以毫秒為單位返回 key 的剩余的過期時(shí)間。 |
| TTL key | 以秒為單位,返回給定 key 的剩余生存時(shí)間(TTL, time to live)。 |
| RANDOMKEY | 從當(dāng)前數(shù)據(jù)庫(kù)中隨機(jī)返回一個(gè) key 。 |
| RENAME key newkey | 修改 key 的名稱 |
| RENAMENX key newkey | 僅當(dāng) newkey 不存在時(shí),將 key 改名為 newkey 。 |
| SCAN cursor [MATCH pattern] [COUNT count] | 迭代數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)鍵。 |
| TYPE key | 返回 key 所儲(chǔ)存的值的類型。 |
案例
keys *
exists key的名字,判斷某個(gè)key是否存在
move key db —>當(dāng)前庫(kù)就沒有了,被移除了
expire key 秒鐘:為給定的key設(shè)置過期時(shí)間
ttl key 查看還有多少秒過期,-1表示永不過期,-2表示已過期
type key 查看你的key是什么類型
12.String
單值單value
常用
| 命令 | 描述 |
|---|---|
| SET key value | 設(shè)置指定 key 的值 |
| GET key | 獲取指定 key 的值。 |
| GETRANGE key start end | 返回 key 中字符串值的子字符 |
| GETSET key value | 將給定 key 的值設(shè)為 value ,并返回 key 的舊值(old value)。 |
| GETBIT key offset | 對(duì) key 所儲(chǔ)存的字符串值,獲取指定偏移量上的位(bit)。 |
| MGET key1 [key2…] | 獲取所有(一個(gè)或多個(gè))給定 key 的值。 |
| SETBIT key offset value | 對(duì) key 所儲(chǔ)存的字符串值,設(shè)置或清除指定偏移量上的位(bit)。 |
| SETEX key seconds value | 將值 value 關(guān)聯(lián)到 key ,并將 key 的過期時(shí)間設(shè)為 seconds (以秒為單位)。 |
| SETNX key value | 只有在 key 不存在時(shí)設(shè)置 key 的值。 |
| SETRANGE key offset value | 用 value 參數(shù)覆寫給定 key 所儲(chǔ)存的字符串值,從偏移量 offset 開始。 |
| STRLEN key | 返回 key 所儲(chǔ)存的字符串值的長(zhǎng)度。 |
| MSET key value [key value …] | 同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì)。 |
| MSETNX key value [key value …] | 同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì),當(dāng)且僅當(dāng)所有給定 key 都不存在。 |
| PSETEX key milliseconds value | 這個(gè)命令和 SETEX 命令相似,但它以毫秒為單位設(shè)置 key 的生存時(shí)間,而不是像 SETEX 命令那樣,以秒為單位。 |
| INCR key | 將 key 中儲(chǔ)存的數(shù)字值增一。 |
| INCRBY key increment | 將 key 所儲(chǔ)存的值加上給定的增量值(increment) 。 |
| INCRBYFLOAT key increment | 將 key 所儲(chǔ)存的值加上給定的浮點(diǎn)增量值(increment) 。 |
| DECR key | 將 key 中儲(chǔ)存的數(shù)字值減一。 |
| DECRBY key decrement | key 所儲(chǔ)存的值減去給定的減量值(decrement) 。 |
| APPEND key value | 如果 key 已經(jīng)存在并且是一個(gè)字符串, APPEND 命令將指定的 value 追加到該 key 原來值(value)的末尾。 |
案例
set/get/del/append/strlen
Incr/decr/incrby/decrby,一定要是數(shù)字才能進(jìn)行加減
getrange/setrange
setex(set with expire)鍵秒值/setnx(set if not exist)
mset/mget/msetnx
getset(先get再set)
13.List
單值多value
常用
| 命令 | 描述 |
|---|---|
| BLPOP key1 [key2 ] timeout | 移出并獲取列表的第一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 |
| BRPOP key1 [key2 ] timeout | 移出并獲取列表的最后一個(gè)元素, 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 |
| BRPOPLPUSH source destination timeout | 從列表中彈出一個(gè)值,將彈出的元素插入到另外一個(gè)列表中并返回它; 如果列表沒有元素會(huì)阻塞列表直到等待超時(shí)或發(fā)現(xiàn)可彈出元素為止。 |
| LINDEX key index | 通過索引獲取列表中的元素 |
| LINSERT key BEFORE/AFTER pivot value | 在列表的元素前或者后插入元素 |
| LLEN key | 獲取列表長(zhǎng)度 |
| LPOP key | 移出并獲取列表的第一個(gè)元素 |
| LPUSH key value1 [value2] | 將一個(gè)或多個(gè)值插入到列表頭部 |
| LPUSHX key value | 將一個(gè)值插入到已存在的列表頭部 |
| LRANGE key start stop | 獲取列表指定范圍內(nèi)的元素 |
| LREM key count value | 移除列表元素 |
| LSET key index value | 通過索引設(shè)置列表元素的值 |
| LTRIM key start stop | 對(duì)一個(gè)列表進(jìn)行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。 |
| RPOP key | 移除列表的最后一個(gè)元素,返回值為移除的元素。 |
| RPOPLPUSH source destination | 移除列表的最后一個(gè)元素,并將該元素添加到另一個(gè)列表并返回 |
| RPUSH key value1 [value2] | 在列表中添加一個(gè)或多個(gè)值 |
| RPUSHX key value | 為已存在的列表添加值 |
案例
lpush/rpush/lrange
lpop/rpop
lindex,按照索引下標(biāo)獲得元素(從上到下)
llen
lrem key 刪N個(gè)value
ltrim key 開始index 結(jié)束index,截取指定范圍的值后再賦值給key
rpoplpush 源列表 目的列表
lset key index value
linsert key before/after 值1 值2
性能總結(jié):
它是一個(gè)字符串鏈表,left、right都可以插入添加;
如果鍵不存在,創(chuàng)建新的鏈表;
如果鍵已存在,新增內(nèi)容;
如果值全移除,對(duì)應(yīng)的鍵也就消失了。
鏈表的操作無論是頭和尾效率都極高,但假如是對(duì)中間元素進(jìn)行操作,效率就很慘淡了。
14.Set
單值多value
常用
| 命令 | 描述 |
|---|---|
| SADD key member1 [member2] | 向集合添加一個(gè)或多個(gè)成員 |
| SCARD key | 獲取集合的成員數(shù) |
| SDIFF key1 [key2] | 返回給定所有集合的差集 |
| SDIFFSTORE destination key1 [key2] | 返回給定所有集合的差集并存儲(chǔ)在 destination 中 |
| SINTER key1 [key2] | 返回給定所有集合的交集 |
| SINTERSTORE destination key1 [key2] | 返回給定所有集合的交集并存儲(chǔ)在 destination 中 |
| SISMEMBER key member | 判斷 member 元素是否是集合 key 的成員 |
| SMEMBERS key | 返回集合中的所有成員 |
| SMOVE source destination member | 將 member 元素從 source 集合移動(dòng)到 destination 集合 |
| SPOP key | 移除并返回集合中的一個(gè)隨機(jī)元素 |
| SRANDMEMBER key [count] | 返回集合中一個(gè)或多個(gè)隨機(jī)數(shù) |
| SREM key member1 [member2] | 移除集合中一個(gè)或多個(gè)成員 |
| SUNION key1 [key2] | 返回所有給定集合的并集 |
| SUNIONSTORE destination key1 [key2] | 所有給定集合的并集存儲(chǔ)在 destination 集合中 |
| SSCAN key cursor [MATCH pattern] [COUNT count] | 迭代集合中的元素 |
案例
sadd/smembers/sismember
scard,獲取集合里面的元素個(gè)數(shù)
srem key value 刪除集合中元素
srandmember key 某個(gè)整數(shù)(隨機(jī)出幾個(gè)數(shù))
spop key 隨機(jī)出棧
smove key1 key2 在key1里某個(gè)值 作用是將key1里的某個(gè)值賦給key2
-
數(shù)學(xué)集合類
差集:sdiff
交集:sinter
并集:sunion
15.Hash
KV模式不變,但V是一個(gè)鍵值對(duì)
常用
| 命令 | 描述 |
|---|---|
| HDEL key field1 [field2] | 刪除一個(gè)或多個(gè)哈希表字段 |
| HEXISTS key field | 查看哈希表 key 中,指定的字段是否存在。 |
| HGET key field | 獲取存儲(chǔ)在哈希表中指定字段的值。 |
| HGETALL key | 獲取在哈希表中指定 key 的所有字段和值 |
| HINCRBY key field increment | 為哈希表 key 中的指定字段的整數(shù)值加上增量 increment 。 |
| HINCRBYFLOAT key field increment | 為哈希表 key 中的指定字段的浮點(diǎn)數(shù)值加上增量 increment 。 |
| HKEYS key | 獲取所有哈希表中的字段 |
| HLEN key | 獲取哈希表中字段的數(shù)量 |
| HMGET key field1 [field2] | 獲取所有給定字段的值 |
| HMSET key field1 value1 [field2 value2 ] | 同時(shí)將多個(gè) field-value (域-值)對(duì)設(shè)置到哈希表 key 中。 |
| HSET key field value | 將哈希表 key 中的字段 field 的值設(shè)為 value 。 |
| HSETNX key field value | 只有在字段 field 不存在時(shí),設(shè)置哈希表字段的值。 |
| HVALS key | 獲取哈希表中所有值。 |
| HSCAN key cursor [MATCH pattern] [COUNT count] | 迭代哈希表中的鍵值對(duì)。 |
案例
hset/hget/hmset/hmget/hgetall/hdel
hlen
hexists key 在key里面的某個(gè)值的key
hkeys/hvals
hincrby/hincrbyfloat
hsetnx
16.ZSet
在set基礎(chǔ)上,加一個(gè)score值。 之前set是k1 v1 v2 v3, 現(xiàn)在zset是k1 score1 v1 score2 v2
常用
| 命令 | 描述 |
|---|---|
| ZADD key score1 member1 [score2 member2] | 向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù) |
| ZCARD key | 獲取有序集合的成員數(shù) |
| ZCOUNT key min max | 計(jì)算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù) |
| ZINCRBY key increment member | 有序集合中對(duì)指定成員的分?jǐn)?shù)加上增量 increment |
| ZINTERSTORE destination numkeys key [key …] | 計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集存儲(chǔ)在新的有序集合 key 中 |
| ZLEXCOUNT key min max | 在有序集合中計(jì)算指定字典區(qū)間內(nèi)成員數(shù)量 |
| ZRANGE key start stop [WITHSCORES] | 通過索引區(qū)間返回有序集合指定區(qū)間內(nèi)的成員 |
| ZRANGEBYLEX key min max [LIMIT offset count] | 通過字典區(qū)間返回有序集合的成員 |
| ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] | 通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員 |
| ZRANK key member | 返回有序集合中指定成員的索引 |
| ZREM key member [member …] | 移除有序集合中的一個(gè)或多個(gè)成員 |
| ZREMRANGEBYLEX key min max | 移除有序集合中給定的字典區(qū)間的所有成員 |
| ZREMRANGEBYRANK key start stop | 移除有序集合中給定的排名區(qū)間的所有成員 |
| ZREMRANGEBYSCORE key min max | 移除有序集合中給定的分?jǐn)?shù)區(qū)間的所有成員 |
| ZREVRANGE key start stop [WITHSCORES] | 返回有序集中指定區(qū)間內(nèi)的成員,通過索引,分?jǐn)?shù)從高到低 |
| ZREVRANGEBYSCORE key max min [WITHSCORES] | 返回有序集中指定分?jǐn)?shù)區(qū)間內(nèi)的成員,分?jǐn)?shù)從高到低排序 |
| ZREVRANK key member | 返回有序集合中指定成員的排名,有序集成員按分?jǐn)?shù)值遞減(從大到小)排序 |
| ZSCORE key member | 返回有序集中,成員的分?jǐn)?shù)值 |
| ZUNIONSTORE destination numkeys key [key …] | 計(jì)算給定的一個(gè)或多個(gè)有序集的并集,并存儲(chǔ)在新的 key 中 |
| ZSCAN key cursor [MATCH pattern] [COUNT count] | 迭代有序集合中的元素(包括元素成員和元素分值) |
案例
-
zadd/zrange
- Withscores
-
zrangebyscore key 開始score 結(jié)束score
withscores
( 不包含
-
Limit 作用是返回限制
- limit 開始下標(biāo)步 多少步
zrem key 某score下對(duì)應(yīng)的value值,作用是刪除元素
zcard/zcount key score區(qū)間/zrank key values值,作用是獲得下標(biāo)值/zscore key 對(duì)應(yīng)值,獲得分?jǐn)?shù)
zrevrank key values值,作用是逆序獲得下標(biāo)值
zrevrange
zrevrangebyscore key 結(jié)束score 開始score