Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
e887c62e
Commit
e887c62e
authored
Mar 31, 2014
by
antirez
Browse files
HyperLogLog: make API use the P prefix in honor of Philippe Flajolet.
parent
f1b76081
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/hyperloglog.c
View file @
e887c62e
...
...
@@ -435,8 +435,8 @@ uint64_t hllCount(uint8_t *registers) {
/* ========================== HyperLogLog commands ========================== */
/*
HLL
ADD var ele ele ele ... ele => :0 or :1 */
void
hllA
ddCommand
(
redisClient
*
c
)
{
/*
P
ADD var ele ele ele ... ele => :0 or :1 */
void
pa
ddCommand
(
redisClient
*
c
)
{
robj
*
o
=
lookupKeyWrite
(
c
->
db
,
c
->
argv
[
1
]);
uint8_t
*
registers
;
int
updated
=
0
,
j
;
...
...
@@ -482,8 +482,8 @@ void hllAddCommand(redisClient *c) {
addReply
(
c
,
updated
?
shared
.
cone
:
shared
.
czero
);
}
/*
HLL
COUNT var -> approximated cardinality of set. */
void
hllC
ountCommand
(
redisClient
*
c
)
{
/*
P
COUNT var -> approximated cardinality of set. */
void
pc
ountCommand
(
redisClient
*
c
)
{
robj
*
o
=
lookupKeyRead
(
c
->
db
,
c
->
argv
[
1
]);
uint8_t
*
registers
;
uint64_t
card
;
...
...
@@ -540,8 +540,8 @@ void hllCountCommand(redisClient *c) {
}
}
/*
HLL
MERGE dest src1 src2 src3 ... srcN => OK */
void
hllM
ergeCommand
(
redisClient
*
c
)
{
/*
P
MERGE dest src1 src2 src3 ... srcN => OK */
void
pm
ergeCommand
(
redisClient
*
c
)
{
uint8_t
max
[
REDIS_HLL_REGISTERS
];
uint8_t
*
registers
;
int
j
,
i
;
...
...
@@ -614,7 +614,7 @@ void hllMergeCommand(redisClient *c) {
* the correct value to be retained and not affect adjacent values. */
#define REDIS_HLL_TEST_CYCLES 1000
void
hllS
elftestCommand
(
redisClient
*
c
)
{
void
ps
elftestCommand
(
redisClient
*
c
)
{
int
j
,
i
;
sds
bitcounters
=
sdsnewlen
(
NULL
,
REDIS_HLL_SIZE
);
uint8_t
bytecounters
[
REDIS_HLL_REGISTERS
];
...
...
src/redis.c
View file @
e887c62e
...
...
@@ -268,10 +268,10 @@ struct redisCommand redisCommandTable[] = {
{
"bitcount"
,
bitcountCommand
,
-
2
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"bitpos"
,
bitposCommand
,
-
3
,
"r"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"wait"
,
waitCommand
,
3
,
"rs"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"
hll
selftest"
,
hllS
elftestCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"
hll
add"
,
hllA
ddCommand
,
-
2
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"
hll
count"
,
hllC
ountCommand
,
2
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"
hll
merge"
,
hllM
ergeCommand
,
-
2
,
"wm"
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
}
{
"
p
selftest"
,
ps
elftestCommand
,
1
,
"r"
,
0
,
NULL
,
0
,
0
,
0
,
0
,
0
},
{
"
p
add"
,
pa
ddCommand
,
-
2
,
"wm"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"
p
count"
,
pc
ountCommand
,
2
,
"w"
,
0
,
NULL
,
1
,
1
,
1
,
0
,
0
},
{
"
p
merge"
,
pm
ergeCommand
,
-
2
,
"wm"
,
0
,
NULL
,
1
,
-
1
,
1
,
0
,
0
}
};
struct
evictionPoolEntry
*
evictionPoolAlloc
(
void
);
...
...
src/redis.h
View file @
e887c62e
...
...
@@ -1448,10 +1448,10 @@ void bitcountCommand(redisClient *c);
void
bitposCommand
(
redisClient
*
c
);
void
replconfCommand
(
redisClient
*
c
);
void
waitCommand
(
redisClient
*
c
);
void
hllS
elftestCommand
(
redisClient
*
c
);
void
hllA
ddCommand
(
redisClient
*
c
);
void
hllC
ountCommand
(
redisClient
*
c
);
void
hllM
ergeCommand
(
redisClient
*
c
);
void
ps
elftestCommand
(
redisClient
*
c
);
void
pa
ddCommand
(
redisClient
*
c
);
void
pc
ountCommand
(
redisClient
*
c
);
void
pm
ergeCommand
(
redisClient
*
c
);
#if defined(__GNUC__)
void
*
calloc
(
size_t
count
,
size_t
size
)
__attribute__
((
deprecated
));
...
...
utils/hyperloglog/hll-err.rb
View file @
e887c62e
...
...
@@ -18,9 +18,9 @@ while true do
elements
<<
ele
i
+=
1
}
r
.
hll
add
(
'hll'
,
*
elements
)
r
.
p
add
(
'hll'
,
*
elements
)
}
approx
=
r
.
hll
count
(
'hll'
)
approx
=
r
.
p
count
(
'hll'
)
abs_err
=
(
approx
-
i
).
abs
rel_err
=
100
.
to_f
*
abs_err
/
i
puts
"
#{
i
}
vs
#{
approx
}
:
#{
rel_err
}
%"
...
...
utils/hyperloglog/hll-gnuplot-graph.rb
View file @
e887c62e
...
...
@@ -30,9 +30,9 @@ def run_experiment(r,seed,max,step)
elements
<<
ele
i
+=
1
}
r
.
hll
add
(
'hll'
,
*
elements
)
r
.
p
add
(
'hll'
,
*
elements
)
}
approx
=
r
.
hll
count
(
'hll'
)
approx
=
r
.
p
count
(
'hll'
)
err
=
approx
-
i
rel_err
=
100
.
to_f
*
err
/
i
samples
<<
[
i
,
rel_err
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment