久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

redis基本類型和使用方法的示例分析

共計(jì) 11414 個(gè)字符,預(yù)計(jì)需要花費(fèi) 29 分鐘才能閱讀完成。

自動(dòng)寫代碼機(jī)器人,免費(fèi)開通

這篇文章主要介紹 redis 基本類型和使用方法的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

redis 存儲(chǔ)數(shù)據(jù)的基本類型有:string(字符串類型)、hash(散列類型)、list(列表類型)、set(集合類型)、zset(有序集合類型)。

依次做一些練習(xí)。redis 命令不區(qū)分大小寫。

key 相關(guān)操作

127.0.0.1:6379  set key hello ##  設(shè)置
127.0.0.1:6379  set key1 world
127.0.0.1:6379  keys ke* ## keys 查詢鍵名
1)  key1 
2)  key 
127.0.0.1:6379  del key1 ##  刪除鍵值對(duì)
(integer) 1
127.0.0.1:6379  exists key ## 查詢鍵名是否存在
(integer) 1 ## 存在返回 1
127.0.0.1:6379  exists key1
(integer) 0 ## 不存在返回 0
127.0.0.1:6379  type key ## 查詢鍵值的類型  
string

字符串類型

127.0.0.1:6379  exists num 
(integer) 0
127.0.0.1:6379  incr num ##incr 一個(gè)不存在的值,先創(chuàng)建新值,賦值為 0,再自增 1. 院子操作。  對(duì)應(yīng)的是 decr
(integer) 1
127.0.0.1:6379  set key hello
127.0.0.1:6379  incr key ## 無法對(duì) string 自增
(error) ERR value is not an integer or out of range
127.0.0.1:6379  incrby num 3 ##increby 增加指定的數(shù)值,對(duì)應(yīng)的是 decrby
(integer) 4
127.0.0.1:6379  incrbyfloat num 0.7 ## 增加浮點(diǎn)數(shù)
 4.7 
127.0.0.1:6379  append key   world!  ##append 追加字符
(integer) 12
127.0.0.1:6379  get key
 hello world! 
127.0.0.1:6379  strlen key ##strlen 字符串長度
(integer) 12
127.0.0.1:6379  mget key num ## mget 批量獲取鍵值
1)  hello world! 
2)  4.7 
127.0.0.1:6379  mset key hi num 5.5 ##mset 批量設(shè)置
127.0.0.1:6379  mget key num
1)  hi 
2)  5.5 
127.0.0.1:6379  set foo bar 
127.0.0.1:6379  getbit foo 1 ##getbit 獲取某一位二進(jìn)制數(shù)值
(integer) 1
127.0.0.1:6379  setbit foo 22 0 ## 設(shè)置修改位值
(integer) 1
127.0.0.1:6379  get foo ## 修改成功
 bap 
127.0.0.1:6379  set foo bar
127.0.0.1:6379  set foo1 aar
127.0.0.1:6379  bitop or result foo foo1 ##bitop 位操作
(integer) 3
127.0.0.1:6379  get result
 car

GETBIT key offset

SETBIT key offset value

BITCOUNT key [start] [end] 獲取鍵值中值為 1 的二進(jìn)制位個(gè)數(shù),start 和 end 表示字節(jié)位置

BITOP operation destkey key [key…] 對(duì)多個(gè)鍵值進(jìn)行位運(yùn)算,并將結(jié)果存儲(chǔ)在 destkey 對(duì)應(yīng)的鍵值中。支持的操作:AND、OR、XOR、NOT。

GETSET key newValue 原子操作,設(shè)置新值,返回原來的值。如果原值不存在,返回 nil。

SETEX key seconds value 設(shè)置鍵值對(duì)的失效時(shí)間是 seconds 秒。

SETNX key value put if absent,or do nothing。

SETRANGE key offset value 從 index 等于 offset 位置起,替換 length(value)個(gè)字符,替換為 value。如果 offset 超出范圍,則中間補(bǔ)充 0x00。

