Redis入門:數據類型及操作命令

Redis入門:數據類型及操作命令

Redis現在支持以下幾種數據類型:

  • 字符串
  • 列表
  • 集合
  • 排序集合
  • 哈希
  • Bitmap
  • HyperLogLog
  • Stream

針對不同的數據類型,還有不同的操作命令。

1 KEY設置規則

Redis的鍵原則上可以使用任何字符串,但是在使用的時候,還是有一些建議規則:

  • 1.key最好不要太長。
  • 2.key也不要太短。
  • 3.使用正確的模式。
  • 4.key最大爲512M。

2 STRING

String類型是Redis中的基本數據類型。Redis中的key是字符串類型的,value也可以是字符串類型,其實就是用一個字符串去表示另一個字符串。

2.1 操作命令

2.1.1 keys

keys [pattern]:查詢當前的存儲空間中,所有存在的key值。

例如:

127.0.0.1:6379> keys *
(empty list or set)

2.1.2 set

set [key] [value]:設置存儲的key-value結構的數據,value是字符串;覆蓋已經存在的key-value數據。

例如:

127.0.0.1:6379> set city beijing
OK
127.0.0.1:6379> keys *
1) "city"
127.0.0.1:6379> set city shanghai
OK
127.0.0.1:6379> keys *
1) "city"
127.0.0.1:6379> get city
"shanghai"
127.0.0.1:6379> set city beijing
OK
127.0.0.1:6379> get city
"beijing"

2.1.3 get

get [key]:獲取當前key對應的value數據。

例如:

127.0.0.1:6379> set name xiao
OK
127.0.0.1:6379> get name
"xiao"

2.1.4 select

select [整數值默認0-15]:redis存在默認的0-15號的數據分庫,即16個數據庫。默認使用0號,功能現在不常用。是早期的遺留功能,java代碼不支持分庫的api。

例如:

127.0.0.1:6379> keys *
1) "city"
2) "name"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

2.1.5 exists

exists [key]:查看當前redis節點是否包含查詢的key-value數據,返回1表示存在,返回0表示不存在。

redis存儲的字符串類型數據value達到最大值512m;get命令判斷key的存在會佔用讀取value過程的資源,效率低。

例如:

127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists nil
(integer) 0

2.1.6 del

del [key]:刪除當前存儲的key-value數據。返回1表示刪除成功,返回0表示刪除不成功。

例如:

127.0.0.1:6379> keys *
1) "city"
2) "name"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> keys *
1) "city"

2.1.7 type

type [key]:查看當前key對應的value的數據類型。

例如:

127.0.0.1:6379> type city
string

2.1.8 help

help [命令名稱]:查詢當前命令的使用規則。

例如:

127.0.0.1:6379> help set
  SET key value [EX seconds] [PX milliseconds] [NX|XX]
  summary: Set the string value of a key
  since: 1.0.0
  group: string

注意:help的返回內容不全面;真正需要查詢某個命令的使用規則,可以到官網查詢。

2.1.9 flushall

flushall:將當前的數據庫[0-15]的所有數據,flush到指定的持久化文件中(dump.rbd);可以代替清空當前數據庫的key-value數據的功能。

例如:

127.0.0.1:6379> set name xiao
OK
127.0.0.1:6379> set gender male
OK
127.0.0.1:6379> keys *
1) "city"
2) "gender"
3) "name"
127.0.0.1:6379> flushall
4599:M 23 Feb 11:23:35.394 * DB saved on disk
OK
127.0.0.1:6379> keys *
(empty list or set)

2.1.10 flushdb

flushdb:指定清空或者flush當前數據庫的數據到磁盤文件中。

例如:

127.0.0.1:6379> set name xiao
OK
127.0.0.1:6379> set city beijing
OK
127.0.0.1:6379> keys *
1) "city"
2) "name"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> set name xiao
OK
127.0.0.1:6379[1]> set city beijing
OK
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "city"
2) "name"

