`
iluoxuan
  • 浏览: 579765 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

6:sorted set类型

 
阅读更多

sorted set 也是 string 类型元素的集合,不同的是每个元素都会关联一个 double

类型的 score。sorted set 的实现是 skip list 和 hash table 的混合体。当元素被添加到集合中时,一个元素到 score 的映射被添加到 hash table 中,所以给定一个元素获取 score 的开销是 O(1),另一个 score 到元素的映射被添加到 skip list,并按照 score 排序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是 O(log(N))和 skip list 的开销一致,redis 的 skip list 实现用的是双向链表,这样就可以逆序从尾部取元素。sorted set 最经常的使用方式应该是作为索引来使用.我们可以把要排序的字段作为 score 存储,对象的 id

 

1: zadd 添加, zrem删除, zincrby修改score

 

redis 127.0.0.1:6378> zadd myset 1 one // 1是score one是元素
(integer) 1
redis 127.0.0.1:6378> zadd myset 4 one
(integer) 0
redis 127.0.0.1:6378> zadd myset 2 ljq
(integer) 1
redis 127.0.0.1:6378> zadd myset 0 dd
(integer) 1
redis 127.0.0.1:6378> zrange myset 0 -1 withscores // 按score排序输出
1) "dd"
2) "0"
3) "ljq"
4) "2"
5) "one"
6) "4"
redis 127.0.0.1:6378> zrem myset ljq // 删除一个
(integer) 1
redis 127.0.0.1:6378> zrange myset 0 -1 withscores
1) "dd"
2) "0"
3) "one"
4) "4"
redis 127.0.0.1:6378> zincrby myset 2 hello //添加score
"2"
redis 127.0.0.1:6378> zrange myset 0 -1 withscores
1) "dd"
2) "0"
3) "hello"
4) "2"
5) "one"
6) "4"

 2:zrank返回名称为 key 的 zset 中 member 元素的排名(按 score 从小到大排序)即下标

 

 

redis 127.0.0.1:6378> zrange myset 0 -1 withscores
1) "dd"
2) "0"
3) "one"
4) "4"
5) "hello"
6) "6"
redis 127.0.0.1:6378> zrank myset one  // 发挥按score排序的下标
(integer) 1

 3:zrevrandk 返回名称为 key 的 zset 中 member 元素的排名(按 score 从大到小排序)即下标

 

 

redis 127.0.0.1:6378> zrange myset 0 -1 withscores
1) "dd"
2) "0"
3) "one"
4) "4"
5) "hello"
6) "6"
redis 127.0.0.1:6378> zrevrank myset dd
(integer) 2

 4:zrangebyscore,zscore, zcount

 

redis 127.0.0.1:6378> zrangebyscore myset 4 6 withscores // 显示score区间
1) "one"
2) "4"
3) "hello"
4) "6"
redis 127.0.0.1:6378> zcount myset 4 6 //显示score区间的数量
(integer) 2
redis 127.0.0.1:6378> zcard myset // 显示总数
(integer) 4
redis 127.0.0.1:6378> zscore myset hello // 返回hello的score
"6"
redis 127.0.0.1:6378> zremrangebyscore myset 4 6 // 按score删除
(integer) 2
redis 127.0.0.1:6378> zrange myset 0 -1 withscores
1) "dd"
2) "0"
3) "ljq1"
4) "10"

 5:redis常用命令

redis 127.0.0.1:6378> sadd myset1 a ljq
(integer) 2
redis 127.0.0.1:6378> keys *  // 所以的key
1) "myset"
2) "myset1"
redis 127.0.0.1:6378> keys myset // 匹配key
1) "myset"
redis 127.0.0.1:6378> exists myset // 判断key是否存在
(integer) 1
redis 127.0.0.1:6378> del myset1 // 删除key
(integer) 1
redis 127.0.0.1:6378> keys *
1) "myset"
redis 127.0.0.1:6378> expire myset 10 // 设置key的过期时间10s
(integer) 1
redis 127.0.0.1:6378> keys*
(error) ERR unknown command 'keys*'
redis 127.0.0.1:6378> keys *
1) "myset"
redis 127.0.0.1:6378> keys *
(empty list or set)
redis 127.0.0.1:6378> persist myset  // 取消过期时间
(integer) 0
redis 127.0.0.1:6378> keys *
(empty list or set)
redis 127.0.0.1:6378> zadd myset 1 ljq
(integer) 1
redis 127.0.0.1:6378> zrange myset 0 -1 withscores
1) "ljq"
2) "1"
redis 127.0.0.1:6378> type myset  // key 类型
zset
redis 127.0.0.1:6378> ping
PONG
redis 127.0.0.1:6378> select 1 // 选择数据库 
OK
redis 127.0.0.1:6378[1]> select 17
(error) ERR invalid DB index
redis 127.0.0.1:6378[17]> select 16
(error) ERR invalid DB index
redis 127.0.0.1:6378[16]> select 15
OK
redis 127.0.0.1:6378[15]> dbsize
(integer) 0
redis 127.0.0.1:6378[15]> select 0
OK
redis 127.0.0.1:6378> dbsize
(integer) 1
redis 127.0.0.1:6378> info
# Server
redis_version:2.6.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_mode:standalone
os:Linux 3.8.0-30-generic i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.7.3
process_id:3194
run_id:f56643d4ef20b9578d23dcfd44873c50e59e2c44
tcp_port:6378
uptime_in_seconds:2021
uptime_in_days:0
hz:10
lru_clock:1558645

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:447576
used_memory_human:437.09K
used_memory_rss:1564672
used_memory_peak:446976
used_memory_peak_human:436.50K
used_memory_lua:21504
mem_fragmentation_ratio:3.44
mem_allocator:jemalloc-3.2.0

# Persistence
loading:0
rdb_changes_since_last_save:15
rdb_bgsave_in_progress:0
rdb_last_save_time:1378733237
rdb_last_bgsave_status:err
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok

# Stats
total_connections_received:1
total_commands_processed:49
instantaneous_ops_per_sec:0
rejected_connections:0
expired_keys:1
evicted_keys:0
keyspace_hits:18
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:158

# Replication
role:master
connected_slaves:0

# CPU
used_cpu_sys:1.39
used_cpu_user:0.27
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Keyspace
db0:keys=1,expires=0,avg_ttl=0

 

分享到:
评论

相关推荐

    c#操作Redis的5种基本类型汇总

    C#操作Redis的5种基本类型汇总 ...* C#使用操作举例:使用ZAdd和ZRange方法来添加和读取Sorted Set类型的数据。 C#操作Redis的5种基本类型可以满足不同的应用场景,选择合适的类型可以提高系统的性能和灵活性。

    Redis从入门到精通(10):redis的sorted_set数据类型详解

    Sorted Set是Redis中一个功能强大的数据类型,它的排序特性使其成为实现动态排序和范围查询的理想选择。了解和熟练掌握Sorted Set的操作,可以帮助开发者更高效地利用Redis解决各种存储和查询需求。通过不断的实践和...

    Redis教程(六):Sorted-Sets数据类型

    【Redis Sorted-Sets数据类型详解】 Sorted-Sets(有序集合)是Redis中一种特殊的数据结构,它结合了Set(集合)的无重复成员特性和List(列表)的排序功能。在Sorted-Sets中,每个成员都有一个分数(score),这个...

    Python-Python排序容器类型SortedListSortedDict和SortedSet

    SortedSet是Python的一个有序集合类型,它扩展了Python的内置set类型。与普通集合不同,SortedSet会保持其元素的排序状态。 SortedSet的主要特点: - 保持排序:添加或删除元素时,SortedSet会自动维护元素的排序。...

    Redis缓存老师笔记第二部分

    Sorted Set数据类型是有序的Set数据类型,在每个元素中添加了一个排序分数。Sorted Set数据类型提供了以下命令: * zadd命令:在Sorted Set数据中添加元素 * zrange命令:获取Sorted Set数据中的元素 * zrevrange...

    Redis 有序集合(sorted set)1

    Redis 有序集合(Sorted Set)是一种特殊的集合数据结构,它结合了集合的无重复成员特性与分数的概念,可以根据成员的分数进行排序。有序集合中的每个成员都有一个与之关联的double类型的分数,这个分数用于决定成员...

    Redis各个数据类型的使用场景.pdf

    Redis 是一个高性能的键值数据库,它支持五种主要的数据类型:String、Hash、List、Set 和 Sorted Set,每种类型都有其特定的使用场景。 1. String:这是最基本的键值对数据类型,其中值可以是字符串或数字。String...

    redis的list,set,hash,sorted set,skiplist 1

    4. **有序集合(Sorted Set)** 有序集合与集合类似,但每个元素都有一个分数,用于排序。你可以使用 `ZADD` 添加元素并指定分数,`ZRANGE` 和 `ZREVRANGE` 根据分数范围获取元素,`ZCOUNT` 计算分数在特定范围内的...

    redis可视化工具、免费.中文

    Sorted Set: 有序集合 Redis 发布订阅 Redis 事务 Redis 脚本 Redis 服务器 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据...

    头条高级面试题:请谈谈Redis9种数据结构以及它们的内部编码实现.docx

    `hashtable` 用于存储任意类型的成员,而`intset` 仅存储整数成员,提供更紧凑的存储。 5. **Sorted Set**: - **内部编码**:Sorted Set 使用`ziplist` 或 `skiplist` 编码。`ziplist` 适用于小型集合,同时存储...

    SQL 语法总结.md

    @Author:Runsen SQL 语法基础 库级操作语句 表级操作语句 在已有表中添加列 修改数据类型 修改字段名 增删查改 添加数据 ...Sorted Set 类型 MongoDB 基本语法 库级操作语句 集合操作语句 文档操作

    redis的简单描述和问题

    * Sorted Set 类型:Redis 的 Sorted Set 类型可以存储有序的字符串数据,类似于 TreeSet。 三、Redis 的命令 * KEYS 命令:用于查找符合的 Key。 * SCAN 命令:用于获取 Key 的列表,不阻塞,可能不返回完整的...

    go-set:实现由哈希图支持的集合

    Set是一种抽象数据类型,可以存储唯一值,而无需在Go中执行任何特定的顺序实现。 除了用于定义功能的参考文档,它还实现了一些有用的功能。 例如:Each,EachE,List,SortedList等。 安装 使用go get命令获取最新...

    《python核心编程》第七章:映射和集合类型1

    - `sorted(set)`:返回集合中元素的排序列表 - `set.copy()`:创建集合的浅拷贝副本 在处理映射和集合类型时,了解这些基本操作和特性至关重要,因为它们在实际编程中广泛应用于数据处理、算法实现和逻辑控制。...

    Redis实战-food-social-contact-parent.zip

    - Sorted Set:有序集合,结合了Set和Score,可实现根据分数排序的用户推荐系统。 2. Redis操作命令: - SET/GET:设置和获取String类型的键值。 - HSET/HGET:设置和获取Hash中的字段值。 - SADD/SREM:向Set...

    redis五种数据类型的使用场景

    它主要支持五种数据类型:String、Hash、List、Set、Sorted Set,每种数据类型有其独特的使用场景和适用性。 ### String(字符串类型) String是Redis中最基本的数据类型,可以包含任何数据,比如JPEG图片或者序列...

    Redis 27道面试题及答案.docx

    6. 排行榜:Sorted Set 可以方便地实现动态更新的排行榜。 在面试中,Redis 是常被问及的技术之一,同时高并发、高可用、分布式、JVM、Spring 源码分析和微服务等也是面试的重点。为更好地准备面试,可以系统学习...

    RedisDB封装库

    其五大数据类型——String、Hash、List、Set和Sorted Set,为开发者提供了丰富的数据结构选择。 1. **String**: String是最基本的数据类型,可以存储简单的字符串、整数或浮点数。RedisDB封装库允许进行设置、获取...

    Jedis操作5种数据类型

    在Redis中,有五种基本的数据类型用于存储和操作数据:String、Hash、List、Set和Sorted Set。Jedis是Java开发的Redis客户端库,它提供了丰富的API来操作这些数据类型。下面我们将深入探讨每种数据类型以及如何使用...

Global site tag (gtag.js) - Google Analytics