GETRANGE key start end 獲取指定返回的字符串,閉區(qū)間。end 超過長度,則取到字符串末尾。

MGET key [key …]

MSET key value [key value …]

MSETNX key value [key value …] 原子操作。如果在這一批 Keys 中有任意一個(gè) Key 已經(jīng)存在了,那么該操作將全部回滾,即所有的修改都不會(huì)生效。1 表示全部設(shè)置成功;0 表示都沒有設(shè)置。

127.0.0.1:6379  getset foo hi ## 設(shè)置新值,返回舊值 nil
(nil)
127.0.0.1:6379  get foo
127.0.0.1:6379  setex foo 2 hello ## 設(shè)置鍵值對(duì),2 秒失效
127.0.0.1:6379  get foo ## 沒失效時(shí),返回值
 hello 
127.0.0.1:6379  get foo ## 失效之后,返回 nil
(nil)
127.0.0.1:6379  set foo hello
127.0.0.1:6379  setrange foo 1 appy ## 替換 index= 1 之后的字符串
(integer) 5
127.0.0.1:6379  get foo
 happy 
127.0.0.1:6379  setrange foo 1 ee
(integer) 5 ## 返回修改后的長度
127.0.0.1:6379  get foo ## 替換兩個(gè)字符
 heepy 
127.0.0.1:6379  setrange foo 8 day
(integer) 11 
127.0.0.1:6379  get foo
 heepy\x00\x00\x00day 
127.0.0.1:6379  get bar
(nil)
127.0.0.1:6379  setrange bar 2 ee ##bar 的值為 nil,補(bǔ)充兩個(gè) 0x00
(integer) 4
127.0.0.1:6379  get bar
 \x00\x00ee 
127.0.0.1:6379  set key1 hello
127.0.0.1:6379  msetnx key1 hi key2 hi ##key2 不存在,不修改
(integer) 0
127.0.0.1:6379  mget key1 key2 ## key2 依然為 nil
1)  hello 
2) (nil)

hash

HSET key field value

HGET key field

HMSET key field value [field value …]

HMGET key field [field …]

HGETALL key

HEXISTS key field

HSETNX key field value 字段不存在時(shí)賦值。與 HSET 類型,區(qū)別在于,如果字段存在,HSETNX 不執(zhí)行任何操作。

HINCRBY key filed increment 如果 key、field 不存在,自動(dòng)創(chuàng)建,鍵值為 0,再增值。

HDEL key field [field…] 這是刪除的是 key:field,不能直接刪除 key。如果要?jiǎng)h除 key,使用 DEL 命令。

HEYS key 只獲取字段名

HVALS key 只獲取字段值

HLEN key 獲得字段數(shù)量

127.0.0.1:6379  HMSET g1class1 xiaoming 001 xiaohong 002 tom 003 hanmeimei 004
127.0.0.1:6379  HGETALL g1class1 
1)  xiaoming 
2)  001 
3)  xiaohong 
4)  002 
5)  tom 
6)  003 
7)  hanmeimei 
8)  004 
127.0.0.1:6379  HKEYS g1class1
1)  xiaoming 
2)  xiaohong 
3)  tom 
4)  hanmeimei 
127.0.0.1:6379  HLEN g1class1
(integer) 4
127.0.0.1:6379  HGET g1class1 xiaohong
 002 
127.0.0.1:6379  HSET g1class1 lilei 005 ##het 新值時(shí),返回 1
(integer) 1
127.0.0.1:6379  hset g1class1 xiaohong 007 ## hset 更新值時(shí),返回 0
(integer) 0
127.0.0.1:6379  hsetnx g1class1 tom 008 ## 已存在的值,不操作
(integer) 0
127.0.0.1:6379  hget g1class1 tom ## 已存在的值,更新不生效,還是 003
 003 
