免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      細說redis數(shù)據(jù)類型

      本文主要講解redis的6種數(shù)據(jù)類型。

      string

      redis的string可以存儲3種數(shù)據(jù)類型:string,整數(shù)和浮點數(shù)。

      常見的操作如下

      命令名稱

      示例

      描述

      set

      set key value

      設置鍵值對

      get

      get key

      獲取值

      incr

      incr key

      遞增值

      decr

      decr key

      遞減值

      strlen

      strlen key

      獲取字符串長度

      incrby

      incrby key increment

      增加指定數(shù)字

      decrby

      decrby key decrement

      減少指定數(shù)字

      append

      append key

      value

      向尾部添加值

      getset

      getset

      key

      value

      取值并賦值

      setnx

      setnx

      key

      value

      當value不存在時賦值

      String的數(shù)據(jù)結構為簡單動態(tài)字符串(Simple Dynamic String,縮寫SDS),采用預分配冗余空間減少內(nèi)存的頻繁分配,當value長度小于1m時,每次擴大1倍,當大于1m時每次多分配1m的空間,最大為512m。

      使用場景

      ①計數(shù)器

      ②共享session

      ③setnx實現(xiàn)分布式鎖

      list

      list是列表結構,可以存儲有序、可重復的元素,獲取頭部或尾部附近的記錄是極快的

      list的元素個數(shù)最多為2^32-1個(40億)

      命令名稱

      示例

      描述

      lpush

      lpush key v1,v2…

      列表左邊插入

      lpop

      lpop key

      列表左邊彈出

      rpush

      rpush key v1,v2…

      列表右邊插入

      rpop

      rpop key

      列表右邊彈出

      lpushx

      lpushx key value

      將數(shù)值插入列表頭部

      rpushx

      rpushx key value

      將值插入列表尾部

      llen

      llen key

      獲取列表中元素個數(shù)

      lindex

      lindex key index

      獲取列表中的下標

      lrange

      lrange key start end

      返回列表中指定區(qū)間的元素,區(qū)間通過start和end指定

      lrem

      lrem key count

      value

      刪除列表中與value相等的元素

      當count>0時, lrem會從列表左邊開始刪除;當count<0時,

      lrem會從列表后邊開始刪除;當count=0時, lrem刪除所有值

      為value的元素

      lset

      lset key index

      value

      將列表index位置的元素設置成value的值

      ltrim

      ltrim key start

      end

      對列表進行修剪,只保留start到end區(qū)間

      rpoplpush

      rpoplpush

      key1 key2

      從key1列表右側彈出并插入到key2列表左側

      brpoplpush

      brpoplpush

      key1 key2

      從key1列表右側彈出并插入到key2列表左側,會阻塞

      list底層有多種數(shù)據(jù)類型,數(shù)據(jù)量少的時候是ziplist壓縮列表,內(nèi)存是連續(xù)分配的,當元素個數(shù)超過某個值時轉為linkedlist雙向鏈表,redis3.2之后數(shù)據(jù)量較多時改為quicklist。因為普通的鏈表需要附加指針空間,會浪費空間,加重內(nèi)存碎片化。redis將鏈表和ziplist結合組成quicklist。

      使用場景:

      ①用戶列表,商品列表,評論列表等

      ②消息隊列

      ③棧

      set

      無序不重復,集合中最大的成員數(shù)為 2^32 – 1

      命令名稱

      示例

      描述

      sadd

      sadd key v1 v2…

      為集合添加新成員

      srem

      srem key v1 v2 …

      刪除集合指定成員

      smembers

      smembers key

      獲取集合中所有元素

      spop

      spop key

      返回集合中一個隨機元素,并將該元素刪除

      srandmember

      srandmember key

      返回集合中一個隨機元素,不會刪除該元素

      scard

      scard key

      獲取集合中的數(shù)量

      sinter

      sinter key1 key2 …

      求多集合的交集

      sdiff

      sdiff key1 key2…

      求多集合的差集

      sunion

      sunion key1 key2…

      求多集合的并集

      set底層有兩種數(shù)據(jù)結構,一種是inset數(shù)組,另一種是hashtable,如果保存的所有值都是整數(shù)且個數(shù)不超過512個則使用inset數(shù)組,否則使用hashtable

      使用場景:

      ①統(tǒng)計網(wǎng)站uv

      ②統(tǒng)計共同好友

      sortedset

      有序集合,可以通過設置分數(shù)來對元素進行排序,元素不能重復,分數(shù)可以

      命令名稱

      示例

      描述

      zadd

      zadd key score1 v1 score2 v2…

      為集合添加新成員

      zrem

      srem key v1 v2 …

      刪除集合指定成員

      zcount

      zcount key min max

      返回分數(shù)在[min,max]區(qū)間內(nèi)的元素數(shù)量

      zincrby

      zincrby key increment member

      在集合的member分值上加increment

      zrank

      zrank key member

      獲取集合中member的排名(按分值從小到大)

      zrevrank

      zrevrank key member

      和zrank相反

      zrange

      zrange key start end

      獲取集合中指定區(qū)間成員,按分數(shù)遞增排序

      zrevrange

      zrevrange key start end

      和zrange相反

      zset底層是采用ziplist和skiplist結構,ziplist就是地址連續(xù)的壓縮鏈表,按照分值從小到大排序,在滿足一定條件下會轉換成skiplist,即跳表。

      使用場景:

      ①排行榜

      hash

      String 類型的 field(域)和 value(值)的映射表,每個hash可以存儲2^32-1個鍵值對

      命令名稱

      示例

      描述

      hset

      hset key field value

      賦值

      hmset

      hmset key field1 value1 field2 value2…

      批量賦值

      hsetnx

      hsetnx key field value

      賦值,如果值存在則不操作

      hget

      hget key field

      獲取一個字段

      hmget

      hmset key field1 field2

      獲取多個字段值

      hgetall

      hgetall key

      獲取所有值

      hdel

      hdel key field

      刪除指定字段

      hincrby

      hincrby key field increment

      指定字段自增increment

      hlen

      hlen key

      獲取字段數(shù)量

      底層使用hashtable存儲數(shù)據(jù)

      使用場景

      ①存儲對象,應用在頻繁寫操作的場景,string主要用在頻繁讀操作場景

      BitMap

      BitMap 就是通過一個 bit 位來表示某個元素對應的值或者狀態(tài), 其中的 key 就是對應元素本身,實際上底層也是通過對字符串的操作來實現(xiàn)。

      命令名稱

      示例

      描述

      setbit

      setbit key offset value

      設置key在offset處的bit值,只能是0或者1

      getbit

      getbit key.offset

      獲取key在offset處的bit值

      bitcount

      bitcount key

      獲取key的bit位為1的個數(shù)

      bitpos

      bitpos key value

      獲取第一個值為value的bit的位置

      bitop

      bitop and[or/xor/not] destkey key

      [key …]

      對多個key 進行邏輯運算后存入destkey

      使用場景:

      ①布隆過濾器

      ②統(tǒng)計用戶每月簽到,用戶id為key,日期作為偏移量

      鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年8月11日 13:11
      下一篇 2022年8月11日 13:12

      相關推薦

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息