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。

    四、使用场景

    • 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复;
    • 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖。
  • 相关阅读:
    log4net的使用
    在asp.net中使用 log4net 笔记
    JQuery插件开发
    使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]
    如何在JBuilder 2006中打Jar包,并生成Exe文件
    如何更改java应用程序标题栏默认图标
    《ASP.NET AJAX程序设计》图书相关资源总索引
    Eclipse汉化的步骤,非常的详细
    家庭和睦、人生平淡也是一种成功
    程序员节诗词
  • 原文地址:https://www.cnblogs.com/luckyliulin/p/13674159.html
Copyright © 2011-2022 走看看