127.0.0.1:6379  hdel g1class1 ## 不能直接刪除 key
(error) ERR wrong number of arguments for  hdel  command
127.0.0.1:6379  DEL g1class1 ## 使用 DEL 刪除 key
(integer) 1
127.0.0.1:6379  hgetall g1class1 ## 查詢?yōu)榭?
(empty list or set)

用途

用來存儲(chǔ)分級(jí)數(shù)據(jù)。外部 key 作為 prefix,是第一級(jí) key,hash 中的 key 作為第二級(jí) key 使用。

存儲(chǔ)含有多個(gè)屬性的對(duì)象,如一篇博客的各種屬性:標(biāo)題,標(biāo)簽,分類等。修改某個(gè)屬性,不用操作整個(gè)博客內(nèi)容。

list

redis 列表類型內(nèi)部是使用雙向列表實(shí)現(xiàn)的,所以可以向 / 從兩端添加 / 刪除元素。

LPUSH key value [value …] 從左側(cè)添加元素, 如果 key 不存在,初始化一個(gè)空列表,再添加。返回插入后,鏈表的個(gè)數(shù)。

LPUSHX key value 僅當(dāng)指定的 Key 存在時(shí),才在列表的左邊插入 Value,否則將不會(huì)有任何操作發(fā)生。返回插入后,鏈表的個(gè)數(shù)。

RPUSH key value [value …] 從右側(cè)添加元素

RPUSHX key value 僅當(dāng)指定的 Key 存在時(shí),才在列表的右邊插入 Value,否則將不會(huì)有任何操作發(fā)生。返回插入后,鏈表的個(gè)數(shù)。

LPOP key 從兩端彈出元素

RPOP key

LLEN key 獲取列表中元素個(gè)數(shù)

LRANGE key start end 獲取列表片段,左邊在前,右邊在后。起始索引為 0,最右邊元素索引可以為 -1,右邊第二個(gè)索引可以為 -2,以此類推。。。索引從左到右,如果 start 比 end 靠右,則返回空列表。end 值可以大于長度范圍。

LREM key count value 從左邊(count 0)開始,刪除前 count 個(gè)值為 value 的元素;從右邊(count 0)開始,刪除前 |count| 個(gè)值為 value 的元素 ; 刪除所有值為 value 的元素(count = 0)。返回實(shí)際刪除元素的個(gè)數(shù)。

LINDEX key index 獲取指定索引的元素值

LSET key index value 設(shè)置指定索引的元素值

LTRIM key start end 刪除指定索引范圍之外的所有元素。start 和 end 的規(guī)則與 lrange 的相同。

LINSERT key BEFORE|AFTER pivot value 從左到右查找 pivot,將 value 插在其前面 (BEFORE) 或者后面(AFTER)。返回插入后,元素總個(gè)數(shù)。

RPOPLPUSH source destination 刪除 source 最右邊的元素,插入到 destination 最左邊。返回操作的元素。

