1.概述
這一小節,我們主要來研究一下redis的五大類型的基本使用,數據類型如下:
redis我們接下來看一看這八種類型的基本使用。我們可以在redis的官網查詢這些命令:Commands | Docs,同時我們也可以用help 數據類型查看命令的幫助文檔。
2. 常用命令的使用
可以用help generic查看一些基本命令的使用
2.1 查看redis中所有的key
KEYS pattern
比如:
KEYS user //查看key為user的數據
KEYS *user* //查看包含user的key
注:該命令會掃描redis里面所有的key,不建議在生產上使用。
2.2 刪除指定的key
Del key1 key2 key3
2.3 判斷某個key是否存在
EXISTS key
2.4 給key設置一個過期時間
EXPIRE key
2.5 更換庫
select 庫的編號
3. string類型
3.1 基本操作
3.1.1 增加一個1字符串
set key value
3.1.2?設置key以及超時時間
set key value ex 時間(單位秒)
3.1.3?不存在才能插入key
set key value nx
3.1.4?根據key獲取字符串
get key
3.2?批量操作
3.2.1?更新多個key
mset key1 v1 key2 v2
3.2.2?獲取多個key
mget key1 key2
3.3?數值操作
3.3.1?遞增
incr key?
3.3.2?遞減
decr key
3.3.3?增加某個數值
incrby key 數值
3.3.4?減少一個數值
decrby key 數值
3.4 復合操作
3.4.1?獲取值后再更新
getset key value
3.4.2?不存在才能更新
setnx key value
3.4.3?更新值和超時時間
setex key 時間 value?
3.4.4?獲取值后刪除
getdel key
3.5?子字符串操作
3.5.1?獲取key中字符串長度
strlen key
3.5.2?獲取子字符串
getrange key 開始位置 結束位置
4. hash類型
4.1?基本操作
4.1.1?左側依次插入多條元素
lpush key v1 v2
4.1.2?右側插入多條元素
rpush key v1 v2
4.1.3?左側彈出多個元素
lpop key 元素個數
4.1.4?右側彈出多個元素
rpop key 元素個數
4.1.5?查看元素個數
llen key
4.1.6?查看list中的某個區間內的元素
lrange key 開始位置 結束位置
注意:lrange key 0 -1 表示查看list中所有數據 & 開始位置從0開始
4.1.7?根據索引獲取某個元素
lindex key 索引
4.1.8?查找某個元素的位置
lpos 元素
4.2?阻塞隊列
? ?在獲取元素的時候,會一直等待,知道有元素返回或者超時,才會被喚醒,其實就是阻塞隊列。
4.2.1?左側插入元素
blpush key v1 v2
4.2.2?右側插入元素
brpush key v1 v2
4.2.3?左側彈出元素(可以監聽多個list)
blpop key1 key2 超時等待時間
4.2.4 右側彈出元素(可以監聽多個list)
brpop key1 key2 超超時等待時間
4.3?復合操作
4.3.1?彈出key1左側元素并從左側插入到key2
lpushlpop key1 key2
4.3.2?左側彈出key1左側元素并從右側插入到key2
lpushrpop key1 key2
4.3.3?彈出key1右側元素并從左側插入到key2
rpushlpop key1 key2
4.3.4?彈出key1右側元素并從右側插入到key2
rpushrpop key1 key2
4.3.5?從key1某側彈出多個元素并放入到key2
lmove key1 key2 元素從哪邊彈出(left/right) 元素從哪邊插入(left/right)
注意:該命令為高版本命令
5.?hash類型
5.1 基本操作
5.1.1?設置hash的某個key的某個field的值
hset key field value
5.1.2?獲取hash的某個key的某個field的值
hget key field
5.1.3?判斷某個key中的某個field是否存在
hexists key field
5.1.4?如果某個key中的某個field不存在才能插入
hsetnx key field value
5.1.5?刪除某個key的某個field
del key field
5.2?遞增操作
hash里面也可以存儲數值
5.2.1?增加整數
hincrby key 整數
5.2.2 增加小數
hincrbyfloat key 小數
5.3 批量操作
5.3.1 查看hash中的所有key和value
hgetall key
5.3.2 查看所有key
hkeys key
5.3.3 查看所有的value
hvals key
注意:上面三個命令不能再生產上面隨便使用,會阻塞redis。
5.3.4 查看redis中部分數據
hscan key cursor?
注意:hscan 會將一個hash拆成多份內容,一次返回其中一份,這樣就不會阻塞redis
6. set類型
6.1 基本操作
6.1.1 添加多個元素到set
sadd key val1 val2
6.1.2 獲取set中所有元素
smembers key
6.1.3 判斷元素是否在set里
sismember key val
6.1.4 獲取set元素個數
scard key
6.1.5 隨機從set中獲取一個元素
spop key
6.1.6?把一個元素從一個set挪到另一個set
smove key1 key2 val
6.1.7?從集合中刪除多個元素
srem key val1 val2
6.2 集合操作
6.2.1 求兩個集合交集
sinner key1 key2
6.2.2 求兩個集合差集
sdiff key1 key2
6.2.3 求兩個集合并集
sunion key1 key2
7. sorted set類型
sorted set相當于java中的hashset,只是它是按照score進行排序。
7.1?基本操作
7.1.1 添加元素
zadd key score1 val1 score2 val2
7.1.2 查詢元素個數
zcard key
7.1.3 查詢元素的score1到score2 范圍內的個數
zcount key score1 score2
7.1.4 查詢元素的score
zscore key
7.1.5 查詢元素排在第幾位
zrank key val1
7.1.6 增加元素的分數
zincrby key 增加的分數 val
7.1.7 彈出score最大的元素
zpopmax key
7.1.8 彈出score最小的元素
zpopmin key
7.1.9 打印score在某個范圍內的元素
zrange key score1 score2 byscore withscores
7.1.10 查看某個元素的排名
zrank key val
7.2 集合操作
7.2.1 交集
zinter key1 key2
7.2.2 差集
zdiff key1 key2
7.2.3 并集
zunion key1 key2
8. bitmap類型
8.1 基本操作
8.1.1 設置某位的值
setbit key offset val
8.1.2 獲取某位的值
getbit key offset
8.1.3 統計1的個數
bitcount key 開始位置 結束位置
8.1.4 位運算
bitop (or/and/xor/not) destkey key1 key2
8.1.5 查找第一個出現該位元素的位置
bitpos key 元素值 開始位置 結束位置
9. geo類型
9.1 基本操作
9.1.1 添加地理元素
GEOADD key longitude latitude member [longitude latitude member ...]
9.1.2 返回元素的經緯度
geopos key member1 member2
9.1.3 返回兩點間的距離
GEODIST key member1 member2 [m|km|ft|mi]
10. HyperLogLog類型
hyperLogLog主要是用來統計一堆元素的基數的數據類型,基數就是這堆元素里面不重復的元素個數。
10.1 基本操作
10.1.1 添加元素
pfadd key val1 val2
10.1.2 統計基數個數
pfcount key?
10.1.3 合并兩個hyperLogLog
pfmerge destkey key1 key2
11. 總結
本文主要是介紹redis的五大數據類型和三中擴展類型的基本使用,無外乎增刪改查再加上集合之間操作。