zoukankan      html  css  js  c++  java
  • 《Redis核心原理与实战》学习笔记6——集合使用与内部实现原理

    一、简介

    集合类型 (Set) 是一个无序并唯一的键值集合。

    集合与列表的区别:

    • 列表可以存储重复元素,集合只能存储非重复元素;
    • 列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。

    二、基础使用

    1、添加一个或多个元素

    语法:sadd key member [member …]

    127.0.0.1:6379> sadd myset v1 v2 v3
    (integer) 3
    

    2、查询集合所有元素

    语法:smembers key

    127.0.0.1:6379> smembers myset
    1) "v1"
    2) "v2"
    3) "v3"
    

    3、查询集合的成员数量

    语法:scard key

    127.0.0.1:6379> scard myset
    (integer) 3
    

    4、查询集合中是否包含某个元素

    语法:sismember key member
    返回1表示包含,0表示不包含该元素

    127.0.0.1:6379> sismember myset v1
    (integer) 1
    127.0.0.1:6379> sismember myset v4
    (integer) 0
    

    5、从一个集合中移动一个元素到另一个集合

    语法:smove set1 set2 member

    127.0.0.1:6379> sadd myset2 s1 s2 s3 s4
    (integer) 4
    127.0.0.1:6379> smove myset2 myset s4
    (integer)1
    127.0.0.1:6379> smembers myset
    1) "v1"
    2) "v3"
    3) "v2"
    3) "s4"
    

    6、移除集合中一个或多个元素

    语法:srem key member [member …]

    127.0.0.1:6379> srem myset v1
    (integer)1
    127.0.0.1:6379> smembers myset
    1) "s4"
    2) "v3"
    3) "v2"
    

    三、内部实现

    集合类型是由 intset (整数集合) 或 hashtable (普通哈希表) 组成的。当集合中所有的值都为整数时,Redis 会使用 intset 结构来存储;当集合类型以 hashtable 存储时,哈希表的 key 为要插入的元素值,而哈希表的 value 则为 Null。

    四、使用场景

    • 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复;
    • 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖。
  • 相关阅读:
    IntelliJ IDEA 常用快捷键
    IntelliJ IDEA 高效率配置
    Eclipse 设置保存代码时自动格式化
    SQL Server 事务隔离级别详解
    网络安全,互联网金融,高并发
    net user命令集合详解
    SQL不同服务器数据库之间的数据操作整理(完整版)
    sql优化
    在 Windows 上遇到非常多 TIME_WAIT 連線時應如何處理
    mvc和iis工作原理
  • 原文地址:https://www.cnblogs.com/luckyliulin/p/13674159.html
Copyright © 2011-2022 走看看