当前位置:Gxlcms > 数据库问题 > 缓存数据库-redis数据类型和操作(sorted set)

缓存数据库-redis数据类型和操作(sorted set)

时间:2021-07-01 10:21:17 帮助过:36人阅读

一:Redis 有序集合(sorted set)

  Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

  不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

  有序集合的成员是唯一的,但分数(score)却可以重复。

  集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

 

二:有序集合常用操作

  1)zadd(name, *args, **kwargs) 在name对应的有序集合中添加元素

  2)zcard(name) 获取name对应的有序集合元素的数量

  3)zcount(name, min, max)  获取name对应的有序集合中分数 在 [min,max] 之间的个数

  4)zincrby(name, value, amount)  自增name对应的有序集合的 name 对应的分数

  5)zrange( name, start, end, desc=False, withscores=False, score_cast_func=float) 按照索引范围获取name对应的有序集合的元素

    # 参数:

    # name,redis的name     # start,有序集合索引起始位置(非分数)     # end,有序集合索引结束位置(非分数)     # desc,排序规则,默认按照分数从小到大排序     # withscores,是否获取元素的分数,默认只获取元素的值     # score_cast_func,对分数进行数据转换的函数   6)zrank(name, value) 获取某个值在 name对应的有序集合中的排行(从 0 开始)   7)zrem(name, values) 删除name对应的有序集合中值是values的成员   9)zremrangebyrank(name, min, max)  根据排行范围删除   10)zremrangebyscore(name, min, max)   根据分数范围删除   11)zscore(name, value)  获取name对应有序集合中 value 对应的分数   12)zinterstore(dest, keys, aggregate=None) 获取两个有序集合的交集,如果遇到相同值不同分数,则按照aggregate进行操作   13)zunionstore(dest, keys, aggregate=None) 获取两个有序集合的并集,如果遇到相同值不同分数,则按照aggregate进行操作   14)zscan(name, cursor=0, match=None, count=None, score_cast_func=float) 

缓存数据库-redis数据类型和操作(sorted set)

标签:mat   max   cursor   tar   line   转换   rem   name   bsp   

人气教程排行