2.1.11 incr/decr

incr decr 自增,自減:對於字符串純數字的數據可以進行自增和自減操作。

例如:

127.0.0.1:6379> set num1 100
OK
127.0.0.1:6379> incr num1
(integer) 101
127.0.0.1:6379> type num1
string
127.0.0.1:6379> set num2 oo100
OK
127.0.0.1:6379> incr num2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> decr num1
(integer) 100

2.1.12 incrby/decrby

incrby [key] [整數] decrby [key] [整數]:自增自減指定數量的值。

例如:

127.0.0.1:6379> incrby num1 5
(integer) 105
127.0.0.1:6379> decrby num1 50
(integer) 55

自增自減的使用情景:內存數據庫的計算需要消耗資源,上線人數:50399,數字是時刻跳動的,不會一個一個添加或者減少。

2.1.13 apend

apend [key] [value]:在指定key的value上追加數據。

例如:

127.0.0.1:6379> append city daxing
(integer) 13
127.0.0.1:6379> get city
"beijingdaxing"

2.1.14 mset/mget

mset mget:設置一批key-value和獲取一批key對應的value值。

例如:

127.0.0.1:6379> mset num01 100 num02 200 num03 300
OK
127.0.0.1:6379> keys *
1) "num01"
2) "num02"
3) "num03"
4) "num2"
5) "city"
6) "name"
7) "num1"
127.0.0.1:6379> mget num01 num02 num03 num2 city
1) "100"
2) "200"
3) "300"
4) "oo100"
5) "beijingdaxing"

也是redis早期版本的遺留功能,不支持jedis的分片計算,java代碼無法操作和使用。

2.1.15 expire ttl

expire [key] 時間數字(單位秒):設置當前key-value數據的存活時間,配合ttl的命令可以查看剩餘的壽命。

壽命是整數-2代表超時,大於0代表存活描述,永久存活的值是-1。

例如:

127.0.0.1:6379> expire bomb 100
(integer) 1
127.0.0.1:6379> ttl bomb
(integer) 93
127.0.0.1:6379> set bomb c4
OK
127.0.0.1:6379> expire bomb 100
(integer) 1
127.0.0.1:6379> ttl bomb
(integer) 93
127.0.0.1:6379> ttl bomb
(integer) 88
127.0.0.1:6379> set bomb2 c5
OK
127.0.0.1:6379> expire bomb2 10
(integer) 1
127.0.0.1:6379> ttl bomb2
(integer) 7
127.0.0.1:6379> ttl bomb2
(integer) 2
127.0.0.1:6379> ttl bomb2
(integer) 0
127.0.0.1:6379> ttl bomb2
(integer) -2
127.0.0.1:6379> ttl bomb2
(integer) -2
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> keys *
1) "num01"
2) "num03"
3) "city"
4) "num1"
5) "num02"
6) "num2"
7) "name"
127.0.0.1:6379> ttl num1
(integer) -1

使用場景:可以作爲搶單、秒殺的倒計時;如果單位是秒的話不夠精確,至少要毫秒。

2.1.16 pexpire

pexpire [key]:時間整數[毫秒]。

例如:

127.0.0.1:6379> pexpire bomb3 15000
(integer) 1
127.0.0.1:6379> ttl bomb3
(integer) 11

3 LIST

Redis的List是通過鏈表實現的。能夠以非常快速的方式將元素添加到非常長的列表中。

3.1 操作命令

3.1.1 lrange

查看list。起始位置start,結束位置stop,分別對應的是元素的下標。如果stop=-1展示從start位置到結束的所有元素。

redis 127.0.0.1:6379> lrange mylist3 0 -1

3.1.2 lpush

LPUSH:在key對應list的頭部添加字符串元素(上爲頭,下爲尾)。

redis 127.0.0.1:6379> lpush mylist "world"
(integer) 1
redis 127.0.0.1:6379> lpush mylist "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"

3.1.3 rpush

