Redis常見數據類型
redis本身就是一個Map結構, 所有數據都采用key:value的形式, redis中的數據類型指的是value的類型, key部分永遠是字符串
string(類似Java String)
set key value //存儲數據
get key value //獲取數據
del key value //刪除數據
mset key1 value1 key2 value2 key3 value3 ... //存儲多個string
mget key1 key2 key3 ...//獲取多個key對應的string, 若value不存在返回nil(null)
strlen key //獲取value的長度
append key value //在原始的信息的基礎上, 附加信息, 若key不存在, 則新建
針對數字型value的自增, 自減(自增, 自減的操作是建立在value必須是數字, 不能是其他字符串)
incr key //key對應value進行自增1
incrby key increment //key對應的value進行自增increment個大小, 此處的increment必須是整數, 不能是浮點數
incrbyfloat key increment //與上一個命令一樣, 此處增長的浮點數
decr key //key對應的value進行自減1
decr key increment //key對應的value自減increment個大小
setex key seconds value //設定當前key-value的生命周期為seconds秒, 當TTL為0時, 該鍵值對自動銷毀
psetex key milliseconds value //設定生命周期為milliseconds
注: value最大的存儲容量為512MB, 數值計算最大范圍就是Long的范圍.
hash(類似Java HashMap)
內部結構圖:
hset key field value //添加hash數據
hget key field//獲取key對應的hash value數據
hgetall key //獲取key對應hash表中所有數據, 包括所有field-value
hdel key field1 field2 ... //刪除key對應的hash數據
hmset key field1 value1 field2 value2 field3 value3...//添加多個hash數據
hmget key field1 field2 field3 //通過field獲取對應value數據
hlen key //獲取hash表中字段個數
hexists key field //判斷field屬性是否存在
hkeys key //獲取哈希表中所有屬性名
hvals key //獲取哈希表中所有的屬性值
hincrby key field increment //value增長increment大小
hincrbyfloat key field increment //value增長變為浮點數
注:
1.hash表中的value只能存儲字符串, 不能存儲其他類型的數據(例如: list, hash等), 禁止套娃.
2.hash表可存儲2^32-1個鍵值對
3.避免使用hash存儲大對象
4.使用hgetall是取出對飲key中所有hash數據, 若數據較多, 會造成性能問題
list(類似Java LinkedList)
內部結構圖: list的內部結構就是一個雙向鏈表, 類似于Java中的LinkedList
lpush key value1 value2 [value3...] //從list左端插入數據, 數據一個一個往左端進入
rpush key value1 value2 [value3...] //從list右端插入數據, 數據一個一個往右端進入
lrange key start stop //獲取索引從start~stop之間的數據, 索引默認從0開始, length-1結束
lindex key index //獲取指定index下的數據
len key //獲取list長度
lpop key //從左端移除數據
rpop key //從右端移除數據
lrem key count value //刪除key中指定count個數的value, list中可能存在value重復
//從左端拿數據, 確保可以在seconds時間內拿到數據, 若該時間內拿不到數據就返回null
blpop key seconds
brpop key seconds //從右端拿數據, 效果同上//確保在seconds時間內從source中rpop拿數據, 然后將數據lpush到target中, 超出時間限制, 則不執行操作
brpoplpush source target seconds
注:
1.list中數據都是string, 也不能嵌套其他數據類型, 數據容量為2^32-1個元素
2.可以使用list模擬隊列, 棧等數據結構
3.可以使用 lrang key 0 -1 來獲取key中所有的元素
set(類似Java HashSet)
內部結構圖: set內部結構就是hash的結構, 但是set只使用key來存儲(key不允許重復), 效果與Java中的HashSet一樣
sadd key member1 member2... //添加數據
smembers key //獲取key對應所有member數據
srem key member1 member2... //刪除key對應的member數據
scard key //獲取key對應的member數量
sismember key member //判斷member是否包含在key中, 類似于contains
srandmember key [count] //隨機獲取key對應的member數據, 可以在后面指定member個數
spop key [count] //隨機獲取key對應的member數據, 并將其移除, 可指定member個數
sinter key1 key2 ...//獲取多個set的交集
sunion key1 kye2 ...//獲取多個set的并集
sdiff key1 key2...//獲取多個set的差集sinterstore target key1 key2...//獲取多個集合的交集, 并將其存入target中
sunionstore target key1 key2...//獲取多個集合的并集, 并將其存入target中
sdiffstore target key1 key2...//獲取多個集合的差集, 并將其存入target中smove source target member //將source中的member數據移動到target中
sortedset(類似Java TreeSet)
內部結構: 相比于set, 多增加了score屬性, 在sortedSet中, Redis根據score進行排序操作.
zadd key score1 member1 score2 member2 score3 member3...//添加數據
zrange key start stop [withscores] //獲取索引start~stop之間的數據 withscores代表結果可以輸出scores
zrevrange key start stop [witchscores] //反向獲取
zrem key member1 member2 //刪除key對應的member數據zrangebyscore key min max [withscores] [limit] //按條件獲取, min,max代表score范圍, limit與mysql的limit效果一樣
zrevrangebyscore key max min [withscores] //反向獲取zremrangebyrank key start stop //按照索引位置進行刪除
zremrangebyscore key min max //按照score大小范圍進行刪除zcard key //獲取集合數據總量
zcount key min max //按照score范圍獲取//求交集, 并將返回的結果存入target中, numberkeys指定當前key的數量
zinterstore target numkeys key [key...]
//求并集
zunionstrore target numkeys key [key]
zrank key member //獲取對應member的索引
zrevrank key member //獲取反向的索引
zscore key member //獲取對應member的score值
zincrby key increment member //對member進行增長increment大小
注:
score的存儲大小為64位
score可以存儲double類型, 但是也可能存在精度丟失
sortedSet底層還是set, 因此不能添加重復的member, 出現member重復, 則后一個的score會將前一個的score覆蓋
Redis基本數據的應用場景
Tips 1:redis用于控制數據庫表主鍵id,為數據庫表主鍵提供生成策略,保障數據庫表的主鍵唯一性 Tips 2:redis 控制數據的生命周期,通過數據是否失效控制業務行為,適用于所有具有時效性限定控制的操作 Tips 3:redis應用于各種結構型和非結構型高熱度數據訪問加速 Tips 4:redis 應用于購物車數據存儲設計 Tips 5:redis 應用于搶購,限購類、限量發放優惠卷、激活碼等業務的數據存儲設計 Tips 6:redis 應用于具有操作先后順序的數據控制 Tips 7:redis 應用于最新消息展示 Tips 8:redis 應用于隨機推薦類信息檢索,例如熱點歌單推薦,熱點新聞推薦,熱賣旅游線路,應用APP推薦,大V推薦等 Tips 9:redis 應用于同類信息的關聯搜索,二度關聯搜索,深度關聯搜索 Tips 10:redis 應用于同類型不重復數據的合并、取交集操作 Tips 11:redis 應用于同類型數據的快速去重 Tips 12:redis 應用于基于黑名單與白名單設定的服務控制 Tips 13:redis 應用于計數器組合排序功能對應的排名 Tips 14:redis 應用于定時任務執行順序管理或任務過期管理 Tips 15:redis 應用于及時任務/消息隊列執行管理 Tips 16:redis 應用于按次結算的服務控制 Tips 17:redis 應用于基于時間順序的數據操作,而不關注具體時間
Redis通用指令
Key的通用操作
del key //刪除指定key
exists key //判斷key是否存在
type key //獲取key對應的value數據類型
expire key seconds //設置key的有效時間為seconds秒
pexpire key milliseconds //設置key的有效時間為milliseconds毫秒
//key的過期時間設置效果與上面一樣, 區別在于下面這個用于unix平臺設置
expireat key seconds //設置key的有效時間為seconds秒
pexpireat key milliseconds //設置key的有效時間為milliseconds毫秒
ttl key //獲取key的有效時間(秒單位)
pttl key //獲取key有效時間(毫秒單位)
persist key //將當前key的時效性切換到永久
keys pattern //查詢key, *代表所有, ?代表匹配任意一個字符, []代表匹配其中某一個字符
rename key newKey //為key改名
renamex key newKey //Unix平臺改名
數據庫通用操作 Redis將數據庫分為16個, 各個數據庫之間相互獨立
select index //切換數據庫, index代表數據庫下標
quit //退出
ping //發送消息, 效果與網絡中ping一樣
move key db //將key移動到另外一個db中
dbsize //數據庫大小
flushdb //當前數據庫進行清除操作
flushall //所有數據庫進行刪除操作
創作挑戰賽 新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔 為你收集整理的Redis常见数据类型_Redis通用指令 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。