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。

    四、使用场景

    • 微博关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复;
    • 中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖。
  • 相关阅读:
    mysql数据恢复
    数据库备份脚本
    SHELL syntax error:unexpected end of file 提示错误
    shell script 的追踪与 debug
    mysql Host ‘XXXXXX’ is blocked because of many connection errors
    linux下MySQL 5.6源码安装
    C# 数据库并发的解决方案(通用版、EF版)
    Thread(线程)四
    C#线程系列讲座(1):BeginInvoke和EndInvoke方法
    在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
  • 原文地址:https://www.cnblogs.com/luckyliulin/p/13674159.html
Copyright © 2011-2022 走看看