RPUSH:在key對應list的尾部添加字符串元素。

redis 127.0.0.1:6379> rpush mylist2 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist2 "world"
(integer) 2
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "hello"
2) "world"

3.1.4 linsert

linsert:在key對應list的特定位置之前或之後添加字符串元素。

redis 127.0.0.1:6379> rpush mylist3 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist3 "world"
(integer) 2
redis 127.0.0.1:6379> linsert mylist3 before "world" "there"
(integer) 3
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "hello"
2) "there"
3) "world"

3.1.5 lset

lset:設置list中指定下標的元素值。

redis 127.0.0.1:6379> rpush mylist4 "one"
(integer) 1
redis 127.0.0.1:6379> rpush mylist4 "two"
(integer) 2
redis 127.0.0.1:6379> rpush mylist4 "three"
(integer) 3
redis 127.0.0.1:6379> lset mylist4 0 "four"
OK
redis 127.0.0.1:6379> lset mylist4 -2 "five" 倒數第二
OK
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "four"
2) "five"
3) "three"

3.1.6 lrem

lrem:從key對應list中刪除count個和value相同的元素。

count>0時,按從頭到尾(上到下)的順序刪除。

redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 2
redis 127.0.0.1:6379> rpush mylist5 "foo"
(integer) 3
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 4
redis 127.0.0.1:6379> lrem mylist5 2 "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "foo"
2) "hello"
redis 127.0.0.1:6379>

count<0時,按從尾到頭(下到上)的順序刪除。

redis 127.0.0.1:6379> rpush mylist6 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist6 "hello"
(integer) 2
redis 127.0.0.1:6379> rpush mylist6 "foo"
(integer) 3
redis 127.0.0.1:6379> rpush mylist6 "hello"
(integer) 4
redis 127.0.0.1:6379> lrem mylist6 -2 "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "hello"
2) "foo"
redis 127.0.0.1:6379>

count=0時,刪除全部。

redis 127.0.0.1:6379> rpush mylist7 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist7 "hello"
(integer) 2
redis 127.0.0.1:6379> rpush mylist7 "foo"
(integer) 3
redis 127.0.0.1:6379> rpush mylist7 "hello"
(integer) 4
redis 127.0.0.1:6379> lrem mylist7 0 "hello"
(integer) 3
redis 127.0.0.1:6379> lrange mylist7 0 -1
1) "foo"
redis 127.0.0.1:6379>

3.1.7 ltrim

保留指定key 的值範圍內的數據。

redis 127.0.0.1:6379> rpush mylist8 "one"
(integer) 1
redis 127.0.0.1:6379> rpush mylist8 "two"
(integer) 2
redis 127.0.0.1:6379> rpush mylist8 "three"
(integer) 3
redis 127.0.0.1:6379> rpush mylist8 "four"
(integer) 4
redis 127.0.0.1:6379> ltrim mylist8 1 -1
OK
redis 127.0.0.1:6379> lrange mylist8 0 -1
1) "two"
2) "three"
3) "four"
redis 127.0.0.1:6379>

3.1.8 lpop

從list的頭部刪除元素,並返回刪除元素。

redis 127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"
redis 127.0.0.1:6379> lpop mylist
"hello"
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "world"
redis 127.0.0.1:6379>

3.1.9 rpop

從list的尾部刪除元素,並返回刪除元素。

redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "hello"
2) "world"
redis 127.0.0.1:6379> rpop mylist2
"world"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "hello"
redis 127.0.0.1:6379>

3.1.10 rpoplpush

從第一個list的尾部移除元素並添加到第二個list的頭部,最後返回被移除的元素值,整個操作是原子的。如果第一個list是空或者不存在返回nil。

redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "three"
2) "foo"
3) "hello"
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "hello"
2) "foo"
redis 127.0.0.1:6379> rpoplpush mylist5 mylist6
"hello"
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "three"
2) "foo"
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "hello"
2) "hello"
3) "foo"
redis 127.0.0.1:6379>