127.0.0.1:6379  lpush num 1 2 ##  先 push 1,再 push 2
(integer) 2
127.0.0.1:6379  rpush num 3 4 ## 先 push 3,再 push 4
(integer) 4
127.0.0.1:6379  lrange num 0 -1 ## 從 0 開始,顯示 4 個(gè)元素
1)  2 
2)  1 
3)  3 
4)  4 
127.0.0.1:6379  llen num
(integer) 4
127.0.0.1:6379  lrange num -1 -2 ##start 比 end 靠右,返回空列表
(empty list or set)
127.0.0.1:6379  lrange num -2 -1 ## 從右邊第二到右邊第一
1)  3 
2)  4 
127.0.0.1:6379  lpush num 3 4 3 
(integer) 7
127.0.0.1:6379  lrange num 0 -1
1)  3 
2)  4 
3)  3 
4)  2 
5)  1 
6)  3 
7)  4 
127.0.0.1:6379  lrem num 2 3
(integer) 2 ##  一共刪除了兩個(gè)
127.0.0.1:6379  lrange num 0 -1
1)  4 
2)  2 
3)  1 
4)  3 
5)  4 
127.0.0.1:6379  
127.0.0.1:6379  lrem num 0 4 ## 刪除所有值為 4 元素
(integer) 2 ##  一共刪除了兩個(gè)
127.0.0.1:6379  lrange num 0 -1
1)  2 
2)  1 
3)  3 
127.0.0.1:6379  lrem num 2 3
(integer) 1 ## 只刪除了一個(gè)元素
127.0.0.1:6379  lrange num 0 -1
1)  2 
2)  1 
127.0.0.1:6379  lpush num 1 3
(integer) 4
127.0.0.1:6379  linsert num BEFORE 1 4 ## 將 4 插入左邊第一個(gè) 1 的前面
(integer) 5 ## 插入后,一共有 5 個(gè)元素
127.0.0.1:6379  lrange num 0 -1
1)  3 
2)  4 
3)  1 
4)  2 
5)  1 
127.0.0.1:6379  rpoplpush num num1 ## 轉(zhuǎn)移一個(gè)元素
127.0.0.1:6379  lrange num1 0 -1
1)  1 
127.0.0.1:6379  rpoplpush num num1
127.0.0.1:6379  lrange num1 0 -1
1)  2 
2)  1 
127.0.0.1:6379  lrange num 0 -1 ##num 中轉(zhuǎn)移走了 2 個(gè)元素
1)  3 
2)  4 
3)  1 
127.0.0.1:6379  lpushx num 5 ## 鍵名 num 存在,push 成功
(integer) 4
127.0.0.1:6379  lrange num2 0 -1 
(empty list or set)
127.0.0.1:6379  lpushx num2 1 ## 鍵名 num2 不存在,push 失敗
(integer) 0
127.0.0.1:6379  lrange num2 0 -1
(empty list or set)

用途

列表頁

set

redis 的 set 使用值為空的散列表(hash table)實(shí)現(xiàn)。

SADD key member [member …] 加入 set 中不存在的元素;返回成功加入的值的個(gè)數(shù)

SREM key member [member …] 刪除 set 中存在的元素;返回成功刪除的個(gè)數(shù)

SPOP key 隨機(jī)選取一個(gè)元素,彈出并返回。如果 key 不存在,返回 nil。

SMEMBERS key 獲取所有元素

SISMEMBER key member 判斷元素是否在集合中,存在返回 1;key 或者 member 不存在,返回 0。

SCARD key 獲取元素個(gè)數(shù)

SDIFF key1 [key2 …] 集合求差集,key1 中存在,key2 中不存在的

SINTER key [key …] 集合求交集

SUNION key [key …] 集合求并集

SDIFFSTORE destination key1 [key2 …] 集合求差集,并存入 destination 中。

SINTERSTORE destination key [key …] 集合求交集,并存入 destination 中。

SUNIONSTORE destination key [key …] 集合求并集,并存入 destination 中。

SRANDMEMBER key [count] 隨機(jī)選取 count 個(gè)元素,不帶參數(shù) count 時(shí),選取一個(gè)。count=0,返回空列表;count 0,選擇 min(count, scard)個(gè)數(shù)據(jù),且不重復(fù),最多返回所有元素;count 0 選擇 |count| 個(gè)元素,有可能重復(fù)。

SMOVE source destination member 原子性的將參數(shù)中的成員從 source 鍵移入到 destination 鍵所關(guān)聯(lián)的 Set 中。因此在某一時(shí)刻,該成員或者出現(xiàn)在 source 中,或者出現(xiàn)在 destination 中。如果該成員在 source 中并不存在,該命令將不會(huì)再執(zhí)行任何操作并返回 0,否則,該成員將從 source 移入到 destination。如果此時(shí)該成員已經(jīng)在 destination 中存在,那么該命令僅是將該成員從 source 中移出。如果和 Key 關(guān)聯(lián)的 Value 不是 Set,將返回相關(guān)的錯(cuò)誤信息。返回 1 表示正常移動(dòng),0 表示 source 中并不包含參數(shù)成員。

