Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。它的底层结构是跳跃表,效率特别高,但是会占用大量内存。
设计专用的数据库表rstore_zset,其中,rkey和member是联合主键。
- rkey varchar
- member varchar
- score double
- lastTime bigint
zadd操作
- insert into rstore_zset("rkey","member","score","lastTime") values($1,$2,$3,$4) on duplicate key update update set "score"=$3,"lastTime"=$4
zscore操作
- select score from rstore_zset where "rkey" = $1 and "member" = $2
zrem操作
- delete from rstore_zset where "rkey" = $1 and "member" = $2"
zcard,exists操作
- select count(*) as num from rstore_zset where "rkey" = $1
zcount操作
- select count(*) as num from rstore_zset where "rkey" = $1 and score>=$2 and score<=$3
zremrangebyscore操作
- delete from rstore_zset where "rkey" = $1 and score>=$2 and score<=$3
zrangebyscore操作
- select member,score from rstore_zset
- where "rkey" = $1 and score>=$2 and score<=$3 order by score asc,member asc
zrange操作
- select member,score from rstore_zset
- where "rkey" = $1 order by score asc offset $2 limit $3
zrank操作
- select rank from (select member,rank() over (order by "score" asc, "lastTime" asc) as rank from rstore_zset where "rkey" = $1 ) m where m."member"= $2;
ttl操作
- select max(lastTIme) from rstore_zset where "rkey" = $1
del操作
- delete from rstore_zset where "rkey" = $1
set设计
- rkey varchar
- member varchar
- lastTime bigint
sadd操作
- insert into rstore_set("rkey","member","lastTime") values($1,$2,$3)
- on duplicate key update update set "lastTime"=$3
scard操作
- select count(*) as num from rstore_set where "rkey" = $1
sismember操作
- select member from rstore_set where "rkey" = $1 and "member" = $2
smembers操作
- select member from rstore_set where "rkey" = $1
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|