3.1.11 lindex

返回名稱爲key的list中index位置的元素。

redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "three"
2) "foo"
redis 127.0.0.1:6379> lindex mylist5 0
"three"
redis 127.0.0.1:6379> lindex mylist5 1
"foo"
redis 127.0.0.1:6379>

3.1.12 llen

返回key對應list的長度。

redis 127.0.0.1:6379> llen mylist5
(integer) 2
redis 127.0.0.1:6379>

4 HASH

Hash類型類似對象屬性和值的結構.

4.1 操作命令

4.1.1 hset/hget

HSET和HGET:賦值和取值。

命令格式:

HSET key field value
HGET key field
HMSET key field value [field value…]
HMGET key field value [field value…]
HGETALL key
127.0.0.1:6379> hset user username chenchen
(integer) 1
127.0.0.1:6379> hget user username
"chenchen"
127.0.0.1:6379> hset user username chen
(integer) 0
127.0.0.1:6379> keys user
1) "user"
127.0.0.1:6379> hgetall user
1) "username"
2) "chen"
127.0.0.1:6379> 
127.0.0.1:6379> hset user age 30
(integer) 1
127.0.0.1:6379> hgetall user
1) "username"
2) "chen"
3) "age"
4) "30"

HSET命令不區分插入和更新操作,當執行插入操作時HSET命令返回1,當執行更新操作時返回0。

4.1.2 hmset/hmget

HMSET和HMGET:批量設置和獲取對象屬性。

127.0.0.1:6379> hmset person username tony age 18
OK
127.0.0.1:6379> hmget person age username
1) "18"
2) "tony"
127.0.0.1:6379> hgetall person
1) "username"
2) "tony"
3) "age"
4) "18"

注意:上面HMGET字段順序可以自行定義。

4.1.3 hexists

HEXISTS:屬性是否存在。

127.0.0.1:6379> hexists killer
(error) ERR wrong number of arguments for 'hexists' command
127.0.0.1:6379> hexists killer a
(integer) 0
127.0.0.1:6379> hexists user username
(integer) 1
127.0.0.1:6379> hexists person age
(integer) 1

4.1.4 hdel

HDEL:刪除對象字段。

127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hgetall user
1) "username"
2) "chen"
127.0.0.1:6379> hgetall person
1) "username"
2) "tony"
3) "age"
4) "18"

4.1.5 hkeys/hvals

只獲取字段名HKEYS或字段值HVALS。

127.0.0.1:6379> hkeys person
1) "username"
2) "age"
127.0.0.1:6379> hvals person
1) "tony"
2) "18"

4.1.6 hlen

獲取字段數量HLEN

127.0.0.1:6379> hlen user
(integer) 1
127.0.0.1:6379> hlen person
(integer) 2

5 SET

Redis的Set是無序的字符串集合。

5.1 操作命令

5.1.1 sadd

此命令用來添加新的新的元素,可以單個添加,也可添加一組。

例如:

127.0.0.1:6379> sadd muset 1 2 3 4
(integer) 4

5.1.2 smembers

此命令用於返回set的值。返回的值是無序的,這個順序是隨機組成的。

例如:

127.0.0.1:6379> smembers muset
1) "1"
2) "2"
3) "3"
4) "4"

5.1.3 sismember

此命令用於檢查元素是否存在。

例如:

127.0.0.1:6379> sismember muset 3
(integer) 1
127.0.0.1:6379> sismember muset 5
(integer) 0

5.1.4 sinter

此命令用於獲取set的交集。

例如:

127.0.0.1:6379> sadd news:1000:tags 1 2 5 77
(integer) 4
127.0.0.1:6379> sadd tag:1:news 1000
(integer) 1
127.0.0.1:6379> sadd tag:2:news 1000
(integer) 1
127.0.0.1:6379> sadd tag:5:news 1000
(integer) 1
127.0.0.1:6379> sadd tag:77:news 1000
(integer) 1
127.0.0.1:6379> smembers news:1000:tags
1) "1"
2) "2"
3) "5"
4) "77"
127.0.0.1:6379> sinter tag:1:news tag:2:news tag:5:news tag:77:news
1) "1000"