127.0.0.1:6379  sadd set1 a b ## 添加兩個(gè)不存在的元素
(integer) 2
127.0.0.1:6379  sadd set1 a c ## 添加成功一個(gè)元素 c
(integer) 1
127.0.0.1:6379  smembers set1 ## 獲取所有元素
1)  c 
2)  b 
3)  a 
127.0.0.1:6379  srem set1 d b ## 刪除成功一個(gè)元素
(integer) 1
127.0.0.1:6379  smembers set1
1)  c 
2)  a 
127.0.0.1:6379  sismember set1 a 
(integer) 1
127.0.0.1:6379  sadd set1 b
(integer) 1
127.0.0.1:6379  sadd set2 a d e 
(integer) 3
127.0.0.1:6379  sadd set3 c h j 
(integer) 3
127.0.0.1:6379  sdiff set1 set2 set3 ## 求差集,在 set1 中,同時(shí)不在 set2,set3 中的元素
1)  b 
127.0.0.1:6379  scard set1
(integer) 3
127.0.0.1:6379  sdiffstore set4 set1 set2 set3
(integer) 1
127.0.0.1:6379  smembers set4
1)  b 
127.0.0.1:6379  srandmember set1 0
(empty list or set)
127.0.0.1:6379  srandmember set1 1
1)  c 
127.0.0.1:6379  srandmember set1 2
1)  a 
2)  b 
127.0.0.1:6379  srandmember set1 5 ## 返回 min(5, 3)個(gè)元素, 且不重復(fù)
1)  c 
2)  a 
3)  b 
127.0.0.1:6379  srandmember set1 -5 ##  返回 5 個(gè)元素,可能重復(fù)
1)  a 
2)  b 
3)  c 
4)  c 
5)  c 
127.0.0.1:6379  spop set1
127.0.0.1:6379  smembers set1
1)  b 
2)  a 
127.0.0.1:6379  smembers set2
1)  d 
2)  a 
3)  e 
127.0.0.1:6379  smove set2 set1 c ##source 中不含移動(dòng)的元素,不操作
(integer) 0
127.0.0.1:6379  smove set2 set1 e ## 移動(dòng)一個(gè)元素到另一個(gè)集合
(integer) 1
127.0.0.1:6379  smembers set2
1)  d 
2)  a 
127.0.0.1:6379  smembers set1
1)  b 
2)  a 
3)  e

用途

唯一性數(shù)據(jù)集合,如某用戶訪問了哪些店鋪等。

集合相關(guān)場(chǎng)景。每個(gè)店鋪的訪問用戶是一個(gè) set,查找同時(shí)訪問多個(gè)店鋪的用戶群,查找訪問一類店鋪的用戶群等。

sorted set

有序集合為每一個(gè)元素關(guān)聯(lián)一個(gè)分?jǐn)?shù),并按照分?jǐn)?shù)進(jìn)行排序。雖然集合中的每個(gè)元素都是不相同的,但是它們的分?jǐn)?shù)卻可以相同。

ZADD key score member [score member …] 添加新元素,如果元素已經(jīng)存在,則更新分?jǐn)?shù)。score 支持整型和雙精度浮點(diǎn)型。返回新添加的元素的個(gè)數(shù)(更新分?jǐn)?shù)的不算)。inf 和 -inf 分別表示正無窮和負(fù)無窮。

ZINCRBY key increment member 增加一個(gè)元素的分?jǐn)?shù),increment 可以是負(fù)數(shù)。

ZSCORE key member 查詢?cè)氐姆謹(jǐn)?shù)

ZCARD key 獲取集合中元素的個(gè)數(shù)

ZCOUNT key min max 指定分?jǐn)?shù)范圍內(nèi)元素的個(gè)數(shù),支持開閉區(qū)間。

