Redis基礎型別常用操作命令
概念:Redis是用C語言開發的一個開源的高性能鍵值對資料庫,
特征:
- 資料間沒有必然的聯系
- 內部采用單執行緒機制進行作業
- 高性能
- 多資料型別支持
- 字串型別 String
- 串列型別 List
- 散列型別 Map
- 集合型別 Set
- 有序集合型別 SortedSet
- 持久化支持
應用場景
- 為熱點資料加速查詢;如:熱點商品、熱點新聞、熱點資訊等高訪問量資訊,
- 任務佇列;如:秒殺、搶購、購票等,
- 即時資訊查詢;如:排行榜等,
- 時效性資訊控制;如:驗證碼、投票控制等,
- 分布式資料共享;如:分布式架構中的session等,
- 訊息佇列
- 分布式鎖
基礎資料型別之: String
單個string型別的存盤空間為512MB
string基本操作
-
添加或修改資料
set key value -
獲取資料
get key -
洗掉資料
del key -
設定過期時間(默認單位為秒)
expire key second -
追加資訊到初始value后邊
append key value -
添加/修改多個資料
mset key1 value1 key2 value2... -
獲取多個資料
mget key1 key2 ... -
獲取字串長度
strlen key -
設定key的生命周期 控制生命周期
setex key seconds value (秒) psetex key millisexxonds value (毫秒) -
key的設定約定
與資料庫中的表-主鍵-欄位一一對應
表名 主鍵名 主鍵值 欄位名 eg1 order id 443523454 name eg2 equire id 435432543 type eg3 news id 45435454 title
基礎資料型別之:Hash
- 存盤需求: 對一系列存盤的資料進行編排,方便管理,典型應用存盤物件資訊
- 存盤結構:一個存盤空間存盤多個鍵值對資料
- hash型別:底層使用哈希表結構實作資料存盤
hash存盤結構優化
- 如果field數量較少,存盤結構優化為類陣列結構
- 如果field數量較多,存盤結構使用HashMap結構
hash型別基本操作
-
添加/修改資料
hset key field value -
獲取資料
hget key field hgetall key -
洗掉資料
hdel key field [field2 ...] -
添加或洗掉多個資料
hmset key field1 value1 field2 value2 ... -
獲取多個資料
hmget key field1 field2 ... -
獲取hash表中的欄位的數量
hlen key -
獲取hash表中是否存在指定的欄位
hexists key field -
獲取哈希表中所用的欄位名或欄位值
hkeys key hvalues key -
設定指定欄位的數值資料增加指定范圍的值
hincrby key field increment hincrbyfloat key field increment -
如果key值下的field存在則不做操作 不存在則添加進去
hsetnx key field value
hash型別資料操作的注意事項
-
hash型別下的value只能存盤字串,不允許存盤其他資料型別,不存在嵌套現象,如果資料未獲取到,對應的值為(nil)
-
每個hash存盤的鍵值對上限為
$$
2^{32}-1
$$
個鍵值對 -
hash型別十分貼近物件的存盤形式,并且可以靈活洗掉物件屬性,但hash設計初衷并不是為了存盤大量物件而設計的,切記不可濫用,更不可將hash作為物件串列使用
-
hgetall操作可以獲取全部屬性,如果內部field過多,遍歷整體資料效率會很低,有可能會成為資料訪問瓶頸
應用場景
- 電商網站購物車設計實作
基礎資料型別之:list
- 資料存盤需求:存盤多個資料,并對資料進入存盤Jon關鍵的順序進行區分
- 需要的存盤結構:一個存盤空間存盤多個資料,并且資料可以體現進入順序
- list型別:保存多個資料,底層使用雙向鏈表存盤結構實作
list型別是雙向鏈表存盤的
list基本操作
-
添加/修改資料
lpush key value1 value2 [value3] ... //從list鏈表左側添加 rpush key value1 value2 [value3] ... //從list右側添加 -
獲取資料
lrange key start stop //指定鏈表起始結束位置中的value //在獲取未知長的的list型別的時候,想查看所有的value可以使用 -1表示倒數第一個 lrange key start -1 lindex key index //獲取鏈表中指定位置的值 llen key //獲取鏈表的長度 -
獲取并移除資料
lpop key rpop key -
規定時間內獲取并移除資料(阻塞式資料獲取)
blpop key1 [key2] timeout //指定時間內取出并移除key值對應的value,若timeout超時仍未取出則回傳空值(nil) 若本來沒有 其他客戶端在等待的時候添加了這個key的value則做操作 任務佇列 brpop key1 [key2] timeout -
移除指定資料
lrem key count value
list型別資料操作注意事項
- list中保存的資料都是string型別的,資料總容量有限最多 2^32-1個元素
- list具有索引概念,但操作資料時通常以佇列的形式進行入隊出隊操作,或以堆疊的形式進行入堆疊出堆疊操作
- 獲取全部操作結束資料的索引設定為-1
- list可以對資料進行分頁操作,通常第一頁的資訊來自list,第二頁及更多的資料資訊通過資料庫進行查詢加載
基礎資料型別之:set
- 存盤需求:存盤大量的資料,在查詢方面提供更高的效率
- 存盤結構:能夠保存大量的資料,高效的內部存盤機制,便于查詢
- set型別:與hash存盤結構完全相同,僅存盤鍵,不存盤值(nil),并且值不允許為空
set存盤結構是string型別的無序集合,內部存盤時hash存盤結構,因此添加、查找、洗掉的復雜度都是O(1)
set基本操作
-
添加不重復的資料
sadd key value -
獲取存盤的所有資料
smembers key -
洗掉資料
strem key member1 [member2] -
獲取集合資料總量
scard key -
判斷集合中是否包含指定資料
sismember key member -
隨機獲取集合中指定數量的資料
srandmember key [count] -
隨機獲取集合中某個資料并將該資料移出集合
apop key -
兩個集合的交、并、差集
sinter key1 [key2] sunion key1 [key2] adiff key1 [key2] -
求兩個集合的交、并、差集并存盤到指定集合中
sinterstore destination key1 [key2] sunionstore destination key1 [key2] sdiffstore destination key1 [key2] -
將指定資料從原始集合中移動到目標集合中
smove source destination member
注意事項
-
set型別不允許有重復資料,如果添加的資料在set中已存在,將只保留一份
-
set雖然與hash存盤結構相同,但無法啟用hash中存盤值的空間

基礎資料型別:sortedSet
存盤需求:資料排序有利于資料的展示效果,需要提供一種可以根據自身特征進行排序的方式
存盤結構:可以保存排序的資料
存盤型別:在set的存盤結構上添加可排序欄位
基本操作
-
添加資料
zadd key scorel member [score2 member2] -
獲取全部資料
zrange key start stop [witchscores] zrevrange key star stop [witchscores] -
洗掉資料
zrem key member [member ...] -
按條件查詢資料
zrangebyscore key min max [withscores] [limit] zrevrangebyscore key max min [withscores] -
條件洗掉資料
zremrangebyrank key start stop //start stop 表示索引的開始結束位置 zremrangebyscore key min max //min max表示排序的最小到最大位置 -
獲取集合資料數量
zcard key zcount key min max -
集合交、并操作
zinterstore destination numkeys key [key ...] zunionstore destination key [key ...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/29458.html
標籤:NoSQL
下一篇:Redis是什么?看這一篇就夠了