5.1.5 spop

此命令用於從set中隨機刪除一個元素,並將這個元素返回給客戶端。

例如:

127.0.0.1:6379> spop news:1000:tags
"2"
127.0.0.1:6379> smembers news:1000:tags
1) "1"
2) "5"
3) "77"

5.1.6 sunionstore

此命令用於獲取兩個set的並集,並且會去重。

例如:

127.0.0.1:6379> sadd set1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd set2 4 5 6 7
(integer) 4
127.0.0.1:6379> sunionstore set3 set1 set2
(integer) 7
127.0.0.1:6379> smembers set3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"

5.1.7 scard

此命令用於獲取集合中元素的個數。

例如:

127.0.0.1:6379> scard set3
(integer) 7
127.0.0.1:6379> scard set1
(integer) 4
127.0.0.1:6379> scard set2
(integer) 4

5.1.8 srandmember

此命令用於從set中隨機獲取一個元素,但是不刪除此元素。

例如:

127.0.0.1:6379> srandmember set3
"4"
127.0.0.1:6379> smembers set3
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
127.0.0.1:6379>

6 SORTED SET

排序集由一組有序的不重複的字符串元素組成。有序集合中的每個元素都與一個浮點值相關聯,稱爲分數

排序規則:

  • 1.如果A和B是具有不同分數的兩個元素,如果A.score>B.score則A>B。
  • 2.如果A和B具有完全相同的分數,則如果A字符串在字典順序上大於B字符串,則A>B。A和B字符串不能相等,因爲排序集只有唯一元素。

6.1 操作命令

6.1.1 zadd

此命令用於給集合添加元素。

命令格式如下:

zadd name score value

例如:

127.0.0.1:6379> zadd zset1 1940 "Alan Kay"
(integer) 1
127.0.0.1:6379> zadd zset1 1957 "Sophie Wilson"
(integer) 1
127.0.0.1:6379> zadd zset1 1953 "Richard Stallman"
(integer) 1
127.0.0.1:6379> zadd zset1 1949 "Anita Borg"
(integer) 1

6.1.2 zrange

以分數從小到大排序顯示集合所有元素。

例如:

127.0.0.1:6379> zrange zset1 0 -1
1) "Alan Kay"
2) "Anita Borg"
3) "Richard Stallman"
4) "Sophie Wilson"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "Alan Kay"
2) "1940"
3) "Anita Borg"
4) "1949"
5) "Richard Stallman"
6) "1953"
7) "Sophie Wilson"
8) "1957"
  • 0和-1表示從元素索引0到最後一個元素。
  • withscores:此爲可選項,用於表示是否顯示分數。

6.1.3 zrevrange

以分數從大到小排序顯示集合所有元素。後面的參數與zrange一樣。

例如:

127.0.0.1:6379> zrevrange zset1 0 -1
1) "Sophie Wilson"
2) "Richard Stallman"
3) "Anita Borg"
4) "Alan Kay"

6.1.4 zrangebyscore

此命令用於顯示集合中的指定部分數據。

例如:

127.0.0.1:6379> zadd zset2 1 a
(integer) 1
127.0.0.1:6379> zadd zset2 2 b
(integer) 1
127.0.0.1:6379> zadd zset2 3 c
(integer) 1
127.0.0.1:6379> zadd zset2 4 d
(integer) 1
127.0.0.1:6379> zadd zset2 5 e 6 f
(integer) 2
127.0.0.1:6379> zrange zset2 0 -1 withscores
 1) "a"
 2) "1"
 3) "b"
 4) "2"
 5) "c"
 6) "3"
 7) "d"
 8) "4"
 9) "e"
