日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis常见数据类型_Redis通用指令

發布時間:2024/7/5 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis常见数据类型_Redis通用指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis常見數據類型

redis本身就是一個Map結構, 所有數據都采用key:value的形式, redis中的數據類型指的是value的類型, key部分永遠是字符串

string(類似Java String)

  • 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)

內部結構圖:

  • hash類型數據的基本操作
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屬性是否存在
  • hash類型數據擴展操作
hkeys key //獲取哈希表中所有屬性名 hvals key //獲取哈希表中所有的屬性值

  • 對hash表中數字型value進行增長操作
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

  • list類型數據基本操作
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重復
  • list擴展操作
//從左端拿數據, 確保可以在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一樣

  • set基本操作
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個數
  • set擴展操作
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進行排序操作.

  • sortedSet基本操作
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]
  • sortedSet擴展操作
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的通用操作

  • key的基本操作
del key //刪除指定key exists key //判斷key是否存在 type key //獲取key對應的value數據類型
  • key擴展操作
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通用指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。