Redis基礎命令
目錄- Redis基礎命令
- Redis資料結構介紹
- Redis通用命令
- String型別
- key的層級結構
- Hash型別
- List型別
- Set型別
- SortedSet型別
Redis資料結構介紹
redis是一個key-value的資料庫,key一般是String型別,但是value的型別多種多樣
前五種是基本型別:
- String:Hello World
- Hash:{name:"Tom",age:21}
- List:[A->B->C]
- Set:{A,B,C}
- SortedSet:{A:1,B:2,C:3}
- GEO:{A:(120.3,30.5)}
- BitMap:0100011101001010101
- HyperLog:0100011101001010101
Redis通用命令
添加或修改鍵值對
set age 21
獲取key對應的value
get age
查詢所有key
KEYS *
洗掉key
DELETE key1 key2 ...
判斷key是否存在
EXISTS age
給key設定有效期20秒,有效期到自動洗掉
EXPIRE age 20
查看一個key的剩余有效期,回傳值為正數表示秒,-2表示已洗掉,-1表示永久有效
TTL age
String型別
批量添加
MSET k1 v1 k2 v2 k3 v3
批量獲取
MGET k1 k2 k3
自增
INCR age
指定步長自增自減
INCRBY age -2
浮點型數字指定步長自增
set score 10.1
INCRBYFLOAT score 0.5
添加一個鍵值對,不存在才添加
set age 21
SETNX age 21
添加一個鍵值對,并設定有效期
SETEX name1 10 Jack
key的層級結構
redis的key允許多個單詞形成層級結構,多個單詞之間用':'隔開,如下是xust公司id為1和2的user,xust公司id為1和2的狗
set xust:user:1 '{"id":1,"name":"Jack","age":21}'
set xust:user:2 '{"id":2,"name":"Jhon","age":13}'
set xust:dog:1 '{"id":1,"name":"AHuang","age":2}'
set xust:dog:2 '{"id":2,"name":"ABai","age":5}'
Hash型別
String型別將物件序列化為Json字串后存盤,修改某個欄位時不方便
xust:user:1 {"id":1,"name":"Jack","age":21}
Hash結構可以將物件中的每個欄位獨立存盤,可以針對單個欄位做CRUD
field value
xust:user:1 name Jack
age 21
添加或修改hash型別key的field的值
HSET xust:user:3 name Lucy
HSET xust:user:3 age 12
獲取一個hash型別key的field的值
HGET xust:user:3 age
批量添加多個hash型別key的field的值
HMSET xust:user:4 name Tim age 14 sex man
批量獲取多個hash型別key的field的值
HMGET xust:user:4 name age sex
獲取一個hash型別key中所有field和value
HGETALL xust:user:4
獲取一個hash型別key中所有field
HKEYS xust:user:4
獲取一個hash型別key中所有value
HVALS xust:user:4
讓一個hash型別key的欄位值自增并指定步長
HINCRBY xust:user:4 age 2
添加一個hash型別的key的field值,前提是這個field不存在,否則不執行
HSETNX xust:user:4 age 21
List型別
類似Java中的LinkedList,可以看作是一個雙向鏈表,既支持正向檢索也支持反向檢索
特征也與LinkedList類似:
- 有序、
- 元素可以重復‘
- 插入洗掉塊
- 查詢速度一般
常用來存盤有序資料,如朋友圈點贊串列
向串列左側插入一個或多個元素
LPUSH users 1 2 3
移除并回傳串列左側第一個元素,沒有則回傳nil
LPOP users 1
向串列右側插入一個或多個元素
RPUSH users 4 5 6
移除并回傳串列右側第一個元素
RPOP users 1
回傳一段角標范圍內所有元素
LRANGE users 1 3
BLPOP和BRPOP與LPOP和RPOP類似,只是沒有元素時等待指定時間,不是直接回傳nil
等待20秒
BLPOP users 20
使用LPUSH+LPOP或RPUSH+RPOP可模擬堆疊
使用LPUSH+RPOP或RPUSH+LPOP可模擬佇列
Set型別
類似Java中的HashSet,可看作一個value為null的HashMap
具備與HashSet類似的特征:
- 無序
- 元素不可重復
- 查找快
- 支持交集、并集、差集等功能
向set中添加一個或多個元素
SADD s1 a b c
移除set中指定元素
SREM s1 a
回傳set中元素個數
SCARD s1
判斷一個元素是否存在于set中
SISMEMBER s1 b
獲取set中所有元素
SMEMBERS s1
求兩個集合的交集
SINTER s1 s2
求兩個集合的差集
SDIFF s1 s2
求兩個集合并集
SUNION s1 s2
SortedSet型別
一個可排序的set集合,類似Java中的TreeSet,但底層資料結構差別很大,SortedSet每一個元素都帶有一個score屬性,可基于score排序,低層實作是一個跳表(SkipList)加hash表
SortedSet具備下列特性:
- 可排序
- 元素不重復
- 查詢速度快
經常被用于實作排行榜
添加一個或多個元素到sorted set,若已經存在則更新score值
ZADD students 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
洗掉sorted set中一個指定元素
ZREM students Tom
獲取sorted set中指定元素的score值
ZSCORE students Jack
獲取sorted set中指定元素的排名,從0開始
ZRANK students Rose
獲取sorted set中元素個數
ZCARD students
統計score值在給定范圍內的元素個數
ZCOUNT students 0 80
讓sorted set中指定元素指定步長自增
ZINCRBY students 2 Jack
按照score排名后獲取指定排名范圍內的元素
ZRANGE students 0 2
按照score排名后獲取指定score范圍內的元素
ZRANGEBYSCORE students 0 80
求差集,交集,并集與之前類似
排名默認都是升序,Z后添加REV為倒序,如ZRANGE-->ZREVRANGE
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/538882.html
標籤:其他