10) "5"
11) "f"
12) "6"
127.0.0.1:6379> zrangebyscore zset2 -inf 3
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrangebyscore zset2 4 6
1) "d"
2) "e"
3) "f"

-inf表示負無窮。

6.1.5 zremrangebyscore

此命令用於批量刪除元素,並且返回刪除元素的個數。

例如:

127.0.0.1:6379> zremrangebyscore zset2 3 5
(integer) 3
127.0.0.1:6379> zrange zset2 0 -1 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "f"
6) "6"
127.0.0.1:6379>

6.1.6 zrank

此命令用於返回元素的正向位置。集合中第一個元素下標爲0。

例如:

127.0.0.1:6379> zrank zset2 f
(integer) 2
127.0.0.1:6379> zrank zset2 b
(integer) 1
127.0.0.1:6379>

6.1.7 zrevrank

此命令用於返回元素的反向位置。

例如:

127.0.0.1:6379> zrevrank zset2 f
(integer) 0

7 BITMAP

Bitmap即位圖,它不是實際的數據類型,而是在String類型上定義的一組面向位操作的數組。它的最大程度爲512M,最長的位爲2的32次方。

位圖操作分爲兩部分:一部分是offset,另一部分是value。

位圖的offset大小爲2的32次方,value只能是0或1。

7.1 操作命令

7.1.1 setbit

此命令用於設置位圖對應offset的value。

格式如下:

setbit key offset value

例如:

127.0.0.1:6379> setbit key 10 1
(integer) 0

7.1.2 getbit

此命令用於獲取位圖對應offset的value。

格式:

getbit key offset

例如:

127.0.0.1:6379> getbit key 10
(integer) 1

7.1.3 bitcount

格式如下:

bitcount key [start end]

獲取位圖指定範圍中值爲1的個數,如果不指定start和end,則取所有。

例如:

127.0.0.1:6379> bitcount key 0 11
(integer) 1

7.1.4 bitop

格式如下:

bitop opration destKey key1 [key2…]

獲取多個位圖的交集、並集、非、異或操作之後的結果,結果保存在destKey中。

opration:可以是and,or,not,xor。

例如:

127.0.0.1:6379> bitop and bitm3 bitm1 bitm2
(integer) 2

7.1.5 bitpos

格式如下:

bitpos key bit [start end]

查找指定範圍內的指定值出現第一次的位置。如果不指定star和end,則取所有。

例如:

127.0.0.1:6379> bitpos bitm3 1
(integer) 2
127.0.0.1:6379> bitpos bitm3 0
(integer) 0

8 HYPERLOGLOG

HyperLogLog是用來做基數統計的算法,HyperLogLog的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的、並且是很小的。

在Redis裏面,每個HyperLogLog鍵只需要花費12KB內存,就可以計算接近2^64個不同元素的基數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。

但是,因爲HyperLogLog只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以HyperLogLog不能像集合那樣,返回輸入的各個元素。

8.1 操作命令

8.1.1 pfadd

格式如下:

pfadd key element [element …]

向HyperLogLog中添加指定元素。

例如:

127.0.0.1:6379> pfadd hll a b c d e
(integer) 1

8.1.2 pfcount

格式如下:

pfcount key [key…]

返回指定HyperLogLog的基數估算值。

例如:

127.0.0.1:6379> pfcount hll
(integer) 5
127.0.0.1:6379> pfadd hl2 d e f g
(integer) 1
127.0.0.1:6379> pfcount hll hl2
(integer) 7
127.0.0.1:6379>

8.1.3 pfmerge

格式如下:

pfmerge destkey sourcekey [sourcekey…]

將多個HyperLogLog合併爲一個。

例如:

127.0.0.1:6379> pfcount hll hl2
(integer) 7
127.0.0.1:6379> pfmerge hl3 hll hl2
OK
127.0.0.1:6379> pfcount hl3
(integer) 7
127.0.0.1:6379>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章