ZRANGE key start end [WITHSCORES] 按照分?jǐn)?shù)從小到大排序,獲取排名在某個(gè)范圍的元素列表,分?jǐn)?shù)可選。閉區(qū)間,end 可為負(fù)數(shù),與 lrange 參數(shù)要求一致。

ZREVRANGE key start end [WITHSCORES] 按照分?jǐn)?shù)從大到小排序。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 按分?jǐn)?shù)從小到大順序,返回分?jǐn)?shù)在閉區(qū)間 [min,max] 的元素。可以指定開區(qū)間,在 min 前面加上 (,則表示(min, max]。支持 inf 和 -inf。offset 和 count 指,在獲得的元素列表的基礎(chǔ)上,向后偏移 offset 個(gè)元素,并且只獲取前 count 個(gè)元素。

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 按分?jǐn)?shù)從大到小順序,返回分?jǐn)?shù)在閉區(qū)間 [min,max] 的元素。注意 max 和 min 的參數(shù)位置。

ZREM key member [member …] 刪除一個(gè)或者多個(gè)元素

ZREMRANGEBYRANK key start end 按照范圍排名刪除元素,閉區(qū)間。索引從 0 開始。

ZREMRANGEBYSCORE key min max 按照分?jǐn)?shù)排名,刪除分?jǐn)?shù)在 [min,max] 的元素,支持開區(qū)間。

ZRANK key member 按分?jǐn)?shù)從小到大排序,獲取元素 member 的排名,分?jǐn)?shù)最小的排名是 0

ZREVRANK key member 按分?jǐn)?shù)從大到小排序,獲取元素 member 的排名,分?jǐn)?shù)最大的排名是 0

ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 計(jì)算 numkeys 個(gè)有序集合的交集,存儲(chǔ)在有序集合 destination 里面,返回 destination 的元素個(gè)數(shù)。

WEIGHTS 參數(shù)設(shè)置每個(gè)集合的權(quán)重,每個(gè)集合在參與計(jì)算時(shí),元素的分?jǐn)?shù)會(huì)被乘上該集合的權(quán)重。

AGGREGATE 表示 destination 中元素分?jǐn)?shù)的計(jì)算方式:

AGGREGATE 為 SUM(默認(rèn)值)時(shí),則 destination 中元素的分?jǐn)?shù),是每個(gè)參與計(jì)算的集合中該元素分?jǐn)?shù)的和。

AGGREGATE 為 MAX 時(shí),則 destination 中元素的分?jǐn)?shù),是每個(gè)參與計(jì)算的集合中該元素分?jǐn)?shù)的最大值。

AGGREGATE 為 MIN 時(shí),則 destination 中元素的分?jǐn)?shù),是每個(gè)參與計(jì)算的集合中該元素分?jǐn)?shù)的最小值。

ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX] 與上面類似。

127.0.0.1:6379  zadd zset1 10 sh 40 bj ## 添加 2 個(gè)元素
(integer) 2
127.0.0.1:6379  zadd zset1 20 sh 50 hz 80 cd ## 更新 1 個(gè),添加 2 個(gè)
(integer) 2
127.0.0.1:6379  zscore zset1 sh ## 獲取 sh 的分?jǐn)?shù),已更新為 20
127.0.0.1:6379  zrange zset1 1 -1 ## 從第二個(gè)元素開始的所有元素
1)  bj 
2)  hz 
3)  cd 
127.0.0.1:6379  zrange zset1 0 -1 withscores ## 獲取全部元素
1)  sh 
2)  20 
3)  bj 
4)  40 
5)  hz 
6)  50 
7)  cd 
8)  80 
127.0.0.1:6379  zadd zset1 inf zy ## 添加正無窮
(integer) 1
127.0.0.1:6379  zrangebyscore zset1 (50 inf withscores ##  分?jǐn)?shù)大于 50 的元素
1)  cd 
2)  80 
3)  zy 
4)  inf 
127.0.0.1:6379  zrangebyscore zset1 50 inf withscores limit 1 2 
##  分?jǐn)?shù)大于等于 50 的元素,從第二個(gè)開始,取 2 個(gè)
1)  cd 
2)  80 
3)  zy 
4)  inf 
127.0.0.1:6379  zincrby zset1 5 hz ##  給元素 hz 加 5 分
 55  
