Redis-04-資料型別
阿新 • • 發佈:2020-09-19
-
-
# 檢視所有屬性名
keys * -
# 設定屬性的過期時間,應用場景:單點登入、熱點資料、過期時間
expire 屬性名 時間(以秒為單位)
# 檢視屬性剩餘時間
ttl 屬性名 -
# 檢視屬性型別
type 屬性名
-
1、String,字串
-
增
-
# 設定值
set 屬性名 屬性值
# 設定值的同時設定過期時間
setex 屬性名 過期時間 屬性值
# 設定值,如果該值不存在建立成功,如果該值存在,建立失敗(分散式鎖時常用)
setnx 屬性名 屬性值
# 批量設定多個值
mset 屬性名 屬性值 屬性名 屬性值 屬性名 屬性值 ......
msetnx 屬性名 屬性值 屬性名 屬性值 屬性名 屬性值 ......
# 設定物件,值為json字串
set 物件名 {屬性名:屬性值,屬性名:屬性值,屬性名:屬性值......}
set 物件名:屬性名 屬性值
#獲取屬性的值後修改屬性值
getset 屬性名 屬性值
-
-
查
-
# 查詢屬性值
get 屬性名
# 批量查詢屬性值
mget 屬性名 屬性名 ......
# 查詢物件的屬性值
get 物件名:屬性名 物件名:屬性名 ......
mget 物件名:屬性名 物件名:屬性名 ...... -
# 查詢屬性值的長度
-
-
刪
-
# 從當前資料庫中移除該值
move 屬性名 當前資料庫號
-
-
改、替換
-
# 替換字串,從初始字元值開始替換字元
getrange 屬性名 初始字元值 替換字元
-
-
追加
-
# 在字元的尾部追加字元,返回的是新字元的長度,如果該屬性不存在,相當於新建一個屬性
append 屬性名 屬性值
-
-
擷取
-
# 擷取字串,不改變原屬性值,結尾字元值為-1時,擷取到最後一個字元
getrange 屬性名 初始字元值 結尾字元值
-
-
判斷是否存在
-
# 判讀某個列是否存在,返回1,表明該值存在,返回0,表明該值不存在
exists 屬性名
-
-
自增、自減、步長
-
# 加1操作
incr 屬性名
# 減1操作
decr 屬性名
# 設定步長
# 增加
incrby 屬性名 步長
# 減少
decrby 屬性名 步長
-
-
應用場景
-
計數器
-
統計數量
-
物件快取儲存
-
2、List,列表
-
增
-
# 在列表的頭部設定值
lpush 列表名 列表值
lpush 列表名 列表值1 列表值2 列表值3 ......
# 在列表的尾部設定值
rpush 列表名 列表值
rpush 列表名 列表值1 列表值2 列表值3 ......
# 把列表中的最後一個值彈出,並把該值放到新的列表中
rpoplpush 原列表 新列表
-
-
查
-
# 獲取列表的值
lrange 列表名
# 獲取指定下標的值
lindex 列表名 下標
# 查詢列表長度
llen 列表名
-
-
改、替換
-
# 更新列表中指定下標的值,列表或者下標不存在,報錯
lset 列表名 下標 值
-
-
刪
-
# 刪除列表中的第一個元素
lpop 列表名
# 刪除列表中的最後一個元素
rpop 列表名
# 刪除指定的值,如果有重複值,可以指定移除幾個
lrem 列表名 個數 列表值
-
-
插入
-
# 在列表中的某一個元素之前或之後插入值
linsert 列表名 before或after 被插入的元素值 要插入的元素值
-
-
截斷
-
# 截斷列表,會改變列表中的值
ltrim 列表名 初始下標 結束下標
-
-
判斷是否存在
-
# 判斷列表是否存在
exists 列表名
-
-
應用場景
-
佇列
-
棧
-
3、Set,不可重複的集合
-
增
-
# 設定值
sadd 集合名 集合值
-
-
查
-
# 檢視集合值
smembers 集合名
# 查詢集合的長度
scard 集合名
# 隨機查詢集合中的某一個值
srandmember 集合名
# 隨機查詢集合中的某幾個值
srandmember 集合名 個數
-
-
刪
-
# 刪除集合中的某個元素
srem 集合名 值
# 隨機刪除集合中的某一個值
spop 集合名
-
-
移動
-
# 移動集合1中的某個值到另外一個集合2
smove 集合1 集合2 值
-
-
判斷是否存在
-
# 判斷某個值是否存在集合中
sismembers 集合名 值
-
-
差集、交集、並集
-
# 集合A - 集合B
sdiff A B
# 集合A ∩ 集合B
sinter A B
# 集合A ∪ 集合B
sunion A B
-
-
應用場景
-
共同關注
-
推薦好友
-
4、Hash,雜湊表,key-value
-
增
-
# 設定一個值
hset 雜湊表名 欄位名 欄位值
# 批量設定值
hmset 雜湊表名 欄位名1 欄位值 欄位名2 欄位值 ......
# 新增一個值,如果已經存在該值,則新增失敗
hsetnx 雜湊表名 欄位名 欄位值
-
-
查
-
# 查詢欄位值
hget 雜湊表名 欄位名
# 批量查詢值
hmget 雜湊表名 欄位名1 欄位名2 ......
# 查詢雜湊表全部的欄位名和值
hgetall 雜湊表名
# 只查詢雜湊表中的所有欄位
hkeys 雜湊表名
# 只查詢雜湊表中的所有欄位值
hvals 雜湊表名
# 查詢雜湊表的長度
hlen 雜湊表名
-
-
刪
-
# 刪除雜湊表中的某一個欄位
hdel 雜湊表名 欄位名
-
-
增量、減量
-
# 增加欄位值
hincrby 雜湊表名 欄位名 增量
# 刪除欄位值incr
hincrby 雜湊表名 欄位名 減量(負值)
-
-
判斷是否存在
-
# 判斷雜湊表中的某個欄位是否存在
hexists 雜湊表名 欄位名
-
-
應用場景
-
本質和String很相似,Hash適合做物件的儲存,String適合做字串的儲存
-
適合儲存物件或者易變動的資訊
-
5、ZSet、有序集合
-
增
-
# 增加一個值
zadd 集合名 序號 集合值
# 增加多個值
zadd 集合名 序號 集合值 序號 集合值 ......
-
-
查
-
# 檢視集合中的所有元素
zrange 集合名 0 -1
# 檢視集合中的元素個數
zcard 集合名
# 查詢某一個區間的值的個數
zcount 集合名 最小值 最大值
-
-
刪
-
# 移除集合中的某個元素
zrem 集合名 集合值
-
-
排序
-
# 升序語法:zrangebyscore 集合名 最小值 最大值 [顯示key] [限制個數]
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
# 從小到大排序,只顯示value
zrangebyscore 集合名 -inf +inf
# 從小到大排序,顯示key和value
zrangebyscore 集合名 -inf +inf withscores
# 降序語法:zrevrange key start stop [WITHSCORES]
zrevrange 集合名 開始值 結束值 [WITHSCORES]
-
-
應用場景
-
排序
-
排行榜
-
帶權重執行操作
-
6、Geospatial,地理位置
原理:底層是Zset,所以可以用Zset的命令操作Geo
官方文件:https://www.redis.net.cn/order/3685.html
-
新增地理位置,geoadd
-
# 語法:geoadd key longitude latitude member
# 有效的經度從-180度到180度,有效的緯度從-85.05112878度到85.05112878度
geoadd 集合名 經度 緯度 名稱 [經度 緯度 名稱 ......]
-
-
查詢地理位置,geopos
-
# 語法:geopos key member [member ...]
geopos 集合名 集合值 [集合值 ......]
-
-
查詢距離,geodist
-
# 語法:geodist key member1 member2 [m|km|ft|mi]
geodist 集合名 元素1 元素 2 [里程單位]
-
-
附近的人,以指定位置為中心,georadius
-
# 語法:georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
georadius 集合名 經度 維度 半徑 里程單位 [經緯度位置] [距離] [距離hash表示] [count 個數] [遞增|遞減]
# 根據 指定位置 的距離半徑查詢附近的人
georadius 集合名 經度 維度 半徑 里程單位
# 根據 指定位置 的距離半徑查詢附近的人,以及直線距離
georadius 集合名 經度 維度 半徑 里程單位 WITHDIST
# 根據 指定位置 的距離半徑查詢附近的人,以及直線距離雜湊表示
georadius 集合名 經度 維度 半徑 里程單位 WITHHASH
# 根據 指定位置 的距離半徑查詢附近的人,以及定位
georadius 集合名 經度 維度 半徑 里程單位 WITHCOORD
# 根據 指定位置 的距離半徑查詢附近的人,並限制人數
georadius 集合名 經度 維度 半徑 里程單位 COUNT 個數
-
-
附近的人,以集合中存在的元素為中心,georadiusbymember
-
# 語法:georadiusbymember key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]
georadiusbymember 集合名 元素 半徑 里程單位 [經緯度位置] [距離] [距離hash表示] [count 個數] [遞增|遞減]
# 根據 集合中的元素 的距離半徑查詢附近的人
georadiusbymember 集合名 元素 半徑 里程單位
# 根據 集合中的元素 的距離半徑查詢附近的人,以及直線距離
georadiusbymember 集合名 元素 半徑 里程單位 WITHDIST
# 根據 集合中的元素 的距離半徑查詢附近的人,以及直線距離雜湊表示
georadiusbymember 集合名 元素 半徑 里程單位 WITHHASH
# 根據 集合中的元素 的距離半徑查詢附近的人,以及定位
georadiusbymember 集合名 元素 半徑 里程單位 WITHCOORD
# 根據 集合中的元素 的距離半徑查詢附近的人,並限制人數
georadiusbymember 集合名 元素 半徑 里程單位 COUNT 個數
-
-
查詢距離,距離用編碼顯示,geohash
-
# 語法:geohash key member [member ...]
geohash 集合名 元素1 [元素2 ......]
-
7、HyperLogLog,計數
-
應用場景
-
網站訪問量統計
-
-
增
-
# 語法:pfadd key element [element ...]
pfadd 集合名 元素 [元素 ......]
-
-
統計
-
# 語法:pfcount key [key ...]
pfcount 集合 [集合 ......]
-
-
合併
-
# 語法:pfmerge destkey sourcekey [sourcekey ...]
pfmerge 目標集合 原集合 [原集合 ......]
-
8、BitMap,位運算場景
-
應用場景
-
儲存結果為是或否的資料,如:是否打卡、是否登入、是否為活躍使用者......
-
-
設定值
-
# 語法:setbit key offset value
setbit 集合名 位標誌 值
-
-
獲得值
-
# 語法:getbit key offset
getbit 集合名 位標誌
-
-
統計值
-
# 語法:bitcount key [start end]
bitcount 集合名 [開始 結束]
-