127.0.0.1:6379  zrangebyscore zset1 (50 inf ##  添加成功
1)  hz 
2)  cd 
3)  zy 
127.0.0.1:6379  zrange zset1 0 -1 WITHSCORES ## 查詢所有元素
 1)  sh 
 2)  20 
 3)  bj 
 4)  40 
 5)  hz 
 6)  55 
 7)  cd 
 8)  80 
 9)  zy 
10)  inf 
127.0.0.1:6379  zcount zset1 0 inf ## 獲取元素個(gè)數(shù)
(integer) 5
127.0.0.1:6379  zcount zset1 (55 inf ## 大于 55 元素個(gè)數(shù)
(integer) 2
127.0.0.1:6379  zrem zset1 zy ## 刪除 zy
(integer) 1
127.0.0.1:6379  zrange zset1 0 -1 ##  剩下四個(gè)
1)  sh 
2)  bj 
3)  hz 
4)  cd 
127.0.0.1:6379  zremrangebyrank zset1 1 2 ##  按照排名,刪除第 2 名到第 3 名
(integer) 2
127.0.0.1:6379  zrange zset1 0 -1 ##  只剩下 2 個(gè)
1)  sh 
2)  cd 
127.0.0.1:6379  zadd zs1 1 a 2 b 
(integer) 2
127.0.0.1:6379  zadd zs2 10 a 20 b
(integer) 2
## zs1 和 zs2 取交集,zs1 的權(quán)重為 1,zs2 的權(quán)重為 0.5,所以 a 的結(jié)果分?jǐn)?shù)是 1 +10*0.5=6
127.0.0.1:6379  zinterstore zs3 2 zs1 zs2 WEIGHTS 1 0.5 AGGREGATE sum
(integer) 2
127.0.0.1:6379  zrange zs3 0 -1 withscores
1)  a 
2)  6 
3)  b 
4)  12

用途

排序的場(chǎng)景。如按照博客訪問量排序文章列表。key 是用戶 id,set 中的數(shù)據(jù)是文章 id,每個(gè)文章 id 關(guān)聯(lián)一個(gè) score(訪問量)。

與列表的比較

都可以獲取某一范圍的元素

列表類型通過鏈表實(shí)現(xiàn),獲取兩端數(shù)據(jù)速度快,元素增多后,訪問中間數(shù)據(jù)速度較慢。所以適合“新鮮事”和“日志”一類的場(chǎng)景。

有序集合是通過散列表和跳躍表實(shí)現(xiàn)的,所以讀取位于中間部分的數(shù)據(jù)的速度也很快。時(shí)間復(fù)雜度 O(log(N))。

列表不能簡單的調(diào)整某個(gè)元素的位置,有序集合可以。(修改元素的分?jǐn)?shù))

以上是“redis 基本類型和使用方法的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

向 AI 問一下細(xì)節(jié)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計(jì)11414字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 宁德市| 新巴尔虎左旗| 封丘县| 漯河市| 都江堰市| 彭水| 阿拉善左旗| 天全县| 慈利县| 伊金霍洛旗| 井陉县| 镶黄旗| 廉江市| 句容市| 娱乐| 华安县| 南雄市| 隆化县| 东兰县| 商洛市| 克拉玛依市| 古田县| 奉新县| 阿鲁科尔沁旗| 三都| 临朐县| 怀来县| 南皮县| 色达县| 嘉善县| 礼泉县| 台江县| 嘉峪关市| 金昌市| 金川县| 徐汇区| 宁陵县| 桑植县| 乐山市| 江川